猿に文明を与えるな

個人的な勝手なまとめ。

DBの更新時異常と推移関数従属性

更新時異常

正規化されていないテーブルの更新時にどのような異常が発生するかという話

  • 本来別テーブル(マスタ)にあるべきデータが、異なる値として格納されてしまう
  • 事前にマスタデータを用意しておくべきものが用意せずとも格納されてしまう

同じことを言ってるつもり。分かりづらい場合は実例を考えると良い。

推移関数従属性

推移関数従属性の成立条件は次のとおり

  • X -> Y
  • Y -> Xではない
  • Y -> Z(ただし、ZはYの部分集合ではない)

H25年午後1問1のように、

{a, b, c} -> リソースID <-> URI -> {d, e, f} の関数従属性がある場合、

リソースIDとURI間に推移関数従属性は存在しない。

結局、推移関数従属性としては次の2つが存在することになる。

  • {a, b, c} -> リソースID -> {d, e, f}
  • {a, b, c} -> URI -> {d, e, f}

ここは完全に知識不足なので補う必要がある。