関数従属性とは?リレーショナルデータベースの基礎

関数従属性(functional dependency)は、リレーショナルデータベース(RDB)の設計において重要な概念です。本記事では、関数従属性の定義、例、種類、そして正規化との関連性について詳しく解説します。

関数従属性の基本概念

定義

関数従属性とは、リレーショナルデータベースにおいて、2つの属性の間で一方の値を決定することにより、もう一方の値が一意に決まる性質のことを指します。

この関係を理解することで、データベースの設計や最適化が容易になります。

例を挙げてみましょう

例えば、社員名簿のテーブルで「社員ID」があれば、「氏名」は一意に決まります。

この場合、「社員ID」が決定項、そして「氏名」が従属項です。この関係は「社員ID→氏名」と表記されます。

同姓同名の可能性を考慮すると、逆の関係は成り立ちません。

複合主キーと関数従属性

複合主キーの例

例えば、「注文番号」と「商品ID」を組み合わせて複合主キーを構成するテーブルがあります。

この場合、注文番号と商品IDの値の組み合わせに対して、「商品名」や「数量」がそれぞれ従属します。

この関係は「{注文番号, 商品ID}→商品名」や「{注文番号, 商品ID}→数量」となります。

部分関数従属と完全関数従属

ここで、「商品名」は「商品ID」によって決まるため、「商品ID→商品名」という関係も成立します。

これは部分関数従属です。一方で、「数量」は両方の値が必要で、これを完全関数従属と言います。

関数従属性

推移的関数従属

推移的関数従属の例

例えば、「社員ID」「氏名」「住所」「郵便番号」というテーブルでは、「社員ID→住所」が成り立ちます。

さらに、「住所」が決まると「郵便番号」も一意に決まるため、「住所→郵便番号」も成立します。

この場合、「社員ID→郵便番号」という従属性が成立し、「郵便番号」は「社員ID」に推移的関数従属しています。

正規化と関数従属性

正規化の重要性

リレーショナルデータベースの設計において、冗長性や不整合を排除する手法が正規化です。

正規化の段階は第1正規形、第2正規形、第3正規形などがありますが、第2正規形以降は項目間の関数従属性に従って関係を整理します。

これにより、データの整合性が保たれます。

まとめ

関数従属性はリレーショナルデータベースの設計において欠かせない概念であり、データの整合性や冗長性の管理に重要です。

この記事で紹介した関数従属性の理解を深めることで、より効果的なデータベース設計が可能となるでしょう。

Rate this post
Visited 1 times, 1 visit(s) today