データベース設計について

データベース設計

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

基本設計

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

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

1.エンティティ抽出
扱うデータの抽出、エンティティ=実態。テーブルのこと。

2.エンティティ定義
エンティティは属性を持っている。属性=列(カラム)。キー=特定列のこと

3.正規化
システムでスムーズに利用できるように整理すること。データの不整合などを起こさないようにする。

4.ER図作成
正規化するとエンティティの数が増えて、繋がりもできるので、それを視覚化する。

データ制約

主キー(Primary Key)

主キーはデータベース内のテーブルにおける各行を一意に識別するための列(カラム)または列の組み合わせです。主キーは重複のない一意な値で構成されており、テーブル内で他の行と区別するための識別子として機能します。通常は自動的に生成されるシーケンシャルな数値列や、固有の識別子などが使用されます。

外部キー(Foreign Key)

外部キーは、データベースの異なるテーブル間の関係性を定義するための制約です。例えば、社員テーブルの「所属部署」カラムに、部署テーブルの主キーを参照する外部キー制約を設定することで、正しい部署名以外は登録できなくなります。これにより、データの整合性を保ちつつ、異なるテーブル間の関連性を明確にすることができます。

データの構造

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

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

正規化

一般的に、関係データベース(RDB)においては、データ整合性を高めるために第三正規化までを適用することが一般的です。そこで、今回は第三正規化までの内容をまとめます。

第一正規化

第一正規化は、1つのセルに複数の値が入らないようにするためのルールです。また、NULLを排除することでデータの重複を減らし、データの整合性を高めます。そのため、関連性のあるデータを分けて複数のテーブルに格納することが必要です。そして、必要に応じて外部結合を使ってテーブルを結合することができます。内部結合は、結合するテーブル同士の共通の行のみを結合するため、NULLがあっても問題ありません。NULLや共通でない行は結合されません。

第二正規化

第二正規化は、テーブル内にある主キーに関数従属しない列(部分関数従属)を解消するための正規化の一つです。つまり、テーブル内に複数の主キーがある場合に、1つの主キーのみで値が決まってしまう列がある場合、その列を別のテーブルに分割して、外部キーを用いて関連付けることで、データの重複を避け、データの整合性を保つことができます。

第三正規化

第三正規化とは、あるテーブル内で、推移的関数従属が発生している場合に、それを解消する正規化のことです。推移的関数従属とは、ある列の値から他の列の値が推測できるような関係のことです。
例えば、社員テーブルにおいて、部署名から部署の所在地が推測できる場合、所在地の列を別のテーブルに分離することで、第三正規化を実施することができます。これにより、データの重複を避け、データの整合性を保つことができます。