関数従属性 - 属性(データ)の関係性
データベースでデータを扱うには、データの関係性を理解することが重要です。
ここではその基礎となる関数従属性について解説します。
属性
属性は“データの項目名”のことです。
例えば、『商品名』や『価格』などが該当し、属性値(データ)として、『りんご』や『¥150』があります。
関数従属性
関数従属性は属性Xの値によって属性Yの値が一意に決まる関係性のことです。
この関係性は「属性Yは属性Xに関数従属する」と言語し、次のように表記します。
属性X → 属性Y
この時、属性Xを独立属性、属性Yを従属属性と呼びます。
例えば、商品名(属性X)が『りんご』のとき、価格(属性Y)は¥150に決まるいう関係のとき、「価格は商品名に関数従属する」と言い、商品名 → 価格
と表記します。
逆に価格によって商品名は決まらないため、商品名は価格に関数従属しません。
独立属性は複数属性の組み合わせにすることができ、その場合は波括弧で括り、カンマ(,)で区切って表記します。
{属性X,属性A} → 属性Y
例えば、店名と商品名によって価格が決まる場合は、{店名,商品名} → 価格
です。
種類
関数従属性は3つの種類があります。
部分関数従属性
部分関数従属性は“独立属性を構成する一部の属性に関数従属する関係性”です。
例えば、{店名,商品名} → 価格
と店名 → 住所
が成り立つとき、「住所は店名に部分関数従属する」と言います。
完全関数従属性
完全関数従属性は“部分関数従属性がない関数従属性”です。
例えば、先ほどの部分関数従属性の例において、{店名,商品名} → 価格
の関数従属のみの場合は、「価格は店名と商品名に完全従属する」と言います。
推移的関数従属性
推移的関数従属性は“間接的に関数従属する関係性”です。
例えば、店名 → 住所
と住所 → 最寄駅
が成り立つ時、「最寄駅は店名に推移的関数従属する」と言います。