700 likes | 809 Views
第5章リレーションモデルと 正規形. 夢見るからあげサンチーム. 本日の担当箇所. 5-3 第一正規形~第五正規形. すこしおさらい. 正規形は更新時異常といった問題を解決するために考えられたものである 正規形は前のバージョンの異常を補う形で新しい正規形ができている。 第一正規形の条件は すべての正規形の条件に含まれる 何も異常をもたないのはドメイン / キー正規形 それ以外は何らかの異常をもつ正規形. 第一正規形の定義. 各セルが単一の値を持っている すべての列の項目はそれぞれ同じ種類 各列はユニークな値を持つ 列の順番は重要ではない
E N D
第5章リレーションモデルと正規形 夢見るからあげサンチーム
すこしおさらい • 正規形は更新時異常といった問題を解決するために考えられたものである • 正規形は前のバージョンの異常を補う形で新しい正規形ができている。 • 第一正規形の条件は すべての正規形の条件に含まれる • 何も異常をもたないのはドメイン/キー正規形 • それ以外は何らかの異常をもつ正規形
第一正規形の定義 • 各セルが単一の値を持っている • すべての列の項目はそれぞれ同じ種類 • 各列はユニークな値を持つ • 列の順番は重要ではない • どの行も同一であってはならない • 行の順番は重要ではない
まとめ • この第一正規形の定義は5.1(p.140)に書かれているリレーションであるための定義と同じ • つまり、第一正規形はリレーションの定義に合致するあらゆるデータの表のことをいう
第二正規形 • すべてのキーでないアトリビュートがキーのすべてに依存するときにリレーションは第二正規形であると言う
おさらい • キー →行を識別するひとつ以上の アトリビュートのグループ(常にユニーク) • 関数依存性→アトリビュート間の関連性 AがBを決定するもの ユニークである必要はない (図5-4でいえば活動名がわかることによって料金がわかる)
図5-4の異常 • 175番に関するタップルを消そうとするとスカッシュが50ドルという情報が消えてしまう • また、学生がある活動に参加するまでは、その活動を入力できない • ゆえに削除時異常と挿入時異常の 2つの異常をもっている。
異常がおこる原因 • 図5-4のキーは(「SID」、「活動」)複合キー • 依存性は(「活動」→「料金」) • (「SID」と「料金」)には関係性がない • この形はテーブルのキーに 部分的に依存してる (2つのキーのうち活動だけに依存している)
解決策 • 「料金」がキーのすべてに依存するのであれば、更新時異常は生じない • だから2つのリレーションに分割
第2正規形とは・・ • すべてのキーでないアトリビュートがキーのすべてに依存するときにリレーションは第二正規形であると言う
ほそく • 図5-5はどちらも単一のアトリビュートをもつので第2正規形である
第3正規形 • 第2正規形であり、かつ推移的依存性を持たないときに第3正規形となる
推移依存性とは • 「SID」が「寮」を推移して「料金」を決定するようなことを推移依存性と呼ぶ
この推移性ゆえに「SID」という単一のアトリビュートがキーとなり、リレーションは第2正規形となる。この推移性ゆえに「SID」という単一のアトリビュートがキーとなり、リレーションは第2正規形となる。 • すべてのキーでないアトリビュートがキーのすべてに依存しているので第2正規形の条件は満たしている。
第2正規形での異常 • 削除時異常と挿入時異常 • 2番目のタップルを削除すると150番目の学生がIngersoll Hallという情報とそこにすむための1500ドルの料金情報が消えてしまう • Carrigg Hallが1500ドルであるという事実を記録するには学生がその寮に入ろうとするまではこの作業は行えない。
異常を解決するために • 第2正規形のリレーションからこの異常を解消するためには、推移的依存性を削除する必要がある。
第3正規形 • 第2正規形であり、かつ推移的依存性を持たないときに第3正規形となる • すべてのキーでないアトリビュートがキーのすべてに依存しかつ、推移的依存性を持たないもの(第2正規形は複合キーの話)
5.3.3Boyce-Codd正規形 • すべての決定項が候補キーである場合に、リレーションはBCNFである。
リレーションの要件 • (「SID」)は一つ以上の専攻をもつ • 1つの専攻には複数の教授(「教授名」) • 1人の教授(「教授名」)はただ1つの専攻分野
つまり • 「SID」は「専攻」を決定しない • 「SID」は「教授名」も決定しない • ゆえに「SID」は単独キーになりえない
キー • (「SID」、「専攻」)という組み合わせは 「教授名」を決定 • (「SID、「教授名」)という組み合わせは 「専攻」を決定 • ゆえにどちらの組み合わせもキーになりえる
候補キー • キーになりえる複数のアトリビュートないしアトリビュートの集合を候補キーと呼ぶ。 • 候補キーからキーとして選択されたものを 主キーと呼ぶ
正規形 • 教授名と専攻には依存性→第一正規形 • アトリビュートはキー全体に依存している →第二正規形 • 推移的依存性が存在しない→第三正規形
このリレーションでのエラー • 300番の学生が退学したとき、学生300のタップルを削除するとPal教授が心理学を教えている事実も消える→削除時異常 • Keynes教授の事実も同様 • ある学生が経済学を専攻するまでは、保管を行うことができない→挿入時異常
エラーの要因 • 決定項である「教授名」が候補キーでない • 候補キーに決定項が含まれてない場合、今回のように専攻名が消えたときに一緒に教授の事実が消えてしまう。 • それを防ぐため候補キーは決定項を含むという条件が追加された。
解決策 • それを防ぐため候補キーは決定項を含むという条件が追加された。 • 候補キーが決定項ならたとえば今回の場合学生と専攻名が消えても教授がどこに所属しているかという事実は残る→専攻名の事実は残る。(教授は専攻を1つしか選べない)
第三正規形とBCNF正規形 • 形はほとんど同じである • 第三正規形は候補キーが決定項でなくてもok • BCNF正規形は候補キーが決定項じゃないとダメ
BCNF正規形 • すべての決定項が候補キーである場合に、リレーションはBCNFである。
第四正規形 • BCNFであり、かつ多値依存性を持たない場合は、そのリレーションは第四正規形である
多値依存性 • 「SID」の単一の値が多くの「専攻」の値をもつ • 「SID」の単一の値が多くの「活動」の値をもつ • 一般にリレーションが最低三つのアトリビュートを持ち、そのうち二つが多値でありかつ、その値が第3のアトリビュートに依存するとき、多値依存性が存在する。
数値でいいなおすと • リレーションR(A,B,C)においてAがBの複数の値を決定し、AがCの値を決定しBとCが互いに独立であるときに多値依存性が存在する。 • 「SID」が「専攻」の複数の値を決定し、「SID」が「活動」の複数の値を決定し「専攻」と「活動」が互いに独立である
このリレーションの問題点1 • データをより少ない項目にしたい場合に行を減らしたら誤解を招きやすくなる (音楽を専攻してるときだけ水泳を行うようにみえる)
このリレーションの問題点2 • 専攻と活動が選べる場合、活動が1つ増えたら複数の専攻に項目をふやさないといけない つまり単純な変更のために多くの更新を行わないといけない→更新時異常
すべてのアトリビュートがキー→第二正規形 • 推移的依存性を持たない→第三正規形 • キーでない決定項を持たない→BC正規形 なのに異常をもつ
異常をなくすために • 多値依存性をなくす必要がある • 多値アトリビュートの一方のみのデータを保管する2つのリレーションを構築する
第四正規形 • BCNFであり、かつ多値依存性を持たない場合は、そのリレーションは第四正規形である
第五正規形 • 第5正規形は、元になるテーブルの結合従属性を維持して分解することにより得られます。結合従属性とは、分解後の表を結合すると元の表に戻ることで、第5正規化に限らず正規化はすべて、結合従属性を維持した分解を行います。なぜなら、結合従属性を失うことは元のデータの整合性を失うことになるからです。