DBMS における関数の依存関係: 概要、種類、例
機能依存性とは何ですか?
機能依存性 (FD) は、データベース管理システム (DBMS) 内の XNUMX つの属性と別の属性の関係を決定する制約です。 関数の依存関係は、データベース内のデータの品質を維持するのに役立ちます。 これは、データベース設計の良し悪しの違いを見つけるために重要な役割を果たします。
機能的な依存関係は矢印「→」で示されます。 X の Y に対する関数の依存関係は、X → Y で表されます。例を用いて DBMS における関数の依存関係を理解しましょう。
例:
従業員番号 | 従業員名 | 給与 | 都市 |
---|---|---|---|
1 | ダナ | 50000 | サンフランシスコ |
2 | フランシス | 38000 | ロンドン |
3 | アンドルー | 25000 | 東京都 |
この例では、従業員番号の値が分かれば、従業員名、都市、給与などが取得できます。これにより、都市、従業員名、給与は従業員番号に関数的に依存していると言えます。
主な用語
ここでは、データベースにおける関数の依存関係に関する重要な用語をいくつか示します。
主な用語 | 詳細説明 |
---|---|
公理 | 公理は、リレーショナル データベース上のすべての関数の依存関係を推論するために使用される一連の推論ルールです。 |
分解 | これは、同じ主キーによって決定される XNUMX つのエンティティが含まれているように見えるテーブルがある場合、それらを XNUMX つの異なるテーブルに分割することを検討する必要があることを示唆するルールです。 |
依存 | 表示されるのは 機能依存関係図の右側。 |
行列式 | 機能依存関係図の左側に表示されます。 |
Union | これは、XNUMX つのテーブルが別々で、PK が同じである場合、それらを置くことを検討する必要があることを示唆しています。 一緒に |
関数の依存関係のルール
以下は、データベース内の関数の依存関係に関する XNUMX つの最も重要なルールです。
- 反射的なルール –。 X が属性のセットで、Y が X のサブセット_サブセットである場合、X は Y の値を保持します。
- 拡張規則: x -> y が成立し、c が属性セットである場合、ac -> bc も成立します。 つまり、基本的な依存関係を変更しない属性を追加します。
- 推移性ルール: このルールは、x -> y が成立し、y -> z が成立する場合、x -> z も成立する場合、代数の推移則に非常によく似ています。 X -> y は y を決定する関数として呼び出されます。
DBMS の機能依存関係の種類
DBMS には主に 4 つのタイプの機能依存性があります。 DBMS の機能依存性のタイプは次のとおりです。
- 多値の依存関係
- 自明な関数の依存関係
- 自明ではない関数の依存関係
- 推移的な依存関係
DBMS における複数値の依存関係
多値依存関係は、単一のテーブルに複数の独立した多値属性がある場合に発生します。多値依存関係は、関係内の 2 つの属性セット間の完全な制約です。関係内に特定のタプルが存在する必要があります。理解するには、次の多値依存関係の例を検討してください。
例:
車のモデル | XNUMX月年 | 色圏 |
---|---|---|
H001 | 2017 | メタリック |
H001 | 2017 | グリーン |
H005 | 2018 | メタリック |
H005 | 2018 | 青 |
H010 | 2015 | メタリック |
H033 | 2012 | グレー |
この例では、maf_year と color は互いに独立していますが、car_model に依存します。 この例では、これら XNUMX つの列は car_model に依存する複数値であると言われます。
この依存関係は次のように表すことができます。
car_model -> maf_year
車のモデル -> 色
DBMS における些細な関数の依存関係
Trivial 依存関係は、属性のセットがその属性に含まれている場合に Trivial と呼ばれる属性のセットです。
したがって、Y が X の部分集合である場合、X -> Y は自明な関数依存関係です。自明な関数依存関係の例で理解しましょう。
具体的な例を挙げますと、以下の通りです。
emp_id | 従業員名 |
---|---|
AS555 | ハリー |
AS811 | ジョージ |
AS999 | ケヴィン |
Emp_id と Emp_name の XNUMX つの列があるこのテーブルを考えてみましょう。
{Emp_id, Emp_name} -> Emp_id は {Emp_id,Emp_name} のサブセットであるため、Emp_id は簡単な関数依存関係です。
DBMS における自明ではない関数の依存関係
非自明な依存関係とも呼ばれる関数依存関係は、B が A のサブセットではない場合に A->B が成立するときに発生します。関係において、属性 B が属性 A のサブセットでない場合、それは自明ではないとみなされます。依存。
会社情報 | 代表取締役 | 年数 |
---|---|---|
Microsoft | サトヤ・ナデラ | 51 |
グーグル | サンダーピチャイ | 46 |
Apple | ティム・クック | 57 |
例:
(Company} -> {CEO} (会社がわかれば、CEO の名前もわかります)
しかし、CEO は会社のサブセットではないため、機能上の依存関係は重要になります。
DBMS における推移的な依存関係
推移的依存関係は、2 つの機能的依存関係によって「t」が間接的に形成される場合に発生する機能的依存関係の一種です。次の推移的依存関係の例で理解してみましょう。
例:
会社情報 | 代表取締役 | 年数 |
---|---|---|
Microsoft | サトヤ・ナデラ | 51 |
グーグル | サンダーピチャイ | 46 |
アリババ | ジャック·マー | 54 |
{会社} -> {CEO} (会社がわかれば、CEO の名前もわかります)
{CEO } -> {年齢} CEO がわかれば、年齢もわかります
したがって、推移的な依存関係の規則に従って、次のようになります。
{Company} -> {Age} が成り立つはずです。会社名がわかれば彼の年齢もわかるので、これは当然です。
注: 推移的な依存関係は、XNUMX つ以上の属性の関係でのみ発生する可能性があることに注意する必要があります。
正規化とは何ですか?
正規化は、データベース内のデータを整理する方法であり、データの冗長性、挿入、更新、削除の異常を回避するのに役立ちます。 これは、さまざまな関数の依存関係と主キーに基づいて関係スキーマを分析するプロセスです。
正規化はリレーショナル データベース理論に固有のものです。 これにより、データベース内で同じデータが複製され、追加のテーブルが作成される可能性があります。
関数依存性の利点
- 機能の依存関係により、データの冗長性が回避されます。 したがって、同じデータが複数の場所で繰り返されることはありません。 データベース
- データベース内のデータの品質を維持するのに役立ちます
- データベースの意味と制約を定義するのに役立ちます
- 悪いデザインを特定するのに役立ちます
- データベース設計に関する事実を見つけるのに役立ちます
製品概要
- 機能的依存関係とは、ある属性が別の属性を決定することです。 DBMSシステム.
- 公理、分解、従属、行列式、和集合は関数依存関係の重要な用語です
- 関数の依存関係には 1 つのタイプがあります。2) 多値、3) 自明、4) 自明ではない、XNUMX) 推移的
- 複数値の依存関係は、単一テーブル内に複数の独立した複数値属性が存在する状況で発生します。
- Trivial 依存関係は、属性セットがその属性に含まれている場合に Trivial と呼ばれる属性セットが含まれる場合に発生します。
- B が A のサブセットではない場合に A->B が成立する場合、自明でない依存関係が発生します。
- 推移的は、XNUMX つの関数依存関係によって間接的に形成されるときに発生する関数依存関係の一種です。
- 正規化は、データベース内のデータを整理する方法であり、データの冗長性を回避するのに役立ちます。