Top Banner
第第第第第第第第第第第 第第第 第第第第第第第第第第第第
70

第5章リレーションモデルと 正規形

Jan 26, 2016

Download

Documents

Nigel

第5章リレーションモデルと 正規形. 夢見るからあげサンチーム. 本日の担当箇所. 5-3 第一正規形~第五正規形. すこしおさらい. 正規形は更新時異常といった問題を解決するために考えられたものである 正規形は前のバージョンの異常を補う形で新しい正規形ができている。 第一正規形の条件は  すべての正規形の条件に含まれる 何も異常をもたないのはドメイン / キー正規形 それ以外は何らかの異常をもつ正規形. 第一正規形の定義. 各セルが単一の値を持っている すべての列の項目はそれぞれ同じ種類 各列はユニークな値を持つ 列の順番は重要ではない - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 第5章リレーションモデルと 正規形

第5章リレーションモデルと正規形

夢見るからあげサンチーム

Page 2: 第5章リレーションモデルと 正規形

本日の担当箇所章 タイトル 担当者

5.3章 第一正規形と第五正規形

上田

5. 4章 ドメイン /キー正規形

三河

Page 3: 第5章リレーションモデルと 正規形

5-3第一正規形~第五正規形

Page 4: 第5章リレーションモデルと 正規形

すこしおさらい• 正規形は更新時異常といった問題を解決するために考えられたものである

• 正規形は前のバージョンの異常を補う形で新しい正規形ができている。

• 第一正規形の条件は すべての正規形の条件に含まれる• 何も異常をもたないのはドメイン /キー正規形

• それ以外は何らかの異常をもつ正規形

Page 5: 第5章リレーションモデルと 正規形

第一正規形の定義• 各セルが単一の値を持っている• すべての列の項目はそれぞれ同じ種類• 各列はユニークな値を持つ• 列の順番は重要ではない• どの行も同一であってはならない• 行の順番は重要ではない

Page 6: 第5章リレーションモデルと 正規形

図 5-3(p143参照)SID 課外活動 料金

100 Skiing 200

150 swimming 50

175 squash 50

200 swimming 50

Page 7: 第5章リレーションモデルと 正規形

まとめ• この第一正規形の定義は5 .1(p .140)に書かれているリレーションであるための定義と同じ

• つまり、第一正規形はリレーションの定義に合致するあらゆるデータの表のことをいう

Page 8: 第5章リレーションモデルと 正規形

第二正規形• すべてのキーでないアトリビュートがキーのすべてに依存するときにリレーションは第二正規形であると言う

Page 9: 第5章リレーションモデルと 正規形

おさらい• キー →行を識別するひとつ以上の アトリビュートのグループ(常にユニーク)

• 関数依存性→アトリビュート間の関連性  Aが Bを決定するもの ユニークである必要はない (図 5-4でいえば活動名がわかることによって料金がわかる)

Page 10: 第5章リレーションモデルと 正規形

図 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

Page 11: 第5章リレーションモデルと 正規形

図 5-4の異常• 175番に関するタップルを消そうとするとスカッシュが 50ドルという情報が消えてしまう

• また、学生がある活動に参加するまでは、その活動を入力できない

• ゆえに削除時異常と挿入時異常の  2つの異常をもっている。

Page 12: 第5章リレーションモデルと 正規形

異常がおこる原因• 図 5-4のキーは(「 SID 」、「活動」)複合キー

• 依存性は(「活動」→「料金」)• (「 SID」と「料金」)には関係性がない• この形はテーブルのキーに 部分的に依存してる(2つのキーのうち活動だけに依存している)

Page 13: 第5章リレーションモデルと 正規形

解決策• 「料金」がキーのすべてに依存するのであれば、更新時異常は生じない

• だから 2つのリレーションに分割

Page 14: 第5章リレーションモデルと 正規形

第2正規形とは・・• すべてのキーでないアトリビュートがキーのすべてに依存するときにリレーションは第二正規形であると言う

