連載
» 2008年11月21日 00時00分 公開

スキーマ設計にはどんな手法と作法があるの?組み込みDBプログラミングの道しるべ(4)(2/2 ページ)

[加藤大受,@IT MONOist]
前のページへ 1|2       

正規化理論

 RDBでは表(テーブル)をデータ構造にしているため、いかに使いやすい表を作成するかがスキーマ設計の「カギ」となります。では使いやすい表とはどんな表でしょうか。使いやすい表とは、『データ処理を行っても問題を生じない表である』ということです。

 スキーマ設計では、エンティティの洗い出しを終えたら、それらのエンティティがどのデータ型を利用するのかを検討し、表形式にまとめていきます。表同士の関係も重要になります。各表にはその表の各行を一意に判別できる「キー」が必要になります。「キー」には次の3種類があります。

  1. 候補キー(candidate key) 
    行(レコード)を一意に識別できるまたは属性の組み合わせ
  2. 主キー(primary key) 
    設計者の判断によって決められた表を代表するキー
  3. 外部キー(foreign key) 
    複数の表同士を結びつけるための属性。外部キーはほかの表の主キーになる

 キーが重要になるのは、RDBではユーザーから利用できる行番号を持たないからです(内部的に行番号を持っているものもあります)。行番号がないため、表に行を一意に識別できるキーがなければ、データ処理に問題が発生してしまう可能性が高くなります。このため、各表にはキーが必要になるということです。

 キーが必要になることは分かりましたが、正規化とは何なのでしょうか。正規化とはRDBにおいて、エンティティ同士の関係を整理する作業のことです。正規化には次の6つがあり、第一正規化から順にステップを追っていくことになります。

  • 第一正規化 
    繰り返しの部分を複数の行にして,繰り返しを排除する操作
  • 第二正規化 
    主キーに付随する項目を分離すること
  • 第三正規化 
    主キー以外のキーに付随する項目を分離すること
  • ボイス・ゴット正規化 
    第三正規化を強化すること
  • 第四正規化 
    推移関係となる項目を分離すること
  • 第五正規化 
    元の表の結合関係を維持して分解し、結合したときに元の表に戻ること

 ここでは6つのステップを非常に簡単に説明していますが、実際はリレーショナルデータモデルに基づいて、集合論と述語理論に基づいて説明されています。興味のある方は各定義に目を通してみてください。ちなみに第三正規化までは、リレーショナルデータモデルを考案したCodd博士によって、定義されています。

 正規化には上記のように6つのステップがありますが、一般的に第三正規化まで行えば問題ないといわれています。しかし、RDBを利用する以上、これらの6つの正規化について理解しておいた方がいいことはいうまでもありません。ただ、外部キーの設定ができない製品が多い組み込みデータベースでは、第三正規化までを意識すれば十分だといえます。

 インデックスの設計もスキーマ設計時に行いますが、主キー以外のインデックスについてはスキーマ作成後に対応することは可能です。インデックスの作成は、アプリケーションの実装時に、データ検索の要件の見直しを行い、そのタイミングで必要なインデックスを作成することも可能です。

 エンティティ同士の関係だけでなく、各データ項目の条件やデータ型、データのサイズを考えることも重要です。また、文字型のデータの場合、可変長型(VARCHAR)にするのか固定長型(CHAR)にするのかも決める必要があります。データ項目のデータサイズはアプリケーションの制限になりますので、将来の拡張も踏まえて設計しておく必要があります。その後、インデックスの検討も必要になります。

 データ項目の条件とは、空白を許すか許さないか、データが一意である必要があるかどうかなどです。エンタープライズ系のRDBや一部の組み込みデータベースでは、数値型のデータの場合、最小値や最大値の設定やデータの初期値などの条件設定も可能です。



 次回は具体的な例を挙げてスキーマ設計を実施いきます。@ITのDatabase Expertのフォーラムには正規化の方法について書かれた数多くの記事があります。次回のスキーマ設計の原稿を読む前にできるだけ多くの記事を読まれておくことをお勧めします。(次回に続く)

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.