エンジニアのサブルーチン

あまり注目されない組み込みのシステムエンジニアをやっています。エンジニア業界のこととか、勉強したこととかを不定期に更新していきます。

データベースの構造

Chat-spaceの初回コードレビューにて、テーブルの作成でボロクソに指摘受けたので、DBについて学んだことまとめる
...

3層スキーマ


スキーマとはデータベースの構造であり、3層スキーマとはスキーマ3つの階層にわけて定義する方式のこと。

外部スキーマ
  • ユーザ目線で見たデータベース。概念スキーマで定義された論理データから必要な情報を取り出したもの(アプリケーションのビューなど)
概念スキーマ
  • 開発者から見たデータベース。 DBの論理データやデータ同士の関係など定義する。(テーブル定義)
内部スキーマ

正規化

第一正規化

レコード内の繰り返しを避けたもの。同一カラム内にある複数の値をわけて一つのレコードにしたりする。

第三正規化

主キーに対して全ての属性が従属であり、かつ推移的関数従属(後述)も存在していないテーブル


例えば会社ID 社員ID 社員名 年齢 部署ID 部署名 で定義されたテーブルがあるとする。(アンダーラインは主キーを表す)



社員IDがわかれば部署IDがわかる。部署IDがわかれば部署名がわかる。これを従属しているという。
つまり社員IDがわかれば部署名もわかる。これを推移的関数従属といって、これを解消するのが第三正規化である。

ER図

テーブル同士の関係性を図にしたもの。