IThaiのブログ

IT関連の話題やタイに関する様々なことを書いていきます。

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 福岡

情報処理教科書 データベーススペシャリスト 2015年版

情報処理教科書 データベーススペシャリスト 2015年版