H29 PM1 問1 設問1(1)
えみさん
(No.1)
解答では部分関数従属性の例として「電子会議番号→議題」が示されていますが、
・電子会議番号→議題
・電子会議番号→分野番号
・電子会議番号→分野名
・電子会議番号→表示順
・電子会議番号→作成者ユーザID
・分野番号→分野名
・分野番号,表示順→議題
・分野番号,表示順→作成者ユーザID
は全て部分関数従属性であるといえますか(すなわち、これらの中のどれを書いても正解扱いとなりますか)? また、部分関数従属性はこれで全てですか?
・電子会議番号→議題
・電子会議番号→分野番号
・電子会議番号→分野名
・電子会議番号→表示順
・電子会議番号→作成者ユーザID
・分野番号→分野名
・分野番号,表示順→議題
・分野番号,表示順→作成者ユーザID
は全て部分関数従属性であるといえますか(すなわち、これらの中のどれを書いても正解扱いとなりますか)? また、部分関数従属性はこれで全てですか?
2021.08.01 13:43
GinSanaさん
★DB ゴールドマイスター
(No.2)
この投稿は投稿者により削除されました。(2021.08.01 15:12)
2021.08.01 15:12
GinSanaさん
★DB ゴールドマイスター
(No.3)
・電子会議番号→議題
これはあり
・電子会議番号→分野番号
これもありにみえるが、分野番号が他の候補キーの一部になっている({分野番号, 表示順, 投稿番号})からバツ
・電子会議番号→分野名
分野番号にひっついてくるからバツ
・電子会議番号→表示順
電子会議番号→{分野番号, 表示順}であり、他の候補キーの一部({分野番号, 表示順, 投稿番号})なのでバツ
・電子会議番号→作成者ユーザID
これはあり
・分野番号→分野名
これもあり
・{分野番号, 表示順}→電子会議番号
電子会議番号が他の候補キーの一部({電子会議番号, 投稿番号})に
なっているからバツ
よってお答えとしては
・電子会議番号→議題
・電子会議番号→作成者ユーザID
・分野番号→分野名
だけが「部分関数従属性」に該当します。
これはあり
・電子会議番号→分野番号
これもありにみえるが、分野番号が他の候補キーの一部になっている({分野番号, 表示順, 投稿番号})からバツ
・電子会議番号→分野名
分野番号にひっついてくるからバツ
・電子会議番号→表示順
電子会議番号→{分野番号, 表示順}であり、他の候補キーの一部({分野番号, 表示順, 投稿番号})なのでバツ
・電子会議番号→作成者ユーザID
これはあり
・分野番号→分野名
これもあり
・{分野番号, 表示順}→電子会議番号
電子会議番号が他の候補キーの一部({電子会議番号, 投稿番号})に
なっているからバツ
よってお答えとしては
・電子会議番号→議題
・電子会議番号→作成者ユーザID
・分野番号→分野名
だけが「部分関数従属性」に該当します。
2021.08.01 15:12
えみさん
(No.4)
ご回答ありがとうございます。
「分野番号が他の候補キーの一部になっているからバツ」という判断は、何が根拠なのでしょうか?
そもそも、部分関数従属性とは、候補キーとは限らない列の集合Aと列Cに対し、「CがAの真部分集合に関数従属する」ことだと思っていましたが、その認識は正しいのでしょうか?
その場合、1つの候補キーからの部分関数従属性を考える際は他の候補キーは関係ないように思えますが、問題の慣習として他の候補キーの一部が矢印の右側にくるものは除外することになっているのでしょうか?
「分野番号が他の候補キーの一部になっているからバツ」という判断は、何が根拠なのでしょうか?
そもそも、部分関数従属性とは、候補キーとは限らない列の集合Aと列Cに対し、「CがAの真部分集合に関数従属する」ことだと思っていましたが、その認識は正しいのでしょうか?
その場合、1つの候補キーからの部分関数従属性を考える際は他の候補キーは関係ないように思えますが、問題の慣習として他の候補キーの一部が矢印の右側にくるものは除外することになっているのでしょうか?
2021.08.01 15:37
GinSanaさん
★DB ゴールドマイスター
(No.5)
そもそもこの問題を解くときって、先に関数従属性を洗い出して、次に候補キーの洗い出しからやってますよね。
表と本文から洗い出せば
電子会議番号→議題
分野番号→分野名
分野番号、表示順→電子会議番号
電子会議番号→分野番号、表示順
電子会議番号→作成者ユーザID
電子会議番号、投稿番号→投稿本文、投稿者ユーザID
電子会議番号→分野番号
がわかって、
一意になるのはどれだろう?ってなったら
電子会議番号→投稿番号、投稿本文、投稿者ユーザIDが決まらないから候補キーではない
分野番号→分野名以外決まらないから候補キーではない
分野番号、表示順→投稿番号、投稿本文、投稿者ユーザIDが決まらないから候補キーではない
電子会議番号、投稿番号→これなら網羅できる
そんで、「電子会議番号」を置き換えて表現できるかを考えたら、分野番号、表示順がそうだよな、ってなるじゃないですか。だから「分野番号、表示順、投稿番号」も候補キーのうちなんです。
定義が違います。
リレーショナルデータベース入門―データモデル・SQL・管理システム・NoSQL (Information & Computing) [第3版](増永良文・サイエンス社)
だと
情報処理教科書 データベーススペシャリスト(三好康之)
から引きますが
候補キーの真部分集合→非キー項目が成立したら部分関数従属性です。
候補キーに入っているかいないかが争点になるのが部分関数従属性ですから、大アリなんですよ。
表と本文から洗い出せば
電子会議番号→議題
分野番号→分野名
分野番号、表示順→電子会議番号
電子会議番号→分野番号、表示順
電子会議番号→作成者ユーザID
電子会議番号、投稿番号→投稿本文、投稿者ユーザID
電子会議番号→分野番号
がわかって、
一意になるのはどれだろう?ってなったら
電子会議番号→投稿番号、投稿本文、投稿者ユーザIDが決まらないから候補キーではない
分野番号→分野名以外決まらないから候補キーではない
分野番号、表示順→投稿番号、投稿本文、投稿者ユーザIDが決まらないから候補キーではない
電子会議番号、投稿番号→これなら網羅できる
そんで、「電子会議番号」を置き換えて表現できるかを考えたら、分野番号、表示順がそうだよな、ってなるじゃないですか。だから「分野番号、表示順、投稿番号」も候補キーのうちなんです。
>部分関数従属性とは、候補キーとは限らない列の集合Aと列Cに対し、「CがAの真部分集合に関数従属する」ことだと思っていましたが、その認識は正しいのでしょうか?
定義が違います。
リレーショナルデータベース入門―データモデル・SQL・管理システム・NoSQL (Information & Computing) [第3版](増永良文・サイエンス社)
だと
[定義4.4](完全関数従属性)関数従属性 X → Y で、X の任意の真部分集合 X' (X' ⊂ X) について X' → Y は成立しないとき、Y は X に完全関数従属しているという。
しかなくてわかりにくいので情報処理教科書 データベーススペシャリスト(三好康之)
から引きますが
"完全関数従属している状態" とか "完全関数従属性という性質" は、①関数従属性(候補キー:X)→(非キー属性:Y)が成立するが、②(候補キー:Xの真部分集合)→(非キー属性:Y)は成立しないときの状態及び性質のことである。
逆に、①ではあるが、②が成立・存在している状態及び性質のことを "部分関数従属している" とか "部分関数従属性" という。
だから逆に、①ではあるが、②が成立・存在している状態及び性質のことを "部分関数従属している" とか "部分関数従属性" という。
候補キーの真部分集合→非キー項目が成立したら部分関数従属性です。
>その場合、1つの候補キーからの部分関数従属性を考える際は他の候補キーは関係ないように思えますが、問題の慣習として他の候補キーの一部が矢印の右側にくるものは除外することになっているのでしょうか?
候補キーに入っているかいないかが争点になるのが部分関数従属性ですから、大アリなんですよ。
2021.08.01 16:01
えみさん
(No.6)
部分関数従属性の定義に「矢印の右側は非キー属性である」という前提があるのですね。
理解できました。ありがとうございます。
理解できました。ありがとうございます。
2021.08.01 17:41
GinSanaさん
★DB ゴールドマイスター
(No.7)
この前の話を補完する記事を見つけました。
taityo-diary.hatenablog.jp/entry/2020/11/09/054558
部分関数従属性と推移的関数従属性の定義 - ぱと隊長日誌
RDB入門的には「他の候補キーの一部になっていないこと」という制限が含まれていない
そうですが、IPAの正規化的にはどうも違うみたいですね。DBSP教科書で覚えた身なので新鮮でした。
taityo-diary.hatenablog.jp/entry/2020/11/09/054558
部分関数従属性と推移的関数従属性の定義 - ぱと隊長日誌
RDB入門的には「他の候補キーの一部になっていないこと」という制限が含まれていない
そうですが、IPAの正規化的にはどうも違うみたいですね。DBSP教科書で覚えた身なので新鮮でした。
2021.08.09 10:45
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。