Powered by SmartDoc

10 (6/23):キーと正規化

教科書68ページの図の「ロールバック」と「コミット」の説明が反対になっている

10.1 はじめに

10.1.1 グループ発表

なし

10.1.2 復習

・68ページのトランザクションの説明

・同時実効制御の例;メモ帳とWordの場合,同時に編集してしまうようです.WZエディタとWordの場合,排他制御がかかります.

・SQLの3種類の言語とスキーマ

10.1.3 今回の学習目標

・キー,外部キー

・正規化(第1正規形から第3正規形まで)

10.2 本題

プリント配布

10.2.1 キー

候補キー(candidate key);テーブルの中のタプル(行)を一意に同定することができる属性(の組).

従属関係;属性Aの値がわかれば属性Bの値も自動的に決まるとき,属性Bは属性Aに従属している.例えば,郵便番号は住所に従属している.

主キー(prime key);タプルを一意に同定するIDの役割を果たす属性.候補キーの中からひとつ選んで主キーとするか,別にIDやコードと呼ばれるユニークな値を持つ属性を追加して主キーとする.

キー制約(key constraint);主キーは必ず値を持っていなければならない.(NULL値ではIDにならない.)

NULL(空値);値を持っていないこと.

外部キー(foreign key);他のテーブルの主キーとなっている属性のこと.

外部キー制約(foreign key constraint);参照している外部テーブルの主キーにない値を使用できない.外部キー制約を使って,複数のテーブルのリレーションシップを表す.

10.2.2 データを管理しやすいテーブルの要件

一貫性制約;矛盾したデータがないこと,ありもしない値が入力されないこと,データが重複しないこと,などの条件.

データを挿入したり削除したり更新したりしたときにもおかしくならない,メインテナンスし易い;正規化という作業が必要.

10.2.3 第一正規形(first normal form)

一事実一箇所,属性値がデータの集合でないテーブル.

主キーの属性名は下線を引いて示す,DDLでも主キーを指定する.

これでもまだ不完全;タプルの挿入時異常,削除時異常,修正時異常が発生してしまうテーブルがある.

これらの更新時異常を改善するためには,お互いに自立した属性の組を持つ複数のテーブルに分解しなければならない.

10.2.4 第二正規形

完全従属;属性A.B,Cの組の値が決まれば属性X,Y,Zの値が自動的に決まるのが従属関係であるが,このうち,属性Aや属性Bだけで決まるのではなくて,A,B,Cすべての値に従属していることを完全従属という.つまり,決定する側に余分な属性が入っていないこと.

第二正規形では,第一正規形であるテーブルの非キー属性は,必ず候補キーに完全従属していなければならない.つまり,候補キーの値が指定されれば,残りの属性の値も決まる.

10.2.5 第三正規形

推移従属;仲介属性を介して従属関係にあること.AならばB,BならばCのとき,AならばCが成立するが,このような関係が推移従属.

第二正規形では,主キーとは別の属性同士にまだ従属関係が残っている(推移従属している)場合がある.そこで,完全従属以外の従属関係が残らないように分解すると,第三正規形になる.先ほどの例の場合は,属性A及びBのリレーションと,属性B及びCのリレーションに分解する.

第三正規形では,候補キー以外の属性の値によってその他の属性の値を決めることはできない.

10.3 おわりに

10.3.1 課題

  1. 復習

10.3.2 次回の学習目標

・RDBに関連する演算

10.3.3 予習範囲

  1. 予習