Page 15: 第5章リレーションモデルと 正規形

図 5-5( p.146)

「 SID 」 「課外活動」

100 Skiing

150 Swimming

175 Squash

200 Swimming

「課外活動」 「料金」

Skiing 200

Swimming 50

Squash 50

Page 16: 第5章リレーションモデルと 正規形

ほそく• 図 5-5はどちらも単一のアトリビュートをもつので第2正規形である

Page 17: 第5章リレーションモデルと 正規形

第3正規形• 第2正規形であり、かつ推移的依存性を持たないときに第 3正規形となる

Page 18: 第5章リレーションモデルと 正規形

推移依存性とは• 「 SID 」が「寮」を推移して「料金」を決定するようなことを推移依存性と呼ぶ

Page 19: 第5章リレーションモデルと 正規形

図 5-7(p.150)

「 SID 」 「寮」 「料金」

100 Randolph 1200

150 Ingersoll 1100

200 Randolph 1200

250 Pitkin 1100

300 Randolph 1200

Page 20: 第5章リレーションモデルと 正規形

• この推移性ゆえに「 SID 」という単一のアトリビュートがキーとなり、リレーションは第 2正規形となる。

• すべてのキーでないアトリビュートがキーのすべてに依存しているので第 2正規形の条件は満たしている。

Page 21: 第5章リレーションモデルと 正規形

図 5-7(p.150)

「 SID 」 「寮」 「料金」

100 Randolph 1200

150 Ingersoll 1100

200 Randolph 1200

250 Pitkin 1100

300 Randolph 1200

Page 22: 第5章リレーションモデルと 正規形

第2正規形での異常• 削除時異常と挿入時異常• 2 番目のタップルを削除すると 150 番目

の学生が Ingersoll Hall という情報とそこにすむための1500ドルの料金情報が消えてしまう

• Carrigg Hall が 1500 ドルであるという事実を記録するには学生がその寮に入ろうとするまではこの作業は行えない。

Page 23: 第5章リレーションモデルと 正規形

異常を解決するために• 第 2正規形のリレーションからこの異常を解消するためには、推移的依存性を削除する必要がある。

Page 24: 第5章リレーションモデルと 正規形

第3正規形• 第2正規形であり、かつ推移的依存性を持たないときに第 3正規形となる

• すべてのキーでないアトリビュートがキーのすべてに依存しかつ、推移的依存性を持たないもの(第 2正規形は複合キーの話)

Page 25: 第5章リレーションモデルと 正規形

「 SID 」 「寮」

100 Randolph

150 lngersoll

200 Randolph

250 Pitkin

300 Randolph

「寮」 「料金」

Randolph 1200

Ingersoll 1100

Pitkin 1200

Page 26: 第5章リレーションモデルと 正規形

5.3.3   Boyce-Codd 正規形

• すべての決定項が候補キーである場合に、リレーションは BCNFである。

Page 27: 第5章リレーションモデルと 正規形

図 5-8 p.151

「 SID 」 「専攻」 「教授名」100 Math Cauchy

150 Psychology Jung

200 Math Riemann

2 50 Math Cauchy

300 Psychology Perls

300 Math Riemann

Page 28: 第5章リレーションモデルと 正規形

リレーションの要件• (「 SID」)は一つ以上の専攻をもつ• 1つの専攻には複数の教授(「教授名」)• 1人の教授(「教授名」)はただ 1つの専攻分野

Page 29: 第5章リレーションモデルと 正規形

つまり• 「 SID 」は「専攻」を決定しない• 「 SID 」は「教授名」も決定しない• ゆえに「 SID 」は単独キーになりえない

Page 30: 第5章リレーションモデルと 正規形

キー• (「 SID 」、「専攻」)という組み合わせは  「教授名」を決定• (「 SID、「教授名」)という組み合わせは  「専攻」を決定• ゆえにどちらの組み合わせもキーになりえる

