データベースマネジメント:正規化(最終更新:2015/12/06 16:33:44 JST)
関数従属性とは,フィールド間の方向を持つ関係のことである.方向を持つ関係とは,2つのフィールド間で,一方のフィールドから他方のフィールドが一意に定まるが,逆に他方のフィールドからは一意に定まらない関係のことである.
2つのフィールドをそれぞれX,Yとすると,関数従属性は次のように表現できる.
フィールド<学籍番号>と<学生氏名>の間で考えると,学籍番号に対しては必ず1つの学生氏名が対応するが,同姓同名が存在する場合があるので,学生氏名からは学籍番号が複数対応する可能性がある.この場合「学生氏名は学籍番号に関数従属する」と言える.
YがXに関数従属するとき,Xをこの関係における候補キー,Yを属性項目あるいは非キーと呼ぶ.
上の学籍番号と学生氏名の関係の場合,学籍番号を候補キーとすると,学生氏名は属性項目になる.
関数従属性の表現方法として関数従属性図も利用される. 下図の1行目は関数従属性を示したものである.
関数従属性には次のような推論則が成り立つ. 関数従属性図による表現は上図の2および3行目を参照のこと.
候補キーの全体でなく候補キーの一部に関数従属性が成り立つとき,部分関数従属があるという.教科書49ページの下の例のように,候補キーが{伝票コード,商品コード}の複合キーであるとき,属性項目の商品名と単価は複合キーに関数従属すると同時に,商品コードにも関数従属している.
{d1,d2}が複合主キーで,従属するフィールドとして<d3>と<d4>があるとき,例えば,{d1,d2}→d3とd1→d3の2つの関数従属関係が同時に成り立つとき,部分関数従属性がある.
同様に上の例は,反射律から{A,B}→Bが成り立つ.またB→Cとの推移律から{A,B}→Cが成り立つので,Cは{A,B}とBに関数従属するため部分関数従属となる.
候補キーだけで完全に属性項目が決定されるとき,完全関数従属であるという.教科書50ページの例参照.
属性項目間にさらに関数従属性が存在している関係を推移関数従属であるという.例えば,項目Bが項目Aに関数従属し,さらに項目Cが項目Bに関数従属しているとき,項目Cは項目Aに推移関数従属しているという.教科書51ページの例参照.
{d1,d2}が候補キーで,<d3>と<d4>がそれぞれ属性項目であるとき,{d1,d2}→d3,{d1,d2}→d4,d3→d4が同時成り立つ場合,属性項目間に関数従属性が存在する.
2つの候補キーは互いに相手を一意に特定することができる. つまりA→BとB→Aが同時に成り立つことになる. よって図示すると下図のようになり,関数従属性は成立しない.
このサイトに関するお問い合わせは,連絡先のページをご覧ください.