HOME»データベーススペシャリスト掲示板»令和3年度 午後1 問1 設問2(1) 推移的関数従属性
投稿する
誤り云々ではなくて試験特有のほうです。その通説では過去問の模範解答を導く事は不可能なので、もはや別物として割り切るか妥協するしかありません。
「推移的関数従属性を答えなさい。但し、キー属性云々を考慮すること。」と但し書きがある場合に、ご指摘のように解答する感じで良いんじゃかしら?
午前の試験には、歴史の雑学も含まれています。IT旧石器時代の通説を頑なに守る必要はないんじゃないかしら?
推移的関数従属性はウォーミングアップのボーナス問題です。最近では簡単過ぎて出題されなくなりました。正直、こんなところで躓く受験生がいるなんて全く想定されていないでしょう。試験@14なのに…。
歴史の雑学の中には拙い技術も含まれています。下手になる勉強を繰り返して悪癖にならないように学ばないとダメですね。
候補キーを構成している属性をキー属性といい、キー属性でない属性を非キー属性といいます
非キー属性とは「主キーに含まれない属性」ではなく、「いずれの候補キーにも含まれない属性」ということを忘れてはいけなく、関係Rが(A,B,C)で候補キーが{A,B}と{A,C}である以上、非キーは存在しません。
過去問道場の解説
令和3年度 午後1 問1 設問2(1) 推移的関数従属性 [0967]
ゆうさん(No.1)
タイトルの問題について、IPAの解答が以下となっております。
{加盟企業コード, 加盟企業商品コード}→ 横断分析用商品コード → 横断分析用商品名
横断分析用商品コードは候補キーの一部であるため、キー属性だと考えます。
一方で、推移的関数従属であるためには非キー属性を経由していなければならないという理解です。
そのため、経由する属性がキー属性である「横断分析用商品コード」であることに疑問を感じております。
私の考え方に誤りがありましたらどなたかご指摘いただきたいです。
{加盟企業コード, 加盟企業商品コード}→ 横断分析用商品コード → 横断分析用商品名
横断分析用商品コードは候補キーの一部であるため、キー属性だと考えます。
一方で、推移的関数従属であるためには非キー属性を経由していなければならないという理解です。
そのため、経由する属性がキー属性である「横断分析用商品コード」であることに疑問を感じております。
私の考え方に誤りがありましたらどなたかご指摘いただきたいです。
2025.09.27 18:49
ぶどうさん(No.2)
★DB ブロンズマイスター
もしかして、参考書に通常は一度に分解します。ここでは正規化を順に厳密に行うために、あえて残しています。みたいに解説されてあったのかしら?
2025.09.27 18:55
ぶどうさん(No.3)
★DB ブロンズマイスター
過去問を解く際は、キー属性、非キー属性云々は全部忘れて下さい。One Fact in One Place、関数従属性に従うだけです。
2025.09.27 19:23
ゆうさん(No.4)
ぶどう様
ご回答ありがとうございます。
"もしかして、参考書に通常は一度に分解します。ここでは正規化を順に厳密に行うために、あえて残しています。みたいに解説されてあったのかしら?"
申し訳ありません。どこで学習したかはよく覚えておりません。
"過去問を解く際は、キー属性、非キー属性云々は全部忘れて下さい。One Fact in One Place、関数従属性に従うだけです。"
こちら承知しました。
が、もし可能でしたら私の理解のどこに誤りがあるか or 試験特有の考え方が別にあるのか
をご教授頂けますと大変助かりますm(_ _)m
ご回答ありがとうございます。
"もしかして、参考書に通常は一度に分解します。ここでは正規化を順に厳密に行うために、あえて残しています。みたいに解説されてあったのかしら?"
申し訳ありません。どこで学習したかはよく覚えておりません。
"過去問を解く際は、キー属性、非キー属性云々は全部忘れて下さい。One Fact in One Place、関数従属性に従うだけです。"
こちら承知しました。
が、もし可能でしたら私の理解のどこに誤りがあるか or 試験特有の考え方が別にあるのか
をご教授頂けますと大変助かりますm(_ _)m
2025.09.27 23:22
ぶどうさん(No.5)
★DB ブロンズマイスター
> もし可能でしたら私の理解のどこに誤りがあるか or 試験特有の考え方が別にあるのか
誤り云々ではなくて試験特有のほうです。その通説では過去問の模範解答を導く事は不可能なので、もはや別物として割り切るか妥協するしかありません。
「推移的関数従属性を答えなさい。但し、キー属性云々を考慮すること。」と但し書きがある場合に、ご指摘のように解答する感じで良いんじゃかしら?
2025.09.28 01:44
ゆうさん(No.6)
承知しました!
ご回答いただきありがとうございました。
ご回答いただきありがとうございました。
2025.09.28 12:10
himaさん(No.7)
そんなので納得せよと言われても無理ですよね。
NO.1で提示された問題では,主キー以外の候補キーは考慮されていないようですが,
https://www.db-siken.com/kakomon/03_aki/am2_3.html
午後1の過去問では,
・候補キーが{A,B}と{A,C}
・{A,B}→C と C→B の関数従属
の場合に,第3正規形(推移的関数従属はない)ということになっています。
ちょっと矛盾のように感じますね。
NO.1で提示された問題では,主キー以外の候補キーは考慮されていないようですが,
https://www.db-siken.com/kakomon/03_aki/am2_3.html
午後1の過去問では,
・候補キーが{A,B}と{A,C}
・{A,B}→C と C→B の関数従属
の場合に,第3正規形(推移的関数従属はない)ということになっています。
ちょっと矛盾のように感じますね。
2025.09.28 15:16
ゆうさん(No.8)
himaさん
コメントありがとうございます。
貼っていただいたリンク先の問題を確認しましたが、
解答には候補キーを構成するCは非キー属性だとの記載があります。
※私は候補キーを構成する個々の属性もキー属性であると考えておりました。
候補キーが複数の属性で構成されている場合、
実はそれを構成する個々の属性は非キー属性なのではないかと考えたのですが、
それだとBも非キー属性なので推移的関数従属の関係が成り立つのでは?
という新たな疑問が・・・
出発点である{A,B}以外の複数の属性によって構成される候補キーの一部を非キー属性と言うのであれば、ご指摘の問題も私が疑問に感じている問題も解決なのですが・・・
コメントありがとうございます。
貼っていただいたリンク先の問題を確認しましたが、
解答には候補キーを構成するCは非キー属性だとの記載があります。
※私は候補キーを構成する個々の属性もキー属性であると考えておりました。
候補キーが複数の属性で構成されている場合、
実はそれを構成する個々の属性は非キー属性なのではないかと考えたのですが、
それだとBも非キー属性なので推移的関数従属の関係が成り立つのでは?
という新たな疑問が・・・
出発点である{A,B}以外の複数の属性によって構成される候補キーの一部を非キー属性と言うのであれば、ご指摘の問題も私が疑問に感じている問題も解決なのですが・・・
2025.09.28 16:11
ぶどうさん(No.9)
★DB ブロンズマイスター
>No7
午前の試験には、歴史の雑学も含まれています。IT旧石器時代の通説を頑なに守る必要はないんじゃないかしら?
>No8
推移的関数従属性はウォーミングアップのボーナス問題です。最近では簡単過ぎて出題されなくなりました。正直、こんなところで躓く受験生がいるなんて全く想定されていないでしょう。試験@14なのに…。
歴史の雑学の中には拙い技術も含まれています。下手になる勉強を繰り返して悪癖にならないように学ばないとダメですね。
2025.09.28 17:53
GinSanaさん(No.10)
★DB ゴールドマイスター
この投稿は投稿者により削除されました。(2025.09.28 19:35)
2025.09.28 19:35
GinSanaさん(No.11)
★DB ゴールドマイスター
この投稿は投稿者により削除されました。(2025.09.28 19:41)
2025.09.28 19:41
GinSanaさん(No.12)
★DB ゴールドマイスター
>※私は候補キーを構成する個々の属性もキー属性であると考えておりました。
>候補キーが複数の属性で構成されている場合、
>実はそれを構成する個々の属性は非キー属性なのではないかと考えたのですが、
>それだとBも非キー属性なので推移的関数従属の関係が成り立つのでは?
候補キーを構成している属性をキー属性といい、キー属性でない属性を非キー属性といいます
非キー属性とは「主キーに含まれない属性」ではなく、「いずれの候補キーにも含まれない属性」ということを忘れてはいけなく、関係Rが(A,B,C)で候補キーが{A,B}と{A,C}である以上、非キーは存在しません。
過去問道場の解説
第3正規形を満たし、かつ、候補キーでない属性から候補キーの一部への関数従属が存在しない
主キーが{A,B}であるときに、非キー属性Cからキー属性Bへの関数従属性があるのでボイス・コッド正規形の条件を満たしません。
ここで候補キーが{A,B}の際に「候補キーでない属性C」から「候補キーの一部であるB」への関数従属性と書かずに、「非キー属性Cからキー属性Bへの関数従属性」と書いてしまっているので、理解がややこしいことになっている側面はあります。
2025.09.28 19:42
po8oさん(No.13)
勉強のために私の理解を書かせてください。
問題文に
「③ 横断分析商品コードの設定には、加盟企業商品の登録から数日を要する場合がある。」と書かれています。これはつまり加盟企業商品テーブルの横断分析商品コードは、登録直後から数日間は未登録(Defaultの説明がないのでnullが入るはず)なので、
nullが入る可能性がある項目はキーにはならないので主キーからの推移的関数従属がある、と言えるかと理解しています。
問題文に
「③ 横断分析商品コードの設定には、加盟企業商品の登録から数日を要する場合がある。」と書かれています。これはつまり加盟企業商品テーブルの横断分析商品コードは、登録直後から数日間は未登録(Defaultの説明がないのでnullが入るはず)なので、
nullが入る可能性がある項目はキーにはならないので主キーからの推移的関数従属がある、と言えるかと理解しています。
2025.09.30 11:15