Search code examples
functional-dependencies

Relational algebra - Functional Dependencies


I just want to be sure... If i've two dependencies like

  • a -> c
  • b -> c

Will it be the same as this one

  • a b -> c

Solution

  • If I understand correctly your question, you are asking if the two sets of functional dependencies {a → c, b → c} and {ab → c} are equivalent. The answer to this question is no.

    From either a → c or b → c you can prove ab → c (by applying the definition of functional dependency: x → y if and only if, when two tuples have the same values for x, they have also the same values for y). You can also derive ab → c with the Armstrong’s Axioms (e.g. starting from a → c and applying first the augmentation axiom with b, obtaining ab → bc, then applying the decomposition to obtain ab → c).

    But the viceversa is not true: you cannot prove from ab → c that a → c, neither that b → c, and equivalently you cannot derive any of the two dependencies from ab → c through the Armstrong’s Axioms. For an example, consider the dependency StudentNumber, CourseName → Grade (that asserts that there can be only a Grade from a certain couple StudentNumber and CourseName). From this dependency you cannot assert that for a StudentNumber there is only a Grade, or for a CourseName there is only a Grade.