【第ニ正規化】
キー全体に対して1対1関係の形にします。
● 部分集合キーにより別エンティティに分離します
● 従属関係を定義する→上位(従属関係)エンティティに定義します。
部分集合キーとは、複合キー(複数のデータ項目で構成されるキー)のうちの部分集合となるキーという意味です。
例えば、”受注明細”のキーが「部署コード」「商品コード」「受注番号」と3つのデータ項目で構成されていたとします。その場合は、それぞれのデータ項目とその組合せが部分集合キーということになります。
この例では
①「部署コード」
②「商品コード」
③「部署コード」+「商品コード」
④「部署コード」+「受注番号」
⑤「商品コード」+「受注番号」ということになります。
キー全体ではなく、部分集合キーに依存する項目があるかどうかを検討していきます。依存するという意味は、以前説明しましたが、そのデータ項目の内容が決まれば決まる項目という意味です。
例えば、”受注明細”の項目が以下の構成だったとします。
K 部署コード
K 商品コード
K 受注番号
部署名
受注単価
受注数量
消費税区分
消費税率
この場合、「部署名」はキー全体の値が決まらなくとも、「部署コード」さえ決まれば決まる項目です。このような部分集合キーによって特定できるデータ項目を、部分集合キーとその部分集合キーに依存するデータ項目をペアで分離します。
(受注明細)
K 部署コード
K 商品コード
K 受注番号
受注単価
受注数量
消費税区分
消費税率
(部署)
K 部署コード
部署名
さらに、元のエンティティに対して1対Nの従属関係を定義しておきます。 第ニ正規化の例を(図1)に示します。
(図1)第二正規化の例
キー全体に対して1対1関係の形にします。
● 部分集合キーにより別エンティティに分離します
● 従属関係を定義する→上位(従属関係)エンティティに定義します。
部分集合キーとは、複合キー(複数のデータ項目で構成されるキー)のうちの部分集合となるキーという意味です。
例えば、”受注明細”のキーが「部署コード」「商品コード」「受注番号」と3つのデータ項目で構成されていたとします。その場合は、それぞれのデータ項目とその組合せが部分集合キーということになります。
この例では
①「部署コード」
②「商品コード」
③「部署コード」+「商品コード」
④「部署コード」+「受注番号」
⑤「商品コード」+「受注番号」ということになります。
キー全体ではなく、部分集合キーに依存する項目があるかどうかを検討していきます。依存するという意味は、以前説明しましたが、そのデータ項目の内容が決まれば決まる項目という意味です。
例えば、”受注明細”の項目が以下の構成だったとします。
K 部署コード
K 商品コード
K 受注番号
部署名
受注単価
受注数量
消費税区分
消費税率
この場合、「部署名」はキー全体の値が決まらなくとも、「部署コード」さえ決まれば決まる項目です。このような部分集合キーによって特定できるデータ項目を、部分集合キーとその部分集合キーに依存するデータ項目をペアで分離します。
(受注明細)
K 部署コード
K 商品コード
K 受注番号
受注単価
受注数量
消費税区分
消費税率
(部署)
K 部署コード
部署名
さらに、元のエンティティに対して1対Nの従属関係を定義しておきます。 第ニ正規化の例を(図1)に示します。
(図1)第二正規化の例