リレーショナルスキーマコードを解決する方法
候補コードを求める単純な方法は:
(1)属性が集中しない関数従属である場合には、候補コードに含まれなければならない;及び
(2)属性がある場合は、それが本含まれている必要がありますされた機能依存の権利の機能依存性濃度ではありません候補コード;および
プロパティは、関数従属性の左側セットに表示された場合(3)、属性が候補コードに含まれている必要があります。
属性または一意タプルがグループを識別する(4)場合は、候補コードです。
上述の方法の11個の組み合わせの後と決意キーの組み合わせをカリング添加、すなわち選出されており、キー属性の残りの部分の残りの部分とを決定することができます
例:
(1)R <U、F >、Uは、=(A、B、C、D、E、G)、F = {AB - > C、CD - > E、E - > AA - > G }、候補コードを求めていますか?
Gのみによる右側に表示され、彼らは、候補コードGに属していなければなりません。
Bは、D特定の候補コードに属するように、Bは、Dは、唯一の左側に表示されます。
BD BDまたは閉鎖は、BD組成物について、Gに加えて、BDは、A、C、Eと組み合わせることができます
パッケージ自体はABD ABD ABD、およびABを見ているので - > C、CD - > E、A - > Gは、閉鎖のでABD ABDCEG = Uであります
BDCのCDを見て - > E、E - > A、A - > G、BDCパッケージ自体、BDC BDCEAG = Uの閉鎖から
最後BDE Eを見て - > A、A - > G、AB - > C、パッケージからBDE自体、BDE BDEAGC = Uの閉鎖
したがって、候補コードブックは、三つの問題を有しているABCDEGさクロージャの(ABD)、(BCD)、(BDE)のでABC、BCD及びBDEであります
第二、2NFを変換する方法
一般的な図面は限りうまく新たな関係のためのキーに依存部分で部分的に分離された非主要属性として、解決することができます。
第三に、3NFを変換する方法は、(ここで書かれた直接依存保持及び可逆変換方法は、分解)
1.タイトルの上に直接、(各依存性、依存関係のセット全体への影響を除去するかどうか依存決意のために個々に除去される)の依存関係の最小セットを解きます
実施例1:関係モデルR <U、F>、U- = {C、T、Hは、R、S、G}、
F.は= {CS→G、C→T、TH→R&LT、HR→C、HS→ R}、それが機能的依存性に分解及び3NFを維持しています。
溶液:解決アルゴリズムに従って、
(a)のFに依存する最小セット関数算出
分解ルールの①使用し、すべての機能が単一の属性依存に右に依存する関数です。すべての機能以来Fは、それを分解することなく、単一の属性の右側に依存しています。
②過剰機能依存F削除
A.を CS→G冗長関数従属性を提供し、次に得るために、CS→Gを削除:
FL = {C→T、TH→R&LT、HR→C、HS→R&LT}
計算(CS)F1 +:
集合X(0)= CSは、
X(1)を計算する:F1の走査それぞれの機能の依存関係を、関数従属性の左側部分は、C→T依存性関数を見つけるために、CSまたはCSサブセットを見つけます。したがって、X(1)= X(0 )= CST∪T。
各機能従属関係をスキャンでF1、又は任意の機能の依存関係を見つけることができませんでした、CST CSTサブセット関数従属性の左側部分を見つける:X(2)を計算します。したがって、X(2)= X(1 )。アルゴリズムは終了します。
(CS)F1 + = CSTは、Gを含まない、それは関数依存CS→Gの冗長性ではない、F1から除去することができません。
B. C→T冗長機能の依存関係を設定し、次に与えるためにC→Tを削除:
=のF2 {CS→G、TH→R&LT、HRー→C、HS→R&LT}が
算出される(C)F2 +:
集合X(0)= C
X(1)を計算する:F2は、各機能依存性はC-依存の左部分の関数として検出されないスキャン。したがって、X(1)= X(0 )。アルゴリズムは終了します。C→Tが冗長機能依存性ではない、それはF2から除去することができません。
C. :TH→Rは、冗長関数従属提供され、次に与えるために、TH→Rを除去
F3 = {CS→G、C→T、HR→C、HS→R&LT}
計算(TH)F3 +:
集合X(0)= TH
演算X(1):各機能依存性F3走査は左部分依存性またはTH THサブセットの関数として検出されません。したがって、X(1)= X(0 )。アルゴリズムは終了します。TH→Rは、冗長な機能依存性ではないので、それはF3から除去することができません。
D. 与えるために、HR→Cを除去し、次いで、HR→C冗長機能依存性を提供:
F4 = {CS→G、C→T、TH→R&LT、HS→R&LTは}
計算(HR)F4 +:
集合X(0)= HR
計算X(1):各機能依存性F4スキャン、関数HRまたはHR依存サブセットの左側部分が見つかりません。したがって、X(1)= X(0 )。アルゴリズムは終了します。したがって、機能的依存性HR→Cは冗長ではなく、F4から除去することができません。
E. 提供HS→Rは、あまりにも、その後除去HS→R冗長関数従属である:
F5 = {CS→G、C→T、TH→R&LT、HRー→C}が
算出される(HS)F5 +:
集合X(0)= HS
Xを算出する(1):各走査機能F5依存性は、機能またはHS HSサブセット依存性の左部分は見つかりませんでした。したがって、X(1)= X(0 )。アルゴリズムは終了します。HS→Rは、冗長な機能依存性ではないので、それはF5から除去することができません。すなわち:F5 = {CS→G、 C→T、TH→R、HR→C、HS→R}
③F5過剰左側に各機能の依存属性を削除し、余分な左機能的依存性(チェック機能の唯一の左の部分は、個々の属性に依存しておりません)。
したがって、最小機能依存関係として:F = {CS→G、 C→T、TH→R、HR→C、HS→R}
いかなる属性は両側に表示されない場合、依存依存して設定された最小2.これらの属性がセットに分割され、存在します
3.必要なロスレスが接続されている場合は、直接、候補コードを追加します
第三に、ターンBCNF
基本的なステップに分解リレーショナルスキーマR <U、F>はBCNFであります