エンティティ(実体)
例:美容院 予約システム
画面図などを使って、仕様を決める
画面図や仕様書を見ながら、何をデータとして保存するか列挙していく。
列挙したデータを種類ごとに分ける。- 店名
- 時間帯
- 美容師
- コース
システム側が事前に用意するもの
- 店名
- 美容師
ユーザーが登録するもの
- 時間帯
- コース
列挙したデータを抽象化して、エンティティとしてまとめる。
- 店名ID:
- 美容師No:
- 時間帯:
- コース:
テーブル名と列名を定義し、データを入れる
クロエ(店名)テーブル +--------+--------------+-------+ | 美容師ID| 時間帯 | コース | +--------+--------------+-------+ | 1 | 9:00 ~ 18:00 | カット | | 2 |10:00 ~ 19:00 | カラー |
正規化
- DB設計の手法の1つ
- 第1 ~ 第6正規形 まである
- 第3正規形までを扱うことが多い
- 冗長性を防ぐのが目的
- 冗長性:データの重複。例:複数行が全く同じデータ。
- 整合性を保つため
- 無損失分解:可逆的(分解後)に元のテーブルに戻せるか考えて正規化すること
第1正規形
- 1つのセルに、1つの値のみ入る
第2正規形
- 関数従属性:y = f(x)。y が決まれば、x も決まる
第3正規形
- 第2正規形から、推移的関数従属性を無くすこと
- 推移的関数従属性:テーブル内にある段階的な関数従属性
- 例:あるテーブルにおいて、AとBが決まると、CとDが決まる場合、
CとDをそのテーブルから切り離して、別のテーブルを作成する。
すると、Dの値だけが増える場合に対応しやすくなる。
- 例:あるテーブルにおいて、AとBが決まると、CとDが決まる場合、
ボイスコッド正規形
- 非キーから、主キーへの関数従属性をなくすこと