DBスペシャリスト試験の正規化についての整理
DBスペシャリスト試験を受けようとおもいます。
主に午後1、2ではDB概念設計が出題されるので、キーになりそうな語彙と正規形について、以下にまとめてみました。
主キー
・一意性
・非NULL制約
複数属性がセットで主キーになることもある。
候補キー
・一意性
関数従属性(完全関数従属、部分関数従属、推移的関数従属)
・関数従属性
一方の値が決まると他の項目の値も一意に決まる関係。
・完全関数従属
主キー(主キーが複数のキー項目から構成されている場合)の全ての項目を使って値が決定する関係。
・部分関数従属
主キー項目の一部によって値が決定する関係。
・推移的関数従属
主キー→X、X→Yの関数従属がある場合、主キー→Yは推移的関数従属の関係。
・自明でない多値従属性
主キー→A|Bの関係。
第1正規形
・受注テーブル
受注ID | 商品ID | ユーザID | 名前 | 住所 | 購入商品 |
---|---|---|---|---|---|
1 | 1 | 1 | 山田太郎 | 東京 | サッカーボール |
2 | 2 | 2 | John | 大阪 | 鉛筆 |
3 | ノート | ||||
3 | 1 | 3 | Nan | 福岡 | サッカーボール |
第1正規形にすると
・受注テーブル
受注ID | 商品ID | ユーザID | 名前 | 住所 | 購入商品 |
---|---|---|---|---|---|
1 | 1 | 1 | 山田太郎 | 東京 | サッカーボール |
2 | 2 | 2 | John | 大阪 | 鉛筆 |
2 | 3 | 2 | John | 大阪 | ノート |
3 | 1 | 3 | Nan | 福岡 | サッカーボール |
主キーは{受注ID, 商品ID}となります。
第2正規形
・受注テーブル
受注ID | 商品ID | ユーザID | 名前 | 住所 | 購入商品 |
---|---|---|---|---|---|
1 | 1 | 1 | 山田太郎 | 東京 | サッカーボール |
2 | 2 | 2 | John | 大阪 | 鉛筆 |
2 | 3 | 2 | John | 大阪 | ノート |
3 | 1 | 3 | Nan | 福岡 | サッカーボール |
第2正規化するには、部分関数従属を排除します。この場合の部分関数従属は、商品ID→購入商品です。
・受注テーブル
受注ID | 商品ID | ユーザID | 名前 | 住所 |
---|---|---|---|---|
1 | 1 | 1 | 山田太郎 | 東京 |
2 | 2 | 2 | John | 大阪 |
2 | 3 | 2 | John | 大阪 |
3 | 1 | 3 | Nan | 福岡 |
・商品テーブル
商品ID | 購入商品 |
---|---|
1 | サッカーボール |
2 | 鉛筆 |
3 | ノート |
第3正規形
・受注テーブル
受注ID | 商品ID | ユーザID | 名前 | 住所 |
---|---|---|---|---|
1 | 1 | 1 | 山田太郎 | 東京 |
2 | 2 | 2 | John | 大阪 |
2 | 3 | 2 | John | 大阪 |
3 | 1 | 3 | Nan | 福岡 |
第3正規化するには、推移的関数従属を排除します。この場合の推移的関数従属は、受注ID、商品ID→ユーザID→名前|住所です。
・受注テーブル
受注ID | 商品ID | ユーザID |
---|---|---|
1 | 1 | 1 |
2 | 2 | 2 |
2 | 3 | 2 |
3 | 1 | 3 |
・ユーザテーブル
ユーザID | 名前 | 住所 |
---|---|---|
1 | 山田太郎 | 東京 |
2 | John | 大阪 |
3 | Nan | 福岡 |
第4正規形
・ユーザテーブル
ユーザID | 名前 | 住所 |
---|---|---|
1 | 山田太郎 | 東京 |
2 | John | 大阪 |
3 | Nan | 福岡 |
第4正規化では、自明でない多値従属性を除きます。この場合の自明でない多値従属は、ユーザID→名前、ユーザID→住所です。
・ユーザテーブル
ユーザID | 名前 |
---|---|
1 | 山田太郎 |
2 | John |
3 | Nan |
・住所テーブル
ユーザID | 住所 |
---|---|
1 | 東京 |
2 | 大阪 |
3 | 福岡 |
- 作者: ITのプロ46,三好康之
- 出版社/メーカー: 翔泳社
- 発売日: 2014/09/18
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る