Page 31: 第5章リレーションモデルと 正規形

候補キー• キーになりえる複数のアトリビュートないしアトリビュートの集合を候補キーと呼ぶ。

• 候補キーからキーとして選択されたものを 主キーと呼ぶ

Page 32: 第5章リレーションモデルと 正規形

正規形• 教授名と専攻には依存性→第一正規形• アトリビュートはキー全体に依存している

 →第二正規形• 推移的依存性が存在しない→第三正規形

Page 33: 第5章リレーションモデルと 正規形

図 5-8 p.151

「 SID 」 「専攻」 「教授名」100 Math Cauchy

150 Psychology Jung

200 Math Riemann

2 50 Math Cauchy

300 Psychology Perls

300 Math Riemann

Page 34: 第5章リレーションモデルと 正規形

このリレーションでのエラー• 300番の学生が退学したとき、学生300のタップルを削除すると Pal教授が心理学を教えている事実も消える→削除時異常

• Keynes教授の事実も同様• ある学生が経済学を専攻するまでは、保管を行うことができない→挿入時異常

Page 35: 第5章リレーションモデルと 正規形

エラーの要因• 決定項である「教授名」が候補キーでない• 候補キーに決定項が含まれてない場合、今回のように専攻名が消えたときに一緒に教授の事実が消えてしまう。

• それを防ぐため候補キーは決定項を含むという条件が追加された。

Page 36: 第5章リレーションモデルと 正規形

解決策• それを防ぐため候補キーは決定項を含むという条件が追加された。

• 候補キーが決定項ならたとえば今回の場合学生と専攻名が消えても教授がどこに所属しているかという事実は残る→専攻名の事実は残る。(教授は専攻を1つしか選べない)

Page 37: 第5章リレーションモデルと 正規形

第三正規形と BCNF正規形• 形はほとんど同じである• 第三正規形は候補キーが決定項でなくても ok

• BCNF正規形は候補キーが決定項じゃないとダメ

Page 38: 第5章リレーションモデルと 正規形

BCNF正規形• すべての決定項が候補キーである場合に、リレーションは BCNFである。

Page 39: 第5章リレーションモデルと 正規形

第四正規形• BCNFであり、かつ多値依存性を持たない場合は、そのリレーションは第四正規形である

Page 40: 第5章リレーションモデルと 正規形

p.154図 5-10

「 SID 」 「専攻」 「活動」

100 Music Swimming

100 Accounting Swimming

100 Music Tennis

100 Accounting Tennis

150 Math Jogging

Page 41: 第5章リレーションモデルと 正規形

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

Page 42: 第5章リレーションモデルと 正規形

多値依存性• 「 SID 」の単一の値が多くの「専攻」の値をもつ

• 「 SID 」の単一の値が多くの「活動」の値をもつ

• 一般にリレーションが最低三つのアトリビュートを持ち、そのうち二つが多値でありかつ、その値が第3のアトリビュートに依存するとき、多値依存性が存在する。

Page 43: 第5章リレーションモデルと 正規形

数値でいいなおすと• リレーション R( A,B,C)において Aが Bの複数の値を決定し、 Aが Cの値を決定し Bと Cが互いに独立であるときに多値依存性が存在する。

• 「 SID 」が「専攻」の複数の値を決定し、「SID」が「活動」の複数の値を決定し「専攻」と「活動」が互いに独立である

Page 44: 第5章リレーションモデルと 正規形

このリレーションの問題点1• データをより少ない項目にしたい場合に行を減らしたら誤解を招きやすくなる (音楽を専攻してるときだけ水泳を行うようにみえる)

Page 45: 第5章リレーションモデルと 正規形

このリレーションの問題点2• 専攻と活動が選べる場合、活動が1つ増えたら複数の専攻に項目をふやさないといけない つまり単純な変更のために多くの更新を行わないといけない→更新時異常

Page 46: 第5章リレーションモデルと 正規形

• すべてのアトリビュートがキー→第二正規形

