今回のテーマは、関数従属性です。
関数従属性の理解は、正規化を理解するための前提条件となります。
本記事をご覧いただくことで、次のことがわかります。
・部分関数従属性、完全関数従属性、推移的関数従属性についてわかる
・関数従属性の書き方について理解できる
それでは、早速学習をはじめましょう!
- TechAcademy [テックアカデミー]
豊富なコースで目的にあわせて選択可能、初心者から転職希望者までタイプ別にプランをカスタマイズ。マンツーマンのサポートがつく。 - DMM WEBCAMP
転職成功率98%&離職率2.3%。転職できなければ全額返金。DMM.comグループならではの非公開求人も多数 - アイデミー
AIやデータサイエンスに特化。オンライン学習なのでいつでも学習可能。学習したい講座を自由に追加受講することができる。
関数従属性とは
ある属性Xの値を定めると、別の属性Yの値が一意に定まるという関係がある時、「YはXに関数従属している」と言えます。
「一意に定まる」とは、1つに決められるという意味です。
たとえば、学生番号(属性X)を「101」と決めると、学生の氏名(属性Y)は山田太郎と定まるといった関係です。
この時、学生氏名は学生番号に関数従属すると言えます。
一意に決まる点がポイントだね!

学生氏名が学生番号に関数従属している場合、学生番号→学生氏名と表記します。
また、学生番号の例で言うと、学生番号(属性X)を独立属性、学生氏名(属性Y)を従属属性といいます。
独立属性は複数個あっても問題ありません。
例えば、学生番号と学部の2属性によって、学生氏名が一意に特定できる場合は、{学生番号, 学部}→学生氏名と表記できます。
波括弧を使って、独立変数をまとめるんだね!
にしても、関数従属を言語化する時によくわからなくなってしまうよ。
言語化する時に、独立属性と従属属性を逆に書かないように注意しましょう。
従属するのは従属属性なので、従属属性が主語になります。
独立属性X→従属属性Yを言語化すると、従属属性Yは独立属性Xに関数従属しているとなります。

関数従属性の種類
関数従属性には、3種類あります。
- 部分関数従属性
- 完全関数従属性
- 推移的関数従属性
部分関数従属性
候補キーの一部に関数従属している状態を「部分関数従属している」と言います。
独立属性が、別の関係における独立属性にもなっている場合には、部分関数従属に該当します。
学生の例で表すと、次のようになります。

第二正規形は、第一正規形を候補キーに対して部分関数従属がない状態に変化させることで導出できます。
正規化について詳しく知りたい方は、下記の記事もご覧ください。
完全関数従属性
部分関数従属性とは反対に、候補キーの一部ではなく全てに対して関数従属している状態を「完全関数従属している」といいます。
部分関数従属性が無い状態を指すんだね。
先程の例で表すと、関係Bがない状態が完全関数従属といえます。
関係A以外には、どこにも関係が存在しない、完全なる従属状態ということですね。

推移的関数従属
Xが決まればYが決まる(X→Y)、Yが決まればZが決まる(Y→Z)という関係においては、
ZはXに対して推移的に関数従属していると言えます。
属性Xから属性Zに遷移する時に、間に属性Yがあるような関係の時に、推移的関数従属と言えるんだね。
XとZは、間接的につながっているんだ!

第三正規形は、第二正規形から推移的関数従属性を排除することで導出できます。
まとめ
最後に、まとめです。
- 関数従属性とは、一意に決まる属性同士の関係のことである。
- 部分関数従属性は、関係の中に複数の関数従属性がある時に生じる。
- 完全関数従属性は、部分関数従属性が無い時に生じる。
- 推移的関数従属は、独立属性と従属属性の間に属性を介する場合に生じる。
データサイエンスを本格的に学びたい方はスクールがおすすめです。
おすすめのスクールはこちらから。