第4回 データベースのスキーマ設計
スキーマ = データベースの論理的構造
いきなり『何も知らない状態で発注書を作れ』という演習でした。
第1正規形 → 第2正規形 → 第3正規形
と変形していくことによって無駄な部分が省かれる。
第1正規形
発注番号 | 取引先ID | 会社名 | 日付 | 扱い者 | 品名 | 数量 | 単価 |
3492 | c61 | 菓子の山本 | 1991/8/10 | 井沢 | チョコレート | 50 | 98 |
3492 | c61 | 菓子の山本 | 1991/8/10 | 井沢 | センベイ | 30 | 218 |
3492 | c61 | 菓子の山本 | 1991/8/10 | 井沢 | キャラメル | 50 | 92 |
3492 | c61 | 菓子の山本 | 1991/8/10 | 井沢 | クッキー | 100 | 185 |
3494 | c45 | 三木商店 | 1991/8/19 | 代田 | チョコレート | 100 | 95 |
3494 | c45 | 三木商店 | 1991/8/19 | 代田 | キャラメル | 50 | 87 |
3494 | c45 | 三木商店 | 1991/8/19 | 代田 | 棒チョコ | 20 | 145 |
3494 | c45 | 三木商店 | 1991/8/19 | 代田 | キャンディ | 100 | 80 |
3494 | c45 | 三木商店 | 1991/8/19 | 代田 | ガム | 50 | 77 |
データをただ表示しただけ。
第2正規形
発注番号 | 取引先ID | 会社名 | 日付 | 扱い者 |
3492 | c61 | 菓子の山本 | 1991/8/10 | 井沢 |
3494 | c45 | 三木商店 | 1991/8/19 | 代田 |
発注番号 | 品名 | 数量 | 単価 |
3492 | チョコレート | 50 | 98 |
3492 | センベイ | 30 | 218 |
3492 | キャラメル | 50 | 92 |
3492 | クッキー | 100 | 185 |
3494 | チョコレート | 100 | 95 |
3494 | キャラメル | 50 | 87 |
3494 | 棒チョコ | 20 | 145 |
3494 | キャンディ | 100 | 80 |
3494 | ガム | 50 | 77 |
(発注番号、取引先ID、会社名、日付、扱い者)において、同じことが書いてあるものを分割。
たとえば、発注番号が決まると、すべてが決まる(『従属している』という)。よって、分割。
第3正規形
発注番号 | 取引先ID | 日付 | 扱い者 |
3492 | c61 | 1991/8/10 | 井沢 |
3494 | c45 | 1991/8/19 | 代田 |
取引先ID | 会社名 |
c61 | 菓子の山本 |
c45 | 三木商店 |
発注番号 | 品名 | 数量 | 単価 |
3492 | チョコレート | 50 | 98 |
3492 | センベイ | 30 | 218 |
3492 | キャラメル | 50 | 92 |
3492 | クッキー | 100 | 185 |
3494 | チョコレート | 100 | 95 |
3494 | キャラメル | 50 | 87 |
3494 | 棒チョコ | 20 | 145 |
3494 | キャンディ | 100 | 80 |
3494 | ガム | 50 | 77 |
取引先ID と 会社名という関係もあるので、またまた分割。
超キー = すべての属性の値を決定しうる、属性の組み合わせ。
候補キー = 超キーの中から冗長な属性を取り除いた極小なもののみの属性の組み合わせにしたもの。
主キー = 候補キーの中からそのリレーションのキーとして採用したもの。
E−Rモデル(実体−関連モデル)
1976 Peter Chen
・世の中を『実体』と『関連』に分けて考える。
『実体』 = 実世界のなかで、われわれが認識するものや事柄
例:会社、大学、学生、商品 など。
『関連』 = 実体と実体の間に生じる関連
例:大学と学生の関連は『所属』、会社と商品の関連は『販売』
・E−Rダイアグラム