第 6 章 リレーショナル データ理論 - 機能依存性
1 はじめに
最初に 5 重の知識を復習します。
リレーショナル データベースでは、リレーショナル スキーマは 5 タプルに対応します。
R(U,D,DOM,F)
/*
关系名R是符号化的元组语义。
U为一组属性。
D为属性组U中的属性所来自的域。
DOM为属性到域的映射。
F为属性组U上的一组数据依赖。
*/
今回は、D(ドメイン)とDOM(マッピング)はスキーマ設計とはほとんど関係がないため、リレーショナルスキーマはトリプルと見なすことができます。
リレーショナル スキーマはデータ テーブルのヘッダーと見なすことができ、データ テーブルはリレーショナル スキーマのインスタンス化結果です。
Sno |
Sdept |
Mname |
Cno |
Grade |
---|---|---|---|---|
S1 | コンピュータサイエンス | 張明 | C1 | 95 |
S2 | コンピュータサイエンス | 張明 | C1 | 90 |
S3 | 外国語学科 | 李さん | C2 | 80 |
S4 | 文学部 | 王嘉 | C2 | 92 |
… | … | … | … | … |
F (データ依存性): 実世界の属性間の相互関係の抽象化、データ固有のプロパティ、およびデータ セマンティクスの明示。リレーションシップ内の属性間の制約条件です。
この制約関係は、属性間の値の同等性によって反映されるデータ間の相互関係です。
- 機能依存性
- 多値の依存関係
機能依存性はどこにでもあるデータ依存性です。
例えば、学籍関係には、学籍番号(Sno)、名前(Sname)、学科名(Sdept)などの属性があり、学籍番号は1人の学生にしか対応しないため、学生は1つの学科でのみ勉強できます。 .
したがって、次の機能依存関係があります。Sname=f(Sno),Sdept=f(Sno)
数学の対応関係に似ています: 学籍番号関数は学生の名前を決定し、学生番号関数は学生の部門を決定します
例: 学生のリレーショナル データベースを構築する場合、関係するオブジェクトには、学生の学籍番号 (Sno)、学科名 (Sdept)、学科長名 (Mname)、コース番号 (Cno)、学年 (Grade) が含まれ、単一の関係を想定して表されますパターン Student によると、関係パターンの属性セットは次のとおりです。
U={Sno,Sdept,Mname,Cno,Grade}
現実の世界で知られている事実のセマンティクスによれば、属性セット U に対する一連の機能依存関係 F が取得されます。
F={Sno->Sdept,Sdept->Mname,(Sno,Cno)->Grade}
したがって、学生を記述する関係パターンを取得できますStudent<U,F>
。上の表は、ある時点でのこの関係パターンの例です。
不適切な依存関係は、多くの問題を引き起こす可能性があります。
- データの冗長性
- 更新の例外
- 例外を挿入
- 例外を削除
優れたモデルには、更新の例外、挿入の例外、または削除の例外があってはならず、データの冗長性はできるだけ小さくする必要があります。
上記のリレーショナル スキーマを次の 3 つのリレーショナル スキーマに変更します。
S(Sno,Sdept,Sno->Sdept);
SC(Sno,Cno,Grade,(Sno,Cno)->Grade);
DEPT(Sdept,Mname,Sdept->Mname)
スキーマを問題の少ない 1 つ以上のスキーマに変更することは、スキーマの正規化です。
2. 標準化
正規化とは、関数間の依存関係に従って、属性間の不適切なプロパティを削減することです。
通常、関係の正規化度は、属性間の依存関係に従って区別されます: 1NF
、2NF
、3NF
、BCNF
、4NF
6.2.1 機能の依存関係
定義 1: R(F) を属性セット U の関係スキーマとし、X、Y を U のサブセットとします。R(U) の可能な関係 r について、r 内の 2 つのタプルがX の属性値が等しいが Y の属性値が等しくないことが不可能である場合、X 関数は Y または Yを決定すると言われます。関数 X に依存し、X->Y として示されます。
機能の依存関係は、意味論的にのみ決定できます。
関数の依存関係は、リレーショナル スキーマ R の 1 つまたはいくつかの関係が満たす制約を指すのではなく、R のすべての関係が満たさなければならない制約を指す。
用語集:
-
非自明な機能依存: X 関数は Y を決定しますが、X は Y を含みません。X->Y は非自明な機能依存であると言われています
-
些細な機能的依存性: X 関数は Y を決定しますが、X は Y を含み、X->Y は些細な機能的依存性です
-
決定要因: X 関数は Y に依存します。X は、この関数が依存する決定属性グループであり、決定要因とも呼ばれます。
定義 2: R(U) において、X->Y であり、X の任意の適切なサブセット x について、x が機能的に Y を決定できない場合、X->Y の場合、 Y は機能的に X に完全に依存していると言われますが、 Y は機能的に X に完全に依存しているわけではなく、 Y は機能的に X に部分的に依存していると言われます。
(Sno,Cno)->Grade,/*完全函数依赖*/
(Sno,Cno)->Sdept,/*部分函数依赖,因为是由Sno决定Sdept,而Sno是真子集*/
定義 3: R(U) において、X->Y、Y が X に含まれない場合、Y は機能的に X に依存せず、Y->Z、Z が Y に含まれない場合、Z は移動を持つと言われます。関数は X に依存します。
Sno->Sdept,Sdept->Mname ==> Sno->Mname;/*Mname传递依赖于Sno*/
上記の定義と合わせてこの部分を理解してください!! !
機能の依存関係は、リレーショナル スキーマ内の属性間の依存関係です。実際のセマンティクスに基づいて、属性間に機能的な依存関係があるかどうかを判断します。
例:学生番号(Sno
)と学生名(Sname
)が一意に対応する 学生名が決まれば所属(Sdept
)が決まる 所属が決まれば所属長(Mname
)が決まる コース番号 ( Cno
) によってコース名 ( Cname
) が一意に決定され、学生番号とコース番号によって学生の成績 ( Grade
) が決定されます。
-
自明でない機能的依存性:
(Sno,Cno)
決定することはできますGrade
が、 Y は X のサブセットではないため、Grade
に属していないことを(Sno,Cno)
思い出してくださいX=(Sno,Cno)
。Y=Grade
したがって、この機能的依存性は重要な機能的依存性です。 -
自明な機能依存性:それはまたは と
(Sno,Cno)
判断できますが、覚えておいてください。YはX のサブセットであるため、二次的な機能依存性は自明な機能依存性です。Sno
Cno
Sno
(Sno,Cno)
X=(Sno,Cno)
Y=Sno
些細な機能上の依存関係は保持されます。
-
完全な機能的依存性:
(Sno,Cno)
It can be決定できるGrade
が、Sno
どちらのCno
関数も決定できないGrade
、rememberX=(Sno,Cno)
、Y=Grade
、x=Sno
またはCno
、x は機能的に Y を決定できないため、この機能的依存性は完全な機能的依存性です。 -
部分的な機能依存:
(Sno,Cno)
関数 で決定できますSdept
が、Sno
一意の決定だけでSdept
十分です。X=(Sno,Cno)
、Y=Sdept
、x=Sno
、 x は関数によって Y を決定できるため、この関数依存は部分的な機能依存です。 -
伝達関数の依存性:
Sno
決定できるSdept
、Sdept
決定できる、それが含まれる集合に属さない、集合に属さない、この時点で、X は関数を伝達して Z を決定できることを思い出してください。したがって、この関数の依存関係は伝達関数の依存関係です。Mname
Sdept
Sno
Mname
Sdept
X=Sno
Y=Sdept
Z=Mname
2.2ヤード
2.2ヤード
リレーショナル スキーマでは、コードの概念が非常に重要です。
定義 4: K を R<U,F> の属性または属性の組み合わせとすると、U が完全に機能的に K に依存している場合、K は R の候補コードと呼ばれます。
U の機能の一部が K に依存している場合、K はスーパーコードと呼ばれます。候補キーは最小のスーパーキーです。つまり、K の適切なサブセットは候補キーではありません。
-
主キー: 複数の候補キーがある場合、1 つの候補キーが主キー (
primary key
) として選択され、関係パターンを一意に識別します。 -
主な属性: 候補キーに含まれる属性を主な属性と呼びます。
-
非キー属性: どの候補キーにも含まれない属性は、非キー属性と呼ばれます。
-
フルコード: 属性グループ全体がコードであり、この属性グループはフルコードと呼ばれます。
例:リレーショナル スキーマ S( Sno
, Sdept
, )Sage
内の単一の属性はSno
コードであり、リレーショナル スキーマ SC( , Grade) 内のSno,Cno
属性の組み合わせ ( Sno,Cno
) はコードです。
例: リレーションシップ モデル R(P, W, A) では、属性 P は出演者、W は作品、A は観客を表します。一人の演者が複数の作品を演じることができ、ある作品を複数の演者が演じることができ、観客も異なる演者の異なる作品を楽しむことができると仮定すると、この関係モードのコードは (P, W, A)、つまり、完全なコード
定義 5: リレーショナル スキーマ R の属性または属性グループ X は R のキーではないが、X が別のリレーショナル スキーマのキーである場合、X は R ( ) の外部キーであると言われますforeign key
。
例えば、SC ( Sno,Cno
, Grade)はSno
コードではなく、Sno
関係スキーマ S ( Sno
, Sdept
, Sage
) のコードであり、Sno
関係スキーマ SC の外部コードです。
主キーと外部キーは、関係間の接続を表現する手段を提供します。
X は R ( ) の外部キーですforeign key
。
例えば、SC ( Sno,Cno
, Grade)はSno
コードではなく、Sno
関係スキーマ S ( Sno
, Sdept
, Sage
) のコードであり、Sno
関係スキーマ SC の外部コードです。
主キーと外部キーは、関係間の接続を表現する手段を提供します。