DesignAssembler

備忘録に近い

DB設計指南3、4、5章

3章論理設計と正規化

テーブル名は英語ならば複数形/複数名詞で書ける。そうでなければそのテーブルにはどこか間違いがあります。

テーブルの構成要素

キー

以下の2つが特に重要です 1. 主キー 2. 外部キー

主キー 主キー、またはプライマルキーと呼びます。その値を指定すれば必ず1行のレコードを特定できるような列の組み合わせのことです。

よって、テーブルには重複レコードは存在しません。

また、複数行を組み合わせて作るキーを複合キーと呼びます。

外部キー 2つのテーブルの間の列同士で設定するものです。

これはテーブルに対して制約を課します。

外部キーが削除された場合あわせて子のテーブルも削除する動作をカスケードと呼びます。

制約 1. NOT NULL制約 2. 一意制約 3. CHECK制約 * ある列の取りうる値の範囲を制限するための制約です。

正規化とは何か

正規化の定義 正規化とは、データベースで保持するデータの冗長性を排除し、一貫性と効率性を保持するためのデータ形式です。

また、正規化には第1〜第5正規形があります。これは数字が増えるほど正規化のレベル(字数)が上がっていきます。

通常業務では第3正規形までを考えることが多いです。

第1正規形

そもそもRDBは第1正規形を満たす形になっています。

第1正規形の定義 1つのセルの中には1つの値しか含まないというのが定義です。

第2正規形

部分関数従属 主キーの一部の列に対して従属する列がある 完全関数従属 主キーを構成するすべての列に従属性がある

第2正規化を行うことは、テーブルを分割すること。

第3正規形

推移的関数従属 テーブル内部の段階的な従属関係のこと

第3正規化を行うことは、小テーブルに親テーブルのレコードのidを格納するカラムを追加すること。

4章ER図

ER図 E : Entity(実体)のことで、つまりテーブルを表す R : Relation(関係性)のことで、文字通りテーブル同士の関連を表す

IE表記法 通称「鳥の足」という名前でも知られています。これは初心者向きの記法です。

テーブルの関連のパターン

  1. 1対1
  2. 1対多
  3. 多対多

1対1は同じテーブルにすれば済むのであまり見かけません。 少なくとも正規化をすればこの形は現れません。

1対多は最もよくある関連のタイプです。

多対多は少し特殊で、通常は関連実体を用いて1対多にします。

5章論理設計とパフォーマンス

正規化のデメリット

  • 実用に堪えないレベルでSQLが遅くなります。特に検索が遅くなります。
  • 改修コストが大きくなる

原則として非正規化は許さない あくまで非正規化は最後の手段 論理設計には物理設計の知識が必要