データベース設計についてのメモ

データベース設計

1.論理設計(ER図などのモデル設計。概念スキーマを設計する)
2.物理設計(ハードウェア設計)
3.実装設計(製品固有の設計、実装方法とか、上記よりも具体的なの)

基本設計

データ設計(データ≒データベース)
設計ステップ(論理が先に設計される=料理に合わせて器を考える)
1?外部スキーマ:テーブル、ビュー
2?概念スキーマ:テーブル定義
3?内部スキーマ:物理的なデータ配置

外部スキーマ(論理)設計ステップ

1.エンティティ抽出 扱うデータの抽出、エンティティ=実態。テーブルのこと。
2.エンティティ定義 エンティティは属性を持っている。属性=列。キー=特定列のこと
3.正規化      システムでスムーズに利用できるように整理すること。データの不整合などを起こさないようにする。
4.ER図作成     正規化するとエンティティの数が増えて、繋がりもできるので、それを視覚化する。

システム開発アプローチ

データ中心アプローチ:今
プロセス(処理)中心アプローチ:昔

列=カラム、属性
行=レコード

外部キーはデータの値に制約をかけるために存在する。
社員テーブルの部署列を外部キーに設定する。そして部署列は部署テーブルを参照する。
部署テーブルには、正しい部署名のレコードが並んでいて、そこにないレコードは社員テーブルの部署列に入れることはできない。といった感じ

データの構造

データベースに格納するデータの構造(データモデル)には主に次の4つの構造がある。
・階層型
・ネットワーク型
・オブジェクト型
・リレーショナル型

データベースでもっとも多く使われているOracle DBはリレーショナル型データモデルで、リレーショナル型データモデルを採用したデータベースはリレーショナルデータベースと呼ぶ。

正規化

RDBでは第三正規化まで実施するのが一般的。今回は第三正規化までまとめる。

第一正規化

1セルに1データ
NULLを無くす(親列、子列だと子がいないとNULLになってしまうのでテーブルを分ける)
分けたテーブルはシステムで使用するときに外部結合する(NULLがあるとダメな場合は内部結合ですね)

第二

部分関数従属の解消(主キーが2つあるときに、1つの主キーのみで値が決まってしまう列があること
→テーブルを分ける、外部キーにするってことだな

第三

推移的関数従属(二段階の関数従属のこと
社員テーブルで初めて登録される部署の人は、部署名が外出しされて網羅的になっていないと登録できない(できるけど間違いが起こりやすいでは?




Let's share SNS