HOME»データベーススペシャリスト掲示板»H22 AM2 問9 解説に誤り
投稿する
H22 AM2 問9 解説に誤り [0631]
Nさん(No.1)
下記が正しいと思います。
第1、第2、第3正規形を満たすための条件は下記の通り。
第1正規形 すべての属性が単一値でなければならない。
第2正規形 第1正規形であり、全ての非キー属性は、全ての候補キーに部分関数従属していない。
第3正規形 第2正規形であり、全ての非キー属性は、全ての候補キーに推移的関数従属していない。
顧客は1回の注文で一つ以上の商品を注文できるのであり、注文毎に同じ商品の行はできないので、
候補キーは、{受注番号, 商品番号}、{受注番号, 商品名} である事が分かる。
全ての属性は単一値であるので、第1正規形の条件を満たしている。
部分関数従属性があるか考える。
非キー属性である {商品名, 単価 } が、候補キーの一部である商品番号に部分関数従属している。
また、非キー属性である {顧客コード, 顧客名, 受注日} が、
候補キーの一部である受注番号に部分関数従属している。
従って、第2正規形ではない。
部分関数従属している部分を分解する事で、第2正規形にする事ができる。
分解後のテーブルは、下記の通りです。
受注(受注番号(PK), 顧客コード, 顧客名, 受注日)
受注伝票(受注番号(PK), 商品コード(PK), 受注数, 受注金額)
商品(商品コード(PK), 商品名, 単価)
推移的関数従属性があるか考える。
新しく作成したテーブル"受注"に、受注番号→顧客コード→顧客名という推移的関数従属がある事が分かる。
従って、第3正規形ではない。
推移的関数従属している部分を分解する事で、第3正規形にする事ができる。
分解後のテーブルは、下記の通りです。
受注(受注番号(PK), 顧客コード(FK), 受注日)
受注伝票(受注番号(PK), 商品コード(PK), 受注数, 受注金額)
商品(商品コード(PK), 商品名, 単価)
顧客(顧客コード(PK), 顧客名)
これで、第3正規形にする事ができました。
全てのテーブルの属性は単一値であり、
部分関数従属性、推移的関数従属性はありません。
テーブルは、4つの表に分解される。
第1、第2、第3正規形を満たすための条件は下記の通り。
第1正規形 すべての属性が単一値でなければならない。
第2正規形 第1正規形であり、全ての非キー属性は、全ての候補キーに部分関数従属していない。
第3正規形 第2正規形であり、全ての非キー属性は、全ての候補キーに推移的関数従属していない。
顧客は1回の注文で一つ以上の商品を注文できるのであり、注文毎に同じ商品の行はできないので、
候補キーは、{受注番号, 商品番号}、{受注番号, 商品名} である事が分かる。
全ての属性は単一値であるので、第1正規形の条件を満たしている。
部分関数従属性があるか考える。
非キー属性である {商品名, 単価 } が、候補キーの一部である商品番号に部分関数従属している。
また、非キー属性である {顧客コード, 顧客名, 受注日} が、
候補キーの一部である受注番号に部分関数従属している。
従って、第2正規形ではない。
部分関数従属している部分を分解する事で、第2正規形にする事ができる。
分解後のテーブルは、下記の通りです。
受注(受注番号(PK), 顧客コード, 顧客名, 受注日)
受注伝票(受注番号(PK), 商品コード(PK), 受注数, 受注金額)
商品(商品コード(PK), 商品名, 単価)
推移的関数従属性があるか考える。
新しく作成したテーブル"受注"に、受注番号→顧客コード→顧客名という推移的関数従属がある事が分かる。
従って、第3正規形ではない。
推移的関数従属している部分を分解する事で、第3正規形にする事ができる。
分解後のテーブルは、下記の通りです。
受注(受注番号(PK), 顧客コード(FK), 受注日)
受注伝票(受注番号(PK), 商品コード(PK), 受注数, 受注金額)
商品(商品コード(PK), 商品名, 単価)
顧客(顧客コード(PK), 顧客名)
これで、第3正規形にする事ができました。
全てのテーブルの属性は単一値であり、
部分関数従属性、推移的関数従属性はありません。
テーブルは、4つの表に分解される。
2023.10.07 15:24
ピノッキさん(No.2)
問題と解説みてきましたが、スレ主さんのおっしゃっている解説文もあっていると思いますし、
該当の解説文もあってるかと思いました。
具体的に、どこが誤りだと思ったんですか?
該当の解説文もあってるかと思いました。
具体的に、どこが誤りだと思ったんですか?
2023.10.07 15:48