Search code examples
relational-algebrafunctional-dependenciesdatabase-theory

What is the difference between F+ (closure of F) and F* (cover of F) for Functional Dependencies?


F+ and F* are defined as follows:

  • F+: closure of F

    • F+ = {fd | F |= fd}
    • Set of all FDs deduced from inference rule (normally: Armstrong axioms)
  • F*: cover of F

    • F* = {fd | F |- fd}
    • Set of all FDs entailed by F (all FDs that are true)

So my question is: What is the difference between F+ and F*? Can you also give an example to demonstrate the difference.


Solution

  • An important property of the Armstrong’s axioms, (as well as of similar set of axioms), it that they are sound and complete (for a proof see for instance this).

    This amount to say that F+ = F*. In other words, all the FD derived from those axioms are logically entailed by F, as well as all the FD dependencies logically entailed by F can be derived by repeatedly applying the axioms.