メモしよっと

なんでもメモするブログです。

(メモ)第一正規化 - 正規化

第一正規化

スカラ値の原則

スカラ値とは

単一の値のこと

第一正規化におけるスカラ値の原則とは

一つのセルに一つの値だけになるようにすること

なぜスカラ値でなくてはならないか

スカラ値でないと、主キーが各列の値を一意に決定できないから

実践: 2つの解決方法で第一正規形にしてみる

今自分が作ろうとしている植物図鑑データを使って練習してみます。

花マスタ

花ID 花名
044003001 ミスミソウ 白、桃、赤、青、紫、黄色

色で花をグループ分けをする必要があるため”白、桃、赤、青、紫、黄色”というテキストデータではなく、個々の色情報を持たせたいです。

方法1 横に展開

花マスタ

花ID 花名 色1 色2 色3 色4 色5 色6
044003001 ミスミソウ

方法2 縦に展開

花マスタ

花ID 花名
044003001 ミスミソウ
044003001 ミスミソウ
044003001 ミスミソウ
044003001 ミスミソウ
044003001 ミスミソウ
044003001 ミスミソウ

方法1の場合は、最初に想定した色の数を超える花がでてきた時、テーブルにカラムを追加しなければ色の登録ができなくなります。 拡張性がないため、縦に展開する方法を採用します。

主キーを考える

方法2の列を特定するためには、”花マスタ”テーブルの主キーを{花ID、花名、色}にする必要があります。 花に色情報が無いってことはないのですが、データ管理の都合上、色を登録しなくても花ID、花名を登録できるようにしておきたいです。

主キーにnullはセットできない ため、テーブル分割を行います。

花マスタ

花ID 花名
044003001 ミスミソウ

花の色テーブル

花ID
044003001
044003001
044003001
044003001

(略)

参考

www.seshop.com