データベース: 関数の依存関係の公理システム

関数依存の公理系

この章で最も重要なことは、いくつかの関係解決アルゴリズムであり、これについて説明します。

各アルゴリズムはよく整理され、記録されています。

基本的な定義

{ X → Y , Y → Z } ⊨ X → Z \{X→Y,Y→Z\}⊨ X→Z{ XそしてそしてZ }バツZここで: ⊨ は論理的な意味を意味します。

定義 6.6 (論理的含意): F をリレーショナル スキーマ R(U) によって満たされる関数依存関係のセットとし、X→Y を F に含まれない R の関数依存関係とします。F の関数依存関係のいずれかが存在する場合、特定の関係 r はX → YX→Yも満たすバツYの場合、関数依存関係セット F は論理的に関数依存関係 X→Y を意味するか、または X→Y が F から推測できることを意味します。次のように表現できます:F ⊨ X → YF ⊨ X → YFバツY

定義 6.7: 関数依存関係セット F によって論理的に暗示される関数依存関係のセット全体は、F の閉包と呼ばれ、F + F^+として表されます。F+,即F + = { X → Y | F ⊨ X → Y } F^+=\{X→Y|F⊨X→Y\}F+{ XY FバツY }

アームストロング公理システム

基本的なルール

A1: 反射性 YX の場合、X→Y が成り立ちます。これは自明な関数依存関係です。

A1 によれば、X→Ф、U→X などの自明な関数依存関係を導出できます (なぜならϕ ⊆ X ⊆ U \phi \subseteq X \subseteq Uϕバツ)。

A2:
X→Y、Z ⊆ WZ \subseteq Wの場合の拡張ZWの場合、XW→YZ が成立します。

A3: 推移性:
X→Y と Y→Z の場合、X→Z が成り立ちます。

推論

系 1: 和集合則
{ X → Y , X → Z } ⊨ X → YZ {X→Y, X→Z}⊨ X→YZXY XZ バツYZ _

推論 2: 分解規則 (分解規則)
X → Y , Z ⊆ Y の場合、X → Z が成立します X\to Y, Z\subseteq Y の場合、X→Z が成立します×の場合Y ZY 次にXZ確立

系 3: 擬似推移性規則
${X→Y,WY→Z}⊨ XW→Z $

