正規化とは何か?
更新日:2019.04.27
作成日:2015.08.07
達人に学ぶDB設計を読んだときのメモ。
第1正規形 スカラ値(Scalar value)
「1つのセルの中には1つの値しか含まない」
関数従属性(functional dependency)
Y = f(X)
: 入力Xに対して出力Yを決めるための式
このとき、YはXに従属するという。
この関係をデータベースで表すと、{X} -> {Y}
となる。
Xの値を決めれば、Yの値が1つに決まる。 (XおよびYは1つの列ではなく、複数の列の組み合わせであっても構わない)
i.e. 正規化とは、テーブルのすべての列が関数従属性を満たすように整理していくこと。
第2正規形
会社コード, 会社名, 社員ID, 社員名, 年数, 部署コード, 部署名
{会社コード} -> {会社名}
主キーの一部である「会社コード」に従属している。 主キーの一部の列に対して従属する列がある場合、この関係を部分関数従属と呼ぶ。
正規化のポイント
- 正規化とは、更新時の不都合・不整合を排除するために行う
- 正規化は、従属性を見抜くことで可能となる
テーブルの形式だけ見ててもわからない。どの列がどのキーに従属しているかは、業務ロジック(ビジネスロジック)で決まる。
部分関数従属 推移的関数従属
参考
Related contents
TECH
2015.06.10
[SQL実践入門]内部結合と外部結合のイメージ
TECH
2015.06.01
[SQL実践入門]結合のアルゴリズム Nested Loops, Hash, Sort Merge
TECH
2016.05.29
MariaDBの日本語文字化けを解消するための設定
TECH
2014.12.24
達人に学ぶSQL, DB設計をぽちった
TECH
2013.10.02
索引設計についてのまとめ