平成27年午前Ⅱ 問6について

十三夜さん  
(No.1)
いつも迷ってしまうので、考え方を教えてください。

正規形を問う問題で、対象の表の条件は

"受注番号は受注ごとに新たに発行される番号であり,項番は1回の受注で商品コード別に連番で発行される番号である。なお,単価は商品コードによって一意に定まる。"

とあります。

答えは第1正規形であり、理由は「行を特定可能な属性は"受注番号"と"商品コード"の組合せであることが明確だから」とされていますが、私はいつもこの問題を見ると、「"受注番号"と"項番"の組み合わせが主キーでは?」と考えてしまいます。

"項番"が主キーにならない理由は何でしょうか?
また、主キーでないとしたら"項番"は何になるのでしょうか?

2018.03.14 02:07
通りすがりの者さん 
(No.2)
主キーを、"受注番号"と"商品コード"の組合せとするか、"受注番号"と"項番"の組合せとするか、見解は分かれますが、どちらでもいいと思います。

"項番"がなければ当然前者ですが、ここはわざわざ"項番"があるので、私は後者が自然と思います。

この"項番"は、"受注番号"と同時によく登場する"明細番号"と同等です。
(参考)応用情報技術者 平成29年春期 午前問27

管理人様
以下のように見直した方がいいと思いますが、いかがでしょうか?

主キー"受注番号"と"項番"の一部である"受注番号"に"受注日"と"得意先コード"が関数従属しているので、第2正規形ではない。
また、主キー以外の"商品コード"に"単価"が関数従属しているので、第3正規形ではない。
2018.03.14 09:02
たかなクンさん 
(No.3)
項番は、1回受注で商品コード毎に振られるので…
受注番号、商品コード、項番
001、AAA、1
001、BBB、1
002、AAA、1

こう言うことではないですかね。
2018.03.15 08:11
管理人 
(No.4)
ご報告ありがとうございます。
確かに{受注番号,項番}も主キーになりますね。

解説を以下のように改訂いたしました。

------------------------------------------------------------------------------

… ある行を特定できる属性は「"受注番号"と"項番"の組合せ」若しくは「"受注番号"と"商品コード"の組合せ」であることが明確になります。

第2正規形への正規化では主キーの一部によって定まる属性を別表に移します。"受注日"と"得意先コード"は"受注番号"に、"単価"は"商品コード"にそれぞれ関数従属しますが、設問の表では、どちらを主キーとした場合でも主キーへの部分関数従属が別表に分離されていないため第2正規形ではないと判断できます。

------------------------------------------------------------------------------
2018.03.15 11:48

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop