←【ファイルとデータベース】シラバスへ
←講義のツボメニューへ

データベースのスキーマ設計

【2000.05.12 1限 第4回】

データベースのスキーマ設計

Q1.図5−1のような発注書がある。これは、お菓子屋が卸問屋宛てに出す発注書である。このとき、発注書を管理するデータベースのスキーマを、あなただったら、どのようにしますか?換言すれば、データベースの中に何をデータ要素として格納しますか?


データの正規化
  1. 第1正規形
    • 図5−2(a):ただ単に表にしたもので、リレーションが1つ。
    • ((復習))「正規化」=データを2次元の表の形に並べる事。このときリレーショナルモデルでは1個の欄に1つしか値を入れられない、というルールがあり、そのルールを満たすものを「正規形である」という。
    • 実際のリレーショナルデータベースのスキーマ設計ではもっとデータ構造を変形して、より効率的な、そしてより正当性の保ちやすいスキーマになるように正規形の作業を進めていく。
    • 単に2次元の表にしただけの正規形は、正確には「第1正規形」と呼ばれる。
      Q2.図5−2(a)のリレーションにおける主キーは何か?
  2. 第2正規形
    • 図5−2(a)の問題点、改善点:何度も何度も同じことが書かれている。(”発注番号”、”取引先ID”、”会社名”、”日付”、”扱い者”)
    • 記憶領域の無駄使いで、データ量が多くなるととりわけ深刻化。
    • (→)図5−2(b)のように表を分割する事により効率化可能。
    • (メリット):どこか一ヶ所変更すれば、同じ変更を何度もしなくてよい。
    • 上記メリットが生まれるためには、どのような方針の元に表を分割すればよいか:
      • ”発注番号”が決まると、”取引先ID”が一意に決まる。このように、どちらかの属性値を決めてやると、もう片方の属性値が決まる事を、「関数的に従属している(functionally dependent)」という。単に「従属している」ということもある。
        ex)属性”取引先ID”は、属性”発注番号”に従属している。(”発注番号”→”取引先ID”と表記。)
      • (a)内の「→」は従属関係を表現している。
      • このほかに、”数量”と”単価”は、いずれも”発注番号”と”品名”のペアに従属している。(”発注番号”,”品名”→”数量”、”発注番号”,”品名”→”単価”)
      • (a)の属性の中で、”数量”と”単価”を残して、”発注番号”にだけ従属している属性を分離したのが(b)。”数量”と”単価”の方には、”発注番号”と”品名”のペアをつけている。
      • 複数の属性が主キーを構成しているとき、主キーのすべての属性ではなく一部の属性から主キー以外の属性へ生じている従属性のことを「部分従属性(partial dependency)」という。
      • 第1正規形において、部分従属性がなくなるように表を分割して得られたものを、「第2正規形」という。

  3. 第3正規型
    • 図5−2(b)において、”発注番号”→”取引先ID”に加え、”取引先ID”→”会社名”という関係がある。よって、”取引先ID”を仲介として、”発注番号”→”会社名”という関係も成立している。
    • このように、ある属性を介して間接的に2つの属性が従属関係にある場合、「推移的従属性(transitive dependency)がある」という。
    • 第2正規型から推移的従属性がなくなるよう、表を分割すると、第3正規型が得られる。
    • 高次の正規型ほど重複が排除されており、データの更新に適している。
    • 第2正規型は第1正規型の特別な場合、第3正規型は第2正規型の特別な場合である。すなわち、第1正規型に正規化した時点で、すでに第3正規型になってる場合もあり得る。
    • 第3正規型の意義:キーでない属性(=「非キー属性」)が互いに独立であること。どれか一つの値を更新しても、他の属性への影響を及ぼさない。
  4. 超キー、候補キー、主キー
    • 主キーの組み合わせ:何通りもあることがある。
    • 「超キー(super key)」=すべての属性の値を決定し得る、属性の組み合わせのことを「超キー」という。属性一つの場合も含む。
    • 超キーの中から、冗長な属性を取り除いた極小なもののみの属性の組み合わせにしたものを、候補キー(candidate key)という。
    • 候補キーの中から、そのリレーションのキーとして採用したものを、「主キー(primary key)」という。

3.E−Rモデル
リレーショナルデータモデルでの表現
  1. E−Rモデルからリレーショナルモデルへの変換規則
    種々提案されたが、以下が最善として固定、認知された。
    1. E−Rモデルの実体の処理:リレーションへ変換する(例:図5−4→図5−6では、”取引先業者”、”発注書”、”商品”
    2. E−Rモデルの関連の処理:
      (a)多対多の関連:リレーションへ変換した上で、関連に参加している2つの実体の主キーを底雨声に追加し、これらを主キーとする。(例:図5−4→図5−6では、”発注項目”
      (b)1対多の関連:リレーションは作らず、多の方の属性に1の方の主キーを加えて、これを外部キーとする。(例:図5−4→図5−6では、”発注先”)

←【ファイルとデータベース】シラバスへ
←講義のツボメニューへ
←鈴木研究室ホームへ