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

F+ and F* is 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

• {fd | F |- fd} cover of F
• 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.

Closure and cover are two completely different things.

The closure of a set of attributes or a functional dependency $f$ is a set of relation schemes that can be implied by $f$. In order to find the closure, we can expand the FD or the set of attributes based on the given set of FDs by replacing each relation with the ones inferred by it. For example,

$$X = \{ f_1:A \rightarrow BC,~~~ f_2: C \rightarrow D,~~~ f_3: BD \rightarrow E, ~~~~f_4: F \rightarrow G , ~~~~f_5: F \rightarrow H \}$$

then the closure of $f_1: A \rightarrow BC$ or $\{A\}$ is $\{A,B,C,D,E\}$:

$$A \rightarrow_{f_1} ABC \rightarrow_{f_2} ABCD \rightarrow_{f_3} ABCDE$$

while the closure of $F\rightarrow G$ is $\{F, G, H\}$.

The cover of a set of functional dependencies $X$ is a set of functional dependencies $Y$ that is equivalent to $X$ and the left-side of each functional dependency in $Y$ is unique. Though, not every cover is minimal, and we are usually looking for minimal cover. For example a cover of $X$ is,

$$Y=\{f_1:A \rightarrow BC,~~~ f_2: C \rightarrow D,~~~ f_3: BD \rightarrow E, ~~~~f_4: F \rightarrow GH \}$$

Please do some search before posting your questions, there are plenty of resources on the web, including Wikipedia and Wikipedia.

• This is so odd. I'm glad I asked this question is StackOverflow as well as I got the complete opposite answer in that F+ and F* is the exact same thing! stackoverflow.com/questions/36272651/… – Yahya Uddin Mar 29 '16 at 15:06
• @YahyaUddin When it comes to anything but programming, I strongly recommend to ignore most of what is written on Stack Overflow. My experience is that programmers should stick to what they know, just like everybody else. – Raphael Mar 29 '16 at 17:45

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.

• Copied from SO: stackoverflow.com/a/36279604/781723. Please don't copy-paste your answer onto multiple sites (or multiple questions in the same site). Thank you! – D.W. Mar 30 '16 at 5:28