定理6.1:若 A i ( i = 1 , 2 , … , n ) A_i(i=1,2,…,n) 私は(私は=1、2 _ _n )はリレーションスキーマ R の属性であり、X → ( A 1 , A 2 , … , A n ) X→ (A_1, A_2, …,A_n)バツ( A1A2はX→Aiが成立するための必要十分条件である。

プロパティセットクロージャ

リレーショナル スキーマ R(U)、U={A1, A2,...,An}、X が U のサブセット、F が U に設定された関数依存関係であると仮定すると、属性セット X の閉包は次のようになります。関数依存関係セット F XF + X_F^+バツF+次のように定義されます。

$ X_F^+={Ai{|}Ai∈U、そして X→Ai はアームストロングによって F から推定できる}$

一言で言えば、これは属性セットであり、依存関係セット上で派生できるすべての属性は、依存関係セット上のこの属性セットのクロージャです。

終結を求める

再帰的アルゴリズム:

  • (1)令X ( 0 ) = X , i = 0 X(0)=X,i=0× ( 0 )=X i 0

  • (2) 求属性集KaTeX parse error: Undefined control sequence: \and at position 47: …)V \to W \in F \̲a̲n̲d̲ ̲V \subseteq X^{…

  • (3) X ( i + 1 ) = X ( i ) ∪ BX^{(i+1)}=X^{(i)} ∪Bバツ( i + 1 )X()B

  • (4) 判断X ( i + 1 ) = X ( i ) X^{(i+1)}= X^{(i)}バツ( i + 1 )=バツ( i ) ?

  • (4)若X ( i + 1 ) ≠ X ( i ) X^{(i+1)} \not= X^{(i)}バツ( i + 1 )=バツ( i ),则用i + 1 replace i i+1 \space {replace} \space i+1配置return   ( 2 ) _ _

  • (5)若X ( i + 1 ) = X ( i ) X^{(i+1)} = X^{(i)}バツ( i + 1 )=バツ( i ),则XF + = X ( i ) X_F^+=X^{(i)}バツF+=バツ( i )、終了

要約する

実は当店オリジナルセットXXがございます。X、元のセットの場合、属性セットについて何が導出できるかを依存セットで見つけます。

一度に 1 つの依存関係を使用します。XXX は完成するまで少し拡張します。

機能依存関係の等価性と適用範囲

最小限の依存関係セット

補題 6.1: G を、すべての依存する右部分が 1 つの属性のみを持つ関数依存関係のセットであるとします。その場合、G は、左部分が G (左部分) と同じである関数依存関係のセットをカバーします。

関数依存関係セット F には、同等の関数依存関係セットがいくつかある場合があり、その中からアプリケーションにとってより適切な関数依存関係セットを選択できます。

基準は少なくとも次のとおりです。

すべての関数依存関係は独立しています。つまり、関数依存関係セットにはそのような関数依存関係は存在せず、このセット内の他の関数依存関係から推測できます

これは最も単純なものを表します。つまり、各関数の依存関係の右側の部分は単一の属性であり、左側の部分は最も単純です (完全に依存している必要があります)

定義 6.10 (最小機能依存性セット) : 機能依存性セット F が次の条件を満たす場合、F は最小機能カバレッジと呼ばれ、次のように記録されますFmin

  • (1) F のすべての関数依存関係の右側は単一の属性です。(右側が最も簡単です)

  • (2) F の関数が X→A に依存する場合、F-{X→A}Fと等価ではありません。

    • (A は属性セット全体にのみ依存できます。つまり、X → AX \to Aは 1 つだけです。バツA冗長な機能依存関係はありません)
  • (3) F の関数依存関係 X→A について、{F-{X→A}}∪{Z→A} は F と同等ではありません。ここで、Z は X の適切な部分集合です。

    • (左側の部分は最も単純である必要があり、左側の部分のサブセットは左側の部分を置き換えることはできません)

結論は:

  1. 右側の部分が最も簡単です
  2. 左側が一番簡単です
    1. 左右の最も単純な違いに注目してください
  3. 冗長な依存関係がない

キーワード候補の選定

まずコードとは何かを思い出してください。

k → 腹筋 U k \to^ {腹筋} Uka b sU

属性タプルはコードに完全に依存します


リレーショナル スキーマ R(U, F)、U={A1, A2,...An}、F が R の関数依存関係セットであるとすると、表示される属性は次の 4 つのカテゴリに分類されます。

  • L: 関数依存関係セット F の左側にのみ現れる属性
  • R: 関数依存関係セット F の右側の部分にのみ出現する属性
  • LR: 関数依存関係セット F の左側と右側の両方に現れる属性
  • NLR: 関数依存関係セット F の左側と右側の部分に現れない属性

候補コードを見つけるためのルール

  • (1)機能依存関係集合に現れない属性がある場合は、候補コードに含める必要がある
  • (2)関数依存関係セット内の関数依存関係の右側に表示されない属性がある場合、それを候補コードに含める必要があります。
  • (3) 関数依存関係セットの左側にのみ現れる属性がある場合、その属性は候補コードに含める必要があります。
  • (4) タプルを一意に識別できる属性または属性グループがあれば、候補コード(テスト結果)

その結果、3NF での依存関係を保持した分解が行われます。

マスターする必要はないのでしょうか?? ?

依存関係の維持とは何かを思い出してください。

つまり、分解後も依存関係は軽減されていません。

無損失の:

つまり、スプライス後に元に戻すことができます。

1 つは 2 に分解され、その交差関数はその差に依存します (依存しません)。可逆です。

考えてみてください。交差点はパブリック部分を表しており、パブリック部分がそれぞれのプライベート部分を決定できる場合は、自然接続後に復元する必要があります。

結果は、依存関係の保持と接続の歪みを伴う 3NF での分解になります。

おすすめ

転載: blog.csdn.net/interval_package/article/details/125111515