Axioms for functional dependencies and inclusion dependencies?
4. Functional dependencyIn relational database theory, a functional dependency is a constraint between two sets of attributes in a relation from a database.Given a relation R, a set of attributes X in R is said to functionally determine another set of attributes Y, also in R, (written X → Y) if, and only if, each X value is associated with precisely one Y value; R is then said to satisfy the functional dependency X → Y. Equivalently, the projection is a function, i.e. Y is a function of X.[1][2] In simple words, if the values for the X attributes are known (say they are x), then the values for the Y attributes corresponding to x can be determined by looking them up in any tuple of Rcontaining x. Customarily X is called the determinant set and Y the dependent set. A functional dependency FD: X → Y is called trivial if Y is a subset of X.The determination of functional dependencies is an important part of designing databases in the relational model, and in database normalization and denormalization. A simple application of functional dependencies is Heath's theorem; it says that a relation R over an attribute set U and satisfying a functional dependency X → Y can be safely split in two relations having the lossless-join decomposition property, namely into where Z = U − XY are the rest of the attributes. (Unions of attribute sets are customarily denoted by mere juxtapositions in database theory.) An important notion in this context is a candidate key, defined as a minimal set of attributes that functionally determine all of the attributes in a relation. The functional dependencies, along with the attribute domains, are selected so as to generate constraints that would exclude as much data inappropriate to the user domain from the system as possible.A notion of logical implication is defined for functional dependencies in the following way: a set of functional dependencies logically implies another set of dependencies , if any relation R satisfying all dependencies from also satisfies all dependencies from ; this is usually written . The notion of logical implication for functional dependencies admits a sound and complete finite axiomatization, known as Armstrong's axioms.Properties and axiomatization of functional dependenciesGiven that X, Y, and Z are sets of attributes in a relation R, one can derive several properties of functional dependencies. Among the most important are the following, usually called Armstrong's axioms:[3]Reflexivity: If Y is a subset of X, then X → YAugmentation: If X → Y, then XZ → YZTransitivity: If X → Y and Y → Z, then X → Z"Reflexivity" can be weakened to just , i.e. it is an actual axiom, where the other two are proper inference rules, more precisely giving rise to the following rules of syntactic consequence:[4].These three rules are a sound and complete axiomatization of functional dependencies. This axiomatization is sometimes described as finite because the number of inference rules is finite,[5] with the caveat that the axiom and rules of inference are all schemata, meaning that the X, Y and Z range over all ground terms (attribute sets).[4]From these rules, we can derive these secondary rules:[3]Union: If X → Y and X → Z, then X → YZDecomposition: If X → YZ, then X → Y and X → ZPseudotransitivity: If X → Y and WY→ Z, then WX → ZThe union and decomposition rules can be combined in a logical equivalence stating that X → YZ, holds iff X → Y and X → Z. This is sometimes called the splitting/combining rule.[6]Another rule that is sometimes handy is:[7]Composition: If X → Y and Z → W, then XZ → YWEquivalent sets of functional dependencies are called covers of each other. Every set of functional dependencies has a canonical cover.