【データベース】Web開発者が知っておくべきテーブル設計のやり方・考え方・設計手法・正規化手順

データベース

テーブル設計は、後のプログラミングする上でも大きな影響を及ぼします。
いかにして、整合性のとれた、効率的なテーブル設計を行うか、基本的な設計手法である正規化とその手順を紹介します。

正規化

テーブル定義(項目定義)を整理していく手法を正規化といいます。

正規化は第1から第5まであります。
一般的には第三正規化までを行います。

正規化の手順

正規化は、テーブル定義を行う上で汎用的に使うことのできる知識となります。
正規化を行うことで、データの管理がしやすくなります。

非正規形

まず、正規化をしていない状態のことを非正規形(ひせいきけい)と呼びます。
行と列のデータが1対1とならない状態のことです。エクセルでできるセルが結合されているような状態のことです。

第1正規化

第1正規化は、行と列のデータが1対1の状態にすることです。
そしてデータにIDのようなキーをそれぞれ付与します。
そして、レコードを一意に特定でいる主キーを選定します。
複合主キーである場合も同様で、この段階で選定します。
第1正規化が終わった状態のものを第1正規形といいす。

第2正規化

第2正規化は、主キーの一部に従属している属性を別テーブルに分けます。
従属というのは、何かが決まれば特定されるような属性のことです。
たとえば、商品IDというのが特定されれば、商品名が特定できる場合、商品名を従属している属性といいます。
このように、一方の属性によって特定される属性のことを、専門的な言い方では、部分関数従属といいます。

そして、主キー(複合主キー)によって一意に特定される属性や数量のことを完全関数従属といいます。
部分関数従属は主キーの一部で決まるものを言うのに対し、主キーで一意に特定されるものが完全関数従属です。
完全関数従属は、一部の主キーでは定まらないものと言い換えることもできます。

第2正規化では、部分関数従属を分けていく処理です。

第3正規化

第3正規化は、主キー以外の属性に従属している属性を別テーブルに分ける処理です。
IDを属性に付与すると主キーでは特定せず、他の属性で特定される属性がでてくる場合があります。
そのような主キー以外の属性に関数従属している属性のことを推移的関数従属といいます。

第4正規化と第5正規化もありますが、Web開発においてはほぼ不要です。
正規化の数を増やせば増やすほどテーブルが増えますので、データの取得にコストがかかるようになります。
そのため一般的には第3正規化までを行います。