関数従属性
多値従属性は、関数従属性を一般化した概念と位置づけることができる。
関数従属性の決定は、関係モデルとデータベースの正規化と非正規化においてデータベース設計(データモデリング)の重要な部分である。
関数従属性は、属性の定義域(ドメイン)とともに、制約を構成するべく選択される。 ここでいう制約とは、利用者の問題領域にとって不適切なデータをシステムからできる限り排除するであろう制約である。
例えば、自動車とそのエンジンの排気量を調べるシステムを設計することを考える。 各々の自動車には一意に車台番号がわりふられている。 車台番号 → 排気量 と記述することができる。 なぜなら、自動車のエンジンが2つ以上の排気量をもつことは不適切であるからである(この例では自動車はただ一つのエンジンをもつと仮定する)。 しかし 排気量 → 車台番号 と記述することは正しくない。 なぜなら同じ排気量である自動車はたくさんあるからである。
関数従属性により、排気量という属性は候補キーが車台番号である関係(表)の中に存在することが示唆される。 しかしながら、この示唆は必ずしも適切ではない。 例えば、この関数従属性は推移的な関数従属性の結果として現れるからである。
車台番号 → 車両モデル, 車両モデル → 排気量
このため(第3正規形以上に)正規化された関係においては、排気量属性は候補キーが車台番号である関係の中には存在しない。