• 推移的依存性を持たない→第三正規形• キーでない決定項を持たない→ BC正規形      なのに異常をもつ

Page 47: 第5章リレーションモデルと 正規形

異常をなくすために• 多値依存性をなくす必要がある• 多値アトリビュートの一方のみのデータを保管する2つのリレーションを構築する

Page 48: 第5章リレーションモデルと 正規形

P.155図 5-11

「 SID 」 「専攻」

100 Music

100 Accounting

150 Main

「 SID 」 「活動」

100 Skiing

100 Swimming

100 Tennis

150 Jogging

Page 49: 第5章リレーションモデルと 正規形

第四正規形• BCNFであり、かつ多値依存性を持たない場合は、そのリレーションは第四正規形である

Page 50: 第5章リレーションモデルと 正規形

第五正規形• 第 5正規形は、元になるテーブルの結合

従属性を維持して分解することにより得られます。結合従属性とは、分解後の表を結合すると元の表に戻ることで、第 5正規化に限らず正規化はすべて、結合従属性を維持した分解を行います。なぜなら、結合従属性を失うことは元のデータの整合性を失うことになるからです。

Page 51: 第5章リレーションモデルと 正規形

SID 名前 専攻 住所 電話番号

星座

Page 52: 第5章リレーションモデルと 正規形

分解するわけ• データが全部そろわないと更新できないから

• 第 5正規化を行うと、テーブルに含まれる関連が 1つだけになり、組み合わせが決まるごとに登録できるようになる

Page 53: 第5章リレーションモデルと 正規形

まとめ• 第1 NF→リレーションであるための定義• 第2 NF→すべてのキーでないアトリビュートがキーのすべてに依存するときにリレーション

• 第3 NF→第2正規形であり、かつ推移的依存性を持たないときに第 3正規形となる

• BCNF→すべての決定項が候補キー• 第 4NF→ BCNFであり、かつ多値依存性を持たない

Page 54: 第5章リレーションモデルと 正規形
Page 55: 第5章リレーションモデルと 正規形

定義• ドメイン・キー正規形では、すべての制

約条件はドメインとキー制約の結果として生じるものでなければならない。

• この定義における重要な用語① 制約条件②キー③ドメイン について考察する。

Page 56: 第5章リレーションモデルと 正規形

ドメイン /キー正規形• 1981 年に R.Fagin はドメイン / キー正規

形の定義を行った。 ードメイン / キー正規形のリレーション

は更新異常を持たない。 ー更新異常を持たないリレーションはド

メイン / キー正規形でなければならない。• 正規形の定義の上限が設定され、更新異

常を防ぐための高位の正規形を、定義する必要がなくなった!

Page 57: 第5章リレーションモデルと 正規形

定義 ①制約条件とは?

• アトリビュートの静的値を制御するルールで、真か偽かを明確に述べることができるもの。

• 編集ルール、リレーション内制約ルール、リレーション間制約条件、関数依存性、多値依存性など。

• 時間に依存する制約条件は除外。

Page 58: 第5章リレーションモデルと 正規形

定義 ②キーとは?• タップル (行)のユニークな識別子。

SID 学年 寮100 1 Randolph

150 1 Ingersoll

200 2 Randolph

250 2 Pitkin

300 3 Randolph

Page 59: 第5章リレーションモデルと 正規形

定義 ③ドメインとは?• アトリビュートの持ち得る値の記述。• 物理的記述と論理的記述を持つ。• 物理的記述はアトリビュートの持ち得る値の集合であり、論理的記述はアトリビュートの持つ意味である。

Page 60: 第5章リレーションモデルと 正規形

定義• キーとドメインの制限を強制することにより、すべての制約条件が満足されるならば、リレーションはドメイン /キー正規形となる。

• ドメイン /キー正規形のリレーションは更新異常を持たないので、 DBMSの更新異常も防止することができる。

Page 61: 第5章リレーションモデルと 正規形

