これは推移的関数従属? H25 午後I について
たろちさん
(No.1)
平成25年度データベーススペシャリスト試験午後I問1にてこのような問題がありました。
関係"サービス提供リソース"
{サービス機能ID, プロバイダID, 利用者ID}→リソースID⇄URI→{リソース種別, リソース名称, 配信スキーマ}
(→は関数従属、{サービス機能ID, プロバイダID, 利用者ID}が候補キーで他は非キー属性)
この推移的関数従属性の有無を答える問題で、以下のような解答でした。
推移的関数従属性:あり
具体例:{サービス機能ID, プロバイダID, 利用者ID}→リソースID→{リソース種別, リソース名称, 配信スキーマ}
または
{サービス機能ID, プロバイダID, 利用者ID}→URI→{リソース種別, リソース名称, 配信スキーマ}
これで具体例を{サービス機能ID, プロバイダID, 利用者ID}→リソースID→URIとするのは間違いでしょうか。
もし間違いであるならば
X→Y⇄Z (X←Yは不成立, Xは候補キーでY,Zは非キー) という関数従属がある関係は第3正規形になるということでよろしいのでしょうか。
よろしくお願いします。
関係"サービス提供リソース"
{サービス機能ID, プロバイダID, 利用者ID}→リソースID⇄URI→{リソース種別, リソース名称, 配信スキーマ}
(→は関数従属、{サービス機能ID, プロバイダID, 利用者ID}が候補キーで他は非キー属性)
この推移的関数従属性の有無を答える問題で、以下のような解答でした。
推移的関数従属性:あり
具体例:{サービス機能ID, プロバイダID, 利用者ID}→リソースID→{リソース種別, リソース名称, 配信スキーマ}
または
{サービス機能ID, プロバイダID, 利用者ID}→URI→{リソース種別, リソース名称, 配信スキーマ}
これで具体例を{サービス機能ID, プロバイダID, 利用者ID}→リソースID→URIとするのは間違いでしょうか。
もし間違いであるならば
X→Y⇄Z (X←Yは不成立, Xは候補キーでY,Zは非キー) という関数従属がある関係は第3正規形になるということでよろしいのでしょうか。
よろしくお願いします。
2017.04.12 18:18
たろちさん
(No.2)
すみません、 ⇄ となってしまっているのは両方向の矢印 →, ←のことです。
2017.04.12 18:22
KYさん
(No.3)
リソースIDとURIの関係が「多:多」(両方向の矢印)ならば
リソースIDからURIは一意にきまらないので、間違いだと思います。。。
リソースIDからURIは一意にきまらないので、間違いだと思います。。。
2017.04.13 12:34
たろちさん
(No.4)
KYさん
この矢印は多対多を意味するのではなくて関数従属の矢印なんです。
この矢印は多対多を意味するのではなくて関数従属の矢印なんです。
2017.04.13 14:37
KSRさん
(No.5)
例示なので「{サービス機能ID, プロバイダID, 利用者ID}→リソースID→URI」を回答としてもよいと思います。
ただ、リソースID→URI→{リソース種別, リソース名称, 配信スキーマ}は成り立ちませんので、次の第3正規形にする問題との関連を考えると、回答例のようにしておくのが無難ということかと思います。(両矢印の関係は「置換」できる関係であると、某参考書にも書いてた記憶があります…。)
言葉足らずでしたら恐縮です。
ただ、リソースID→URI→{リソース種別, リソース名称, 配信スキーマ}は成り立ちませんので、次の第3正規形にする問題との関連を考えると、回答例のようにしておくのが無難ということかと思います。(両矢印の関係は「置換」できる関係であると、某参考書にも書いてた記憶があります…。)
言葉足らずでしたら恐縮です。
2017.04.15 19:02
ちゅーすけさん
(No.6)
KSR さんのおっしゃる通りで、左右矢印は置き換え可能であることを示します。
しかしここでの要点は『推移的関数従属であるか』です。
{A,B,C}→{D}
{D}→{E}
{E}→{D}
{E}→{F,G,H}
解凍例にある『推移的関数従属』
{A,B,C}→{D}→{F,G,H}
{A,B,C}→{E}→{F,G,H}
は正しいですが、
投稿議題の
{A,B,C}→{D}→{E}
は『推移的関数従属』にはなっていません。
あくまで『推移的』であって、AとEに直接の従属性が無い事を示す必要があります。
左右矢印は置き換え可能であることから、
{A,B,C}→{D}
{A,B,C}→{E}
という『完全関数従属』が成立し、直接的な従属性(Dを介さずEを導き出せる)を含んでいます。
しかしここでの要点は『推移的関数従属であるか』です。
{A,B,C}→{D}
{D}→{E}
{E}→{D}
{E}→{F,G,H}
解凍例にある『推移的関数従属』
{A,B,C}→{D}→{F,G,H}
{A,B,C}→{E}→{F,G,H}
は正しいですが、
投稿議題の
{A,B,C}→{D}→{E}
は『推移的関数従属』にはなっていません。
あくまで『推移的』であって、AとEに直接の従属性が無い事を示す必要があります。
左右矢印は置き換え可能であることから、
{A,B,C}→{D}
{A,B,C}→{E}
という『完全関数従属』が成立し、直接的な従属性(Dを介さずEを導き出せる)を含んでいます。
2017.04.23 02:59
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。