Chapter functional dependencies
This presentation is the property of its rightful owner.
Sponsored Links
1 / 42

Chapter 11 Functional Dependencies (関数従属性) PowerPoint PPT Presentation


  • 131 Views
  • Uploaded on
  • Presentation posted in: General

Chapter 11 Functional Dependencies (関数従属性). 寺田 純子. 11.1 Introduction. 関数従属( Functional Dependencies )とは  ある関係において、属性のある集合から他の集合への多対1の関連 である ※ 以下 FD と略す 図3.8  SP. 11.2 基本的な定義. S #、 P# 、 QTY に関連した納入業者が関連する都市を表す属性 CITY を加えた関係 → SCP 図11.1関係 SCP. 関数従属性の概念. Case a ある時点におけるある関係の値

Download Presentation

Chapter 11 Functional Dependencies (関数従属性)

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Chapter functional dependencies

Chapter11Functional Dependencies(関数従属性)

寺田 純子

presented by junko


11 1 introduction

11.1Introduction

  • 関数従属(Functional Dependencies)とは

     ある関係において、属性のある集合から他の集合への多対1の関連

    である※以下FDと略す

  • 図3.8 SP

presented by junko


Chapter functional dependencies

11.2 基本的な定義

  • S#、P#、QTYに関連した納入業者が関連する都市を表す属性CITYを加えた関係

    →SCP

    図11.1関係SCP

presented by junko


Chapter functional dependencies

関数従属性の概念

  • Case a

    ある時点におけるある関係の値

    (→関係変数)

  • Case b

    その関係変数が様々な時点で取り得る全ての値の集合

拡張

presented by junko


Case a

Case a

  • R: 関係

  • X,Y: Rの属性集合の任意の部分集合

    R上の全てのXの値について、これと関連するYの値がただ一つ存在するとき、かつそのときに限り、YはXに関数的に従属である

    “X → Y”

R

X

Y

x

y

presented by junko


Chapter functional dependencies