ドメイン /キー正規形の例(1)

• 『学生』リレーション(「SID」、「学年」、「寮」、「寮費」)

• キー:「SID」• 制約条件:「建物」 → 「寮費」        SIDは1で始まってはいけない。→ドメインをこの制約条件を含むよう定義する!

Page 62: 第5章リレーションモデルと 正規形

ドメイン /キー正規形の例(1)

• ドメイン定義  「SID」  IN CDDD ,Cは1以外の数、

Dは十進数  「学年」  IN {‘FR’ ,’ SO’ ,’JR’ ,’

SN’ ,’ GR’} 「寮」 IN CHAR(4)  「寮費」 IN  DEC(4)• リレーションとキーの定義 『学生』(「SID」 ,「学年」 ,「寮」) キー:「SID」

Page 63: 第5章リレーションモデルと 正規形

ドメイン /キー正規形の例(1)

• 『寮ー料金』 (「寮」 , 『寮費」 )

キー: 「寮」→ この新規リレーションの作成により、

『学生』から「寮費」を削除可能になる!

Page 64: 第5章リレーションモデルと 正規形

ドメイン /キー正規形の例( 2)

• 『教授』(「FID」、「教授名」、「クラス」、「SID」、「学生名」

• キー:「FID」、「クラス」、「SID」)• 制約条件:「FID」→「教授名」        「教授名」→「FID」        「FID」→→「クラス」 | 「SID」        「教授名」→→「クラス」 | 「SID」        「SID」→「FID」        「SID」→「教授名」        「SID」→「学生名」   FIDは1で始まる。SIDは1で始まってはいけない。

Page 65: 第5章リレーションモデルと 正規形

ドメイン /キー正規形の例( 2)

• ドメイン定義 「FID」    IN CDD

D ,C=1,D= 十進数 「教授名」  IN CHAR( 30) 「クラス」   IN CHAR( 10) 「SID」    IN CDDD ,C≠1,

D=十進数 「学生名」  IN CHAR( 30)

Page 66: 第5章リレーションモデルと 正規形

ドメイン /キー正規形の例( 2)

• リレーションとキーの定義  『教授』(「FID」、「教授名」)  キー(主):「FID」  キー(候補):「教授名」  →「FID」と「教授名」の同一性を

示す。 どちらのアトリビュートもリレーションにおいてユニークである!

Page 67: 第5章リレーションモデルと 正規形

ドメイン /キー正規形の例( 2)

• 『授業担当』(「教授名」、「クラス」)  キー:「教授名」、「クラス」   →教授は複数のクラスで教えるため、両

方のアトリビュートがキーに必要である。  『学生』(「SID」、「学生名」、「教授名」  キー:「SID」• これらのリレーションは制約条件をドメインとキー定義の論理的帰結としている。ゆえにこれらのリレーションはDK / NFである。

Page 68: 第5章リレーションモデルと 正規形

ドメイン /キー正規形の例( 3)

• 『学生ー指導教授』(「SID」、「学生名」、「FID」、「教授名」、「教授区分」)

• キー:「SID」• 制約条件:「FID」→「教授名」        「教授名」→「FID」        「FID」と「教授名」→「教授区分」      大学教授のみが大学院生を指導可能  「FID」は1で始まる。「SID」は1で始まっ

てはいけない。  大学院生の「SID」は 9 で始まる。  「教授区分」=0(学部教授)           1(大学院教授)

Page 69: 第5章リレーションモデルと 正規形

ドメイン /キー正規形の例( 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)

Page 70: 第5章リレーションモデルと 正規形

ドメイン /キー正規形の例( 3)

• リレーションとキーの定義 FACULTY(「FID」 ,「教授名」 ,「教授区分」 キー:「FID」か「教授名」

 G-ADV(「GSID」 ,「学生名」 ,「大学院教授名」) キー:「GSID」

 UG-ADV(「UGSID」 ,「学生名」 ,「教授名」) キー:「UGSID」