4.3    正規化

 データベースアプリケーションの作成にはリレーショナルデータベースの設計が非常に重要です。でたらめな表構成の場合、データの更新や参照が複雑になり、アプリケーションの作成が困難になってしまいます。そのために正規化というものを行います。正規化はデータの分散管理を防ぎ、一貫したデータベース設計手法を開発者に提供します。正規化には第一正規形から第五正規形まであり、第三正規形までを設計することが主流となっています。
第一正規形
 第一正規形は、繰り返し項目が存在しないデータモデルです。つまり、1つの項目に入る要素は1つのみという形式です。そのため第一正規形を作成するためには、表の分割を行います。下の図では売上げ明細が繰り返し項目になっているため、これを分割して第一正規形を作成します。第一正規形になると、とりあえずリレーショナルデータベースに保管できる形になります。しかし、第一正規形ではデータが冗長に管理されているため、保管効率が期待できません。


第二正規形
 第二正規形は、各表について一意に識別できる列情報(キー)に着目します。キーは1つの列で表されるとは限りません。複数項目をキーとした場合、それらの列情報で一意になる項目を別表として分割したデータモデルのことを第二正規形といいます。下の図でいえば、売上表のキーは「売上日」と「顧客コード」になっています。売上日に従属する情報は存在しませんが、もう1つのキー情報である顧客コードには「顧客名」という従属する情報が存在します。そこで、顧客情報を顧客表として売上表から分割します。売上明細表のキーは「売上日」「顧客コード」「明細番号」です。こちらのほうはキー情報に従属する情報が存在しないので、すでに第二正規形になっています。
           


第三正規形
 第二正規形はキー情報に注目しましたが、第三正規形はキー以外の項目にも注目し、一意に決まるものがあれば、それを別の表として分割します。下の図でいえば、売上明細表の商品コードさえわかれば、商品名と単価が一意に決定するので商品表として分割することができます。売上表、顧客表はすでに第三正規形なっているので、そのままにしておきます。第三正規形は冗長なデータ構造を持たないデータモデルです。このモデルにすることで一連の正規化は終了になります。