関係SCPのFD

  • { S# }    →  { CITY }

  • { S#, P# }  →  { QTY }

  • { S#, P# }  →  { CITY }

  • { S#, P# }  →  { CITY, QTY }

  • { S#, P# }  →  { S# }

  • { S#, P# }  →  { S#, P#, CITY, QTY }

  • { S# }    →  { QTY }

  • { QTY }   →  { S# }

      決定項従属項  

presented by junko


Chapter functional dependencies

  • ある時点で変数が持っている値について

     たまたま成り立つFDには興味が無い

  • その変数が取り得る全ての値に対して成り立つFD

興味があるのは・・・

presented by junko


Case case a

Case b (Case aの拡張)

  • R:関係変数

  • X,Y:Rの属性集合の任意の部分集合

    Rが取り得る全ての正当な値において、ただ一つのYの値と関連するとき、かつそのときに限り、Yは関数的にXに従属している

    “X → Y”

presented by junko


Chapter functional dependencies

時間独立なFD

  • 関数従属性 = 時間独立

    time-independent

  • 関係SCPの時間独立なFD

    • { S#, P# }  →  QTY

    • { S#, P# }  →  CITY

    • { S#, P# }  →  { CITY, QTY }

    • { S#, P# }  →  S#

    • { S#, P# }  →  { S#, P#, CITY, QTY }

    • { S# }     →  CITY

presented by junko


Chapter functional dependencies

  • 次のFDは、図11.1では成り立つが、

     いつも成り立つわけではない

    • S#  →  QTY

    • QTY →  S#

      “ある納入業者に関する全ての出荷は同じ出荷量を持つ”

      SCPが取り得る全ての正当な値に

            対しては成り立たない

presented by junko


Chapter functional dependencies

必然的な従属

  • Xが関係Rの候補キー(特に主キー)であるならば、関係Rの全ての属性Yは必然的にXに従属する  候補キーの定義より生じる

    P# → { P#、PNAME、COLOR、WHIGHT、CITY}

    ※候補キー(Chapter9より)

    • 一意に識別できる

    • 非冗長

presented by junko


Chapter functional dependencies

本章の目的

  • ある関係が取り得る全ての正当な値が満たすFDの集合は、非常に大きいはず!

  • その集合を扱いやすいサイズに簡略化する方法を見つける

そこで、

本章の目的 は・・・

presented by junko


Chapter functional dependencies

目的の理由

  • FDが完全性制約と関係するため、DBMSが更新を実行するときにFDを検査する必要がある

    • 完全性制約:データが間違っていたり,データ間で矛盾    がない事を保証するための条件

presented by junko


Chapter functional dependencies

FDの検査

あるFDの集合Sに対して、Sより十分小さく、Sのあら

ゆるFDを表現する別の集合Tを見つける

DBMSが集合Tの中のFDを検査

自動的にSの中のFDも検査したことになる

  集合Tを見つけることは非常に現実的

presented by junko


Chapter functional dependencies

9.3 自明/自明でない従属

  • 自明・・・従属性が満たされないことはあり得      ない場合

         { S#, P# }  →  S#

    右辺が左辺の部分集合    FDは自明

presented by junko


Chapter functional dependencies

9.4 従属集合の閉包

  • FDのある集合Sによって暗示される全てのFDの集合をSの閉包(closure)という

    S+

    { S#, P# }  →  { CITY, QTY } ー 

    { S#, P# }  →  CITY

    { S#, P# }  →  QTY

S

S+

presented by junko


Chapter functional dependencies

推移FDの例

  • 関係R上の三つの属性A,B,CがR上で

    FD : A  →  B

    FD : B  →  C

    を満たしている

  • この場合

    FD : A  →  C

    もR上で成り立つ

    CはB経由でAに推移的に従属している

presented by junko


Chapter functional dependencies

アームストロングの論文

  • SからS+を計算する方法が必要

    アームストロングの論文

    • 最初の取り組み

    • あるFDから新しいFDを推論する

    • 一連の推論規則(アームストロングの公理)

presented by junko


Chapter functional dependencies

アームストロングの推論の規則

  • A、B、Cをある関係Rの属性集合の任意の部分集合とする

  • ABはAとBの和を意味する

    1.反射 Reflexivity:BがAの部分集合ならば A →B

    2.増加 Augmentation:A→Bならば AC → BC

    3.推移 Transitivity:A→BでB→Cならば A→C

presented by junko


Chapter functional dependencies

アームストロングの規則について

  • これらの規則は、それぞれ関数従属から直ちに証明できる

  • FDのある集合Sにおいて、Sによって暗示される全てのFDが導き出される→complete(完備)

  • 追加のFDは導き出されない→sound(健全)

    この規則は正確に閉包S+を導き出すことができる

presented by junko


Chapter functional dependencies

追加規則

4.自己決定 Self-determination:A → A

5.分解 Decomposition:A→BCならば

A→BかつA→C

6.和 Union:A→BかつA→CならばA→BC

7.合成 Composition:A→BかつC→DならばAC→BD

presented by junko


Darwen

Darwenの規則

  • Darwenは次の規則を示し、一般的な単一化定理と呼んでいる

    8.A→BかつC→DならばA∨(C-B) → BD

    (“∨”は和を、“ー”は集合の差を表す)

presented by junko


Darwen1

一般的な単一化定理(Darwenの規則)

例:属性A、B、C、D、E、FとFD

A  →  BC(BC:属性Bと属性Cからなる集合)

B  →  E

CD →  EF

『FD:AD→FはR上で成り立ち、その集合の閉包の一部である』

証:1.A  →  BC (与えられたもの)

2.A  →  C  (1の分解)

3.AD → CD  (2の増加)

4.CD → EF  (与えられたもの)

5.AD → EF  (3と4の推移)

6.AD →  F  (5の分解)

presented by junko


Chapter functional dependencies

9.5 属性集合の閉包

  • あるFDが閉包かどうかを判別するための有効な手段を示す

  • 関係Rのスーパーキー

    • Rの候補キーを部分集合として少なくとも一つ持つRの属性集合

    • 関数従属性 K→A がRの全ての属性Aに対して成り立つようなRの属性集合の部分集合K

  • 属性集合Kがスーパーキーかの判別はKが候補キーであるかの判別の大きなステップ

    (候補キー=最小のスーパーキー)

presented by junko


Chapter functional dependencies

  • Kがスーパーキーか?

    • Kに関数的に従属している全ての属性集合が、本当にRの全ての属性集合か

    • R上で成り立つ集合SのもとでのKの閉包K+を判別する方法が必要

presented by junko


Chapter functional dependencies

閉包K+の計算アルゴリズム

CLOSURE[K,S] := K ;

Do “forever” ;

for each FD x → y in S

do ;

if X is a subset of CLOSURE[K,S]

then CLOSURE[K,S] := CLOSURE[K,S] UNION Y ;

end ;

if CLOSURE[K,S] did not change on this iteration

then leave the loop ;

End;

presented by junko


Chapter functional dependencies

例:属性A、B、C、D、E、FとFD

A  →  BC

E  →  CF

B  →  E

CD  →  EF

をもつ関係Rがあるとする

FDのこの集合への属性集合{A、B}の閉包{A、B}+を

計算する

presented by junko


Chapter functional dependencies

閉包の計算

1.{A,B}の閉包を格納する変数CLOSURE[K,S]を初期化

2.与えられたFDにつき1回、計4回内側のループを回す

最初の反復(A→BC):左辺=計算したCLOSURE[K、S]の部分集合

→属性(Bと)Cを結果に加える

→CLOSURE[K,S]を集合{A,B、C}とする

3.2回目の反復(E→CF):左辺≠計算した結果の部分集合

→変化なし

4.3回目の反復(B→E):CLOSURE[K,S]にEを加える

5.4回目の反復(CD→EF):CLOSURE[K,S]変化なし

6.再び4回内側のループを回す

1,3,4回目-変化なし 、 2回目-{A、B、C、E、F}へ拡張

7.再び4回内側のループを回す

→CLOSURE[K,S]変化なし

→{A,B}+={A,B,C,E,F}           終結

∴{A,B}はスーパーキーでない(候補キーでもない)

presented by junko


Chapter functional dependencies

9.6 従属の規約集合

  • S1とS2を二つの集合とする

  • S1+がS2+の部分集合ならば、S2はS1のcover(被覆)という

  • S2がS1のcoverであり、S1がS2のcoverであるならば(S1+=S2+)、S1とS2は等価である

presented by junko


Irreducible

既約 irreducible

  • 次の三つの性質を満たすとき、かつそのときに限り、FDの集合Sは既約( irreducible )であると定義する

    1.Sの全てのFDの右辺はただ一つの属性を持つ

    2.Sの全てのFDの左辺は既約である

    3.閉包を変えることなしには、SからどのFDも取り

    去ることはできない

presented by junko


Chapter functional dependencies

既約の性質

  • 既約の性質の例として部品関係Pを考える

    次のFDはその関係内で成り立つ

    P#  →  PNAME

    P#  →  COLOR

    P#  →  WEIGHT

    P#  →  CITY

    FDのこの集合は、簡単に既約であることが分かる

    • 右辺は単一属性

    • 左辺は明らかに既約

    • 閉包を変更しない限りどのFDも取り除くことはできない

presented by junko


Chapter functional dependencies

既約の性質(1)

  • Sの全てのFDの右辺(従属項)はただ一つの属性を持つ → 単項集合

    <既約ではない例(1)>

    ① P#  →  {PNAME、COLOR}

    ② P#  →  WEIGHT

    ③P#  →  CITY

    理由:①の右辺は単項集合ではない

presented by junko


Chapter functional dependencies

既約の性質(2)

  • Sの全ての左辺(決定項)は既約である

  • 閉包S+を変えることなしに決定項からいかなる属性も取り去ることはできない→左既約

    <既約ではない例(2)>

    ①{P#、PNAME}  →  COLOR

     ②P#  →  PNAME

    ③P#  →  WEIGHT

    ④P#  →  CITY

    理由:①のFDは、閉包を変えることなしに左辺からPNAMEを落とすことで簡略化可能

presented by junko


Chapter functional dependencies

既約の性質(3)

  • 閉包S+を変えることなしにはSからどのSのどのFDも取り去ることはできない

    <既約ではない例(3)>

    ①P#  →  P#

    ②P#  →  PNAME

    ③P#  →  COLOR

    ④P#  →  WEIGHT

    ⑤P#  →  CITY

    理由:①のFDは閉包を変えることなしに取り去ることが可能

presented by junko


Chapter functional dependencies

既約集合に等価な集合

FDの全ての集合について既約集合に等価な集合が少なくとも一つ存在する

証明:SのもともとのFDの集合を考える

  • 分解規則により、SのそれぞれのFDを、一般性を損なうことなしに右辺単項にする

  • SのそれぞれのFDfについてfの左辺のそれぞれの属性Aを調べる

  • Sと、fの左辺からAを削除することで得られるFDの集合が等価ならば・・・

  • Fの左辺からAを削除する

  • 最終的なSは既約、もともとの集合Sに等価である

presented by junko


Chapter functional dependencies

既約集合に等価な集合:例

  • 例:属性A、B、C、DとFD

    • A  →  BC

    • B  →  C

    • A  →  B

    • AB →  C

    • AC →  D

      をもつ関係Rを考える

      与えられた集合に等価で既約なFDの集合を計算する

presented by junko


Chapter functional dependencies

例(1)

1.それぞれのFDを右辺単項に書き直す

  • A  →  B

  • A  →  C

  • B  →  C

  • A  →  B

  • AB →  C

  • AC →  D

A → BC

presented by junko


Chapter functional dependencies

例(2)

2.FD:AC→Dの左辺から属性Cを削除できる

  • A→Cがあるので、追加性より A→AC

  • AC→Dならば 推移性より A→D

    属性Cを削除

presented by junko


Chapter functional dependencies

例(3)

  • FD:AB→Cは削除できる

    • A→Cがあるので、追加性より  AB→CB

    • 分解性よりAB→C (AB→B)

      FD:AB→C削除

presented by junko


Chapter functional dependencies

例(4)

  • FD:A→Cは削除できる

    • A→BとB→Cによって暗示され  A→C

      FD:A→C削除

presented by junko


Chapter functional dependencies

既約被覆

  • 最後に残るFDは以下の三つ

    • A  →  B

    • B  →  C

    • A  →  D

      が残る

  • この集合は既約である

  • 既約でFDの他のある集合Sと等価なFDの集合IはSの既約被覆(irreducible cover)という

  • 検査されるべきFDのある特定の集合があるとき、システムにとっては代わりの既約Iを見つけて検査する

  • FDのある集合が必ずしも一意既約被覆である必要は無い

presented by junko


Chapter functional dependencies

まとめ

  • 関数従属性FDは、ある関係の属性の二つの集合間における多対1の関係

  • 自明なFDには興味がない

  • あるFDは他のFDを暗示する(閉包closure)

  • CompleteでsoundなFDの推論規則

  • アームストロングの規則

  • 既約集合

  • 既約被覆

presented by junko


  • Login