1. SIS Lab
  2. >
  3. Blog
  4. >
  5. 正規化とは何か?

正規化とは何か?

更新日:2019.04.27 作成日:2015.08.07
#DB

達人に学ぶ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

索引設計についてのまとめ