正規化

  • 第一正規化:1つのテーブルで同じカラムが重複しないようにする
    • 関数従属:主キーに他のカラムが紐付いている状態
  • 第二正規化:部分関数従属するカラムを分離する
    • 部分関数従属:あるカラムが、そのテーブルの一部のキーだけに紐付いている状態
  • 第三正規化:主キー以外のキーに紐づくカラムをすべて分離して細分化する
    • 完全関数従属:あるカラムが、そのテーブルのすべてのキーに紐付いている状態

店舗ID 顧客ID 顧客名 性別 住所 電話番号 購入ID 購入商品名 購入日 担当者

例)

部分関数従属:顧客名、性別、住所、電話番号は、顧客IDに紐付いています。

完全関数従属:担当者は、店舗ID、顧客ID、購入ID、すべてに紐付いています。




* 非冗長化

テーブル内のid名などは、customer_idや、user_idなどとせず、単にidとします。

これはSQLで検索する際、customer.customer_idなどと冗長化してしまうのを避けるためです。

  • 1つのカラムを2つ別々のテーブルに結びつけない

これは1つ更新が加わった際、2つのテーブルが変更されなければならないという危険性を孕む行為を避けるためです。

  • カラムの追加

カラムを追加する作業は本番のサーバーを止めねばならず手間が掛かってしまう作業なので、将来利用するかもしれないカラムは、予め追加しておきます。

  • 言葉の定義

言葉の定義をしっかりとし、同じものを別の言葉で言い換えないようにします。混乱と手間を省くためです。

例えば顧客ID、顧客コード、顧客番号、どれか一つに決めて、他の似ているものも統一します。


※ この記事は、追加で更新していきます。