# 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
• @YahyaUddin & orezvani This confuses the closure of a set of FDs with the closure of a set of attributes. The question is about the closure of a set of FDs. – philipxy Feb 20 at 11:22
• @YahyaUddin & orezvani Typo: "The closure of a set of attributes" is a set of attributes, not "a set of relation schemes". Or a relation scheme--a set of attributes can be used to denote/characterize a scheme but isn't one. (Anyway "scheme" is used in a lot of ways.) Also these definitions are not quite right since the entailment/equivalence is wrt a given scheme--it matters what the set of all attributes of the scheme is. – philipxy Feb 20 at 11:28

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
• The question definitions are incorrect & the terms mean different things even though "is entailed by" means "is derivable from". See my comments on the cross-posted answer. – philipxy Feb 20 at 11:03