平成27年午前Ⅱ 問6について
十三夜さん
(No.1)
いつも迷ってしまうので、考え方を教えてください。
正規形を問う問題で、対象の表の条件は
"受注番号は受注ごとに新たに発行される番号であり,項番は1回の受注で商品コード別に連番で発行される番号である。なお,単価は商品コードによって一意に定まる。"
とあります。
答えは第1正規形であり、理由は「行を特定可能な属性は"受注番号"と"商品コード"の組合せであることが明確だから」とされていますが、私はいつもこの問題を見ると、「"受注番号"と"項番"の組み合わせが主キーでは?」と考えてしまいます。
"項番"が主キーにならない理由は何でしょうか?
また、主キーでないとしたら"項番"は何になるのでしょうか?
正規形を問う問題で、対象の表の条件は
"受注番号は受注ごとに新たに発行される番号であり,項番は1回の受注で商品コード別に連番で発行される番号である。なお,単価は商品コードによって一意に定まる。"
とあります。
答えは第1正規形であり、理由は「行を特定可能な属性は"受注番号"と"商品コード"の組合せであることが明確だから」とされていますが、私はいつもこの問題を見ると、「"受注番号"と"項番"の組み合わせが主キーでは?」と考えてしまいます。
"項番"が主キーにならない理由は何でしょうか?
また、主キーでないとしたら"項番"は何になるのでしょうか?
2018.03.14 02:07
通りすがりの者さん
(No.2)
主キーを、"受注番号"と"商品コード"の組合せとするか、"受注番号"と"項番"の組合せとするか、見解は分かれますが、どちらでもいいと思います。
"項番"がなければ当然前者ですが、ここはわざわざ"項番"があるので、私は後者が自然と思います。
この"項番"は、"受注番号"と同時によく登場する"明細番号"と同等です。
(参考)応用情報技術者 平成29年春期 午前問27
管理人様
以下のように見直した方がいいと思いますが、いかがでしょうか?
主キー"受注番号"と"項番"の一部である"受注番号"に"受注日"と"得意先コード"が関数従属しているので、第2正規形ではない。
また、主キー以外の"商品コード"に"単価"が関数従属しているので、第3正規形ではない。
"項番"がなければ当然前者ですが、ここはわざわざ"項番"があるので、私は後者が自然と思います。
この"項番"は、"受注番号"と同時によく登場する"明細番号"と同等です。
(参考)応用情報技術者 平成29年春期 午前問27
管理人様
以下のように見直した方がいいと思いますが、いかがでしょうか?
主キー"受注番号"と"項番"の一部である"受注番号"に"受注日"と"得意先コード"が関数従属しているので、第2正規形ではない。
また、主キー以外の"商品コード"に"単価"が関数従属しているので、第3正規形ではない。
2018.03.14 09:02
たかなクンさん
(No.3)
項番は、1回受注で商品コード毎に振られるので…
受注番号、商品コード、項番
001、AAA、1
001、BBB、1
002、AAA、1
こう言うことではないですかね。
受注番号、商品コード、項番
001、AAA、1
001、BBB、1
002、AAA、1
こう言うことではないですかね。
2018.03.15 08:11
管理人
(No.4)
ご報告ありがとうございます。
確かに{受注番号,項番}も主キーになりますね。
解説を以下のように改訂いたしました。
------------------------------------------------------------------------------
… ある行を特定できる属性は「"受注番号"と"項番"の組合せ」若しくは「"受注番号"と"商品コード"の組合せ」であることが明確になります。
第2正規形への正規化では主キーの一部によって定まる属性を別表に移します。"受注日"と"得意先コード"は"受注番号"に、"単価"は"商品コード"にそれぞれ関数従属しますが、設問の表では、どちらを主キーとした場合でも主キーへの部分関数従属が別表に分離されていないため第2正規形ではないと判断できます。
------------------------------------------------------------------------------
確かに{受注番号,項番}も主キーになりますね。
解説を以下のように改訂いたしました。
------------------------------------------------------------------------------
… ある行を特定できる属性は「"受注番号"と"項番"の組合せ」若しくは「"受注番号"と"商品コード"の組合せ」であることが明確になります。
第2正規形への正規化では主キーの一部によって定まる属性を別表に移します。"受注日"と"得意先コード"は"受注番号"に、"単価"は"商品コード"にそれぞれ関数従属しますが、設問の表では、どちらを主キーとした場合でも主キーへの部分関数従属が別表に分離されていないため第2正規形ではないと判断できます。
------------------------------------------------------------------------------
2018.03.15 11:48
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。