第5章リレーションモデルと 正規形
DESCRIPTION
第5章リレーションモデルと 正規形. 夢見るからあげサンチーム. 本日の担当箇所. 5-3 第一正規形~第五正規形. すこしおさらい. 正規形は更新時異常といった問題を解決するために考えられたものである 正規形は前のバージョンの異常を補う形で新しい正規形ができている。 第一正規形の条件は すべての正規形の条件に含まれる 何も異常をもたないのはドメイン / キー正規形 それ以外は何らかの異常をもつ正規形. 第一正規形の定義. 各セルが単一の値を持っている すべての列の項目はそれぞれ同じ種類 各列はユニークな値を持つ 列の順番は重要ではない - PowerPoint PPT PresentationTRANSCRIPT
すこしおさらい• 正規形は更新時異常といった問題を解決するために考えられたものである
• 正規形は前のバージョンの異常を補う形で新しい正規形ができている。
• 第一正規形の条件は すべての正規形の条件に含まれる• 何も異常をもたないのはドメイン /キー正規形
• それ以外は何らかの異常をもつ正規形
第一正規形の定義• 各セルが単一の値を持っている• すべての列の項目はそれぞれ同じ種類• 各列はユニークな値を持つ• 列の順番は重要ではない• どの行も同一であってはならない• 行の順番は重要ではない
おさらい• キー →行を識別するひとつ以上の アトリビュートのグループ(常にユニーク)
• 関数依存性→アトリビュート間の関連性 Aが Bを決定するもの ユニークである必要はない (図 5-4でいえば活動名がわかることによって料金がわかる)
図 5-4(p.143)
SID 課外活動 料金100 Skiing 200
100 Golf 65
150 Swimming 50
175 Squash 50
175 Swimming 50
200 Swimming 50
200 Golf 65
図 5-4の異常• 175番に関するタップルを消そうとするとスカッシュが 50ドルという情報が消えてしまう
• また、学生がある活動に参加するまでは、その活動を入力できない
• ゆえに削除時異常と挿入時異常の 2つの異常をもっている。
異常がおこる原因• 図 5-4のキーは(「 SID 」、「活動」)複合キー
• 依存性は(「活動」→「料金」)• (「 SID」と「料金」)には関係性がない• この形はテーブルのキーに 部分的に依存してる(2つのキーのうち活動だけに依存している)
図 5-5( p.146)
「 SID 」 「課外活動」
100 Skiing
150 Swimming
175 Squash
200 Swimming
「課外活動」 「料金」
Skiing 200
Swimming 50
Squash 50
図 5-7(p.150)
「 SID 」 「寮」 「料金」
100 Randolph 1200
150 Ingersoll 1100
200 Randolph 1200
250 Pitkin 1100
300 Randolph 1200
• この推移性ゆえに「 SID 」という単一のアトリビュートがキーとなり、リレーションは第 2正規形となる。
• すべてのキーでないアトリビュートがキーのすべてに依存しているので第 2正規形の条件は満たしている。
図 5-7(p.150)
「 SID 」 「寮」 「料金」
100 Randolph 1200
150 Ingersoll 1100
200 Randolph 1200
250 Pitkin 1100
300 Randolph 1200
第2正規形での異常• 削除時異常と挿入時異常• 2 番目のタップルを削除すると 150 番目
の学生が Ingersoll Hall という情報とそこにすむための1500ドルの料金情報が消えてしまう
• Carrigg Hall が 1500 ドルであるという事実を記録するには学生がその寮に入ろうとするまではこの作業は行えない。
第3正規形• 第2正規形であり、かつ推移的依存性を持たないときに第 3正規形となる
• すべてのキーでないアトリビュートがキーのすべてに依存しかつ、推移的依存性を持たないもの(第 2正規形は複合キーの話)
「 SID 」 「寮」
100 Randolph
150 lngersoll
200 Randolph
250 Pitkin
300 Randolph
「寮」 「料金」
Randolph 1200
Ingersoll 1100
Pitkin 1200
図 5-8 p.151
「 SID 」 「専攻」 「教授名」100 Math Cauchy
150 Psychology Jung
200 Math Riemann
2 50 Math Cauchy
300 Psychology Perls
300 Math Riemann
図 5-8 p.151
「 SID 」 「専攻」 「教授名」100 Math Cauchy
150 Psychology Jung
200 Math Riemann
2 50 Math Cauchy
300 Psychology Perls
300 Math Riemann
このリレーションでのエラー• 300番の学生が退学したとき、学生300のタップルを削除すると Pal教授が心理学を教えている事実も消える→削除時異常
• Keynes教授の事実も同様• ある学生が経済学を専攻するまでは、保管を行うことができない→挿入時異常
エラーの要因• 決定項である「教授名」が候補キーでない• 候補キーに決定項が含まれてない場合、今回のように専攻名が消えたときに一緒に教授の事実が消えてしまう。
• それを防ぐため候補キーは決定項を含むという条件が追加された。
解決策• それを防ぐため候補キーは決定項を含むという条件が追加された。
• 候補キーが決定項ならたとえば今回の場合学生と専攻名が消えても教授がどこに所属しているかという事実は残る→専攻名の事実は残る。(教授は専攻を1つしか選べない)
p.154図 5-10
「 SID 」 「専攻」 「活動」
100 Music Swimming
100 Accounting Swimming
100 Music Tennis
100 Accounting Tennis
150 Math Jogging
p.154 図 5-10
100 Music Skiing
100 Accounting Skiing
100 Music Swimming
100 Accounting Swimming
100 Music Tennis
100 Accounting Tennis
150 Math Jogging
多値依存性• 「 SID 」の単一の値が多くの「専攻」の値をもつ
• 「 SID 」の単一の値が多くの「活動」の値をもつ
• 一般にリレーションが最低三つのアトリビュートを持ち、そのうち二つが多値でありかつ、その値が第3のアトリビュートに依存するとき、多値依存性が存在する。
数値でいいなおすと• リレーション R( A,B,C)において Aが Bの複数の値を決定し、 Aが Cの値を決定し Bと Cが互いに独立であるときに多値依存性が存在する。
• 「 SID 」が「専攻」の複数の値を決定し、「SID」が「活動」の複数の値を決定し「専攻」と「活動」が互いに独立である
P.155図 5-11
「 SID 」 「専攻」
100 Music
100 Accounting
150 Main
「 SID 」 「活動」
100 Skiing
100 Swimming
100 Tennis
150 Jogging
第五正規形• 第 5正規形は、元になるテーブルの結合
従属性を維持して分解することにより得られます。結合従属性とは、分解後の表を結合すると元の表に戻ることで、第 5正規化に限らず正規化はすべて、結合従属性を維持した分解を行います。なぜなら、結合従属性を失うことは元のデータの整合性を失うことになるからです。
まとめ• 第1 NF→リレーションであるための定義• 第2 NF→すべてのキーでないアトリビュートがキーのすべてに依存するときにリレーション
• 第3 NF→第2正規形であり、かつ推移的依存性を持たないときに第 3正規形となる
• BCNF→すべての決定項が候補キー• 第 4NF→ BCNFであり、かつ多値依存性を持たない
ドメイン /キー正規形• 1981 年に R.Fagin はドメイン / キー正規
形の定義を行った。 ードメイン / キー正規形のリレーション
は更新異常を持たない。 ー更新異常を持たないリレーションはド
メイン / キー正規形でなければならない。• 正規形の定義の上限が設定され、更新異
常を防ぐための高位の正規形を、定義する必要がなくなった!
定義 ①制約条件とは?
• アトリビュートの静的値を制御するルールで、真か偽かを明確に述べることができるもの。
• 編集ルール、リレーション内制約ルール、リレーション間制約条件、関数依存性、多値依存性など。
• 時間に依存する制約条件は除外。
定義 ②キーとは?• タップル (行)のユニークな識別子。
SID 学年 寮100 1 Randolph
150 1 Ingersoll
200 2 Randolph
250 2 Pitkin
300 3 Randolph
定義• キーとドメインの制限を強制することにより、すべての制約条件が満足されるならば、リレーションはドメイン /キー正規形となる。
• ドメイン /キー正規形のリレーションは更新異常を持たないので、 DBMSの更新異常も防止することができる。
ドメイン /キー正規形の例(1)
• 『学生』リレーション(「SID」、「学年」、「寮」、「寮費」)
• キー:「SID」• 制約条件:「建物」 → 「寮費」 SIDは1で始まってはいけない。→ドメインをこの制約条件を含むよう定義する!
ドメイン /キー正規形の例(1)
• ドメイン定義 「SID」 IN CDDD ,Cは1以外の数、
Dは十進数 「学年」 IN {‘FR’ ,’ SO’ ,’JR’ ,’
SN’ ,’ GR’} 「寮」 IN CHAR(4) 「寮費」 IN DEC(4)• リレーションとキーの定義 『学生』(「SID」 ,「学年」 ,「寮」) キー:「SID」
ドメイン /キー正規形の例( 2)
• 『教授』(「FID」、「教授名」、「クラス」、「SID」、「学生名」
• キー:「FID」、「クラス」、「SID」)• 制約条件:「FID」→「教授名」 「教授名」→「FID」 「FID」→→「クラス」 | 「SID」 「教授名」→→「クラス」 | 「SID」 「SID」→「FID」 「SID」→「教授名」 「SID」→「学生名」 FIDは1で始まる。SIDは1で始まってはいけない。
ドメイン /キー正規形の例( 2)
• ドメイン定義 「FID」 IN CDD
D ,C=1,D= 十進数 「教授名」 IN CHAR( 30) 「クラス」 IN CHAR( 10) 「SID」 IN CDDD ,C≠1,
D=十進数 「学生名」 IN CHAR( 30)
ドメイン /キー正規形の例( 2)
• リレーションとキーの定義 『教授』(「FID」、「教授名」) キー(主):「FID」 キー(候補):「教授名」 →「FID」と「教授名」の同一性を
示す。 どちらのアトリビュートもリレーションにおいてユニークである!
ドメイン /キー正規形の例( 2)
• 『授業担当』(「教授名」、「クラス」) キー:「教授名」、「クラス」 →教授は複数のクラスで教えるため、両
方のアトリビュートがキーに必要である。 『学生』(「SID」、「学生名」、「教授名」 キー:「SID」• これらのリレーションは制約条件をドメインとキー定義の論理的帰結としている。ゆえにこれらのリレーションはDK / NFである。
ドメイン /キー正規形の例( 3)
• 『学生ー指導教授』(「SID」、「学生名」、「FID」、「教授名」、「教授区分」)
• キー:「SID」• 制約条件:「FID」→「教授名」 「教授名」→「FID」 「FID」と「教授名」→「教授区分」 大学教授のみが大学院生を指導可能 「FID」は1で始まる。「SID」は1で始まっ
てはいけない。 大学院生の「SID」は 9 で始まる。 「教授区分」=0(学部教授) 1(大学院教授)
ドメイン /キー正規形の例( 3)
• ドメイン定義 「FID」 IN CDDD , C
=1 , D=十進数 「教授名」 IN CHAR( 30) 「教授区分」 IN [0 ,1 ] 「GSID」 IN CDD
D ,C=9,D= 十進数 , 大学院生 「UGSID」 IN CDDD ,C≠1 ,
C≠ 9,D≠ 十進数 ,学部学生 「学生名」 IN CHAR( 30)