language-icon Old Web
English
Sign In

Functional dependency

In relational database theory, a functional dependency is a constraint between two sets of attributes in a relation from a database. In other words, functional dependency is between attributes in a relation. In relational database theory, a functional dependency is a constraint between two sets of attributes in a relation from a database. In other words, functional dependency is between attributes in a relation. 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 in R is associated with precisely one Y value in R; R is then said to satisfy the functional dependency X → Y. Equivalently, the projection Π X , Y R {displaystyle Pi _{X,Y}R} is a function, i.e. Y is a function of X. 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 R containing 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. In other words, a dependency FD: X → Y means that the values of Y are determined by the values of X. Two tuples sharing the same values of X will necessarily have the same values of Y. 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 Π X Y ( R ) ⋈ Π X Z ( R ) = R {displaystyle Pi _{XY}(R)owtie Pi _{XZ}(R)=R} 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 Σ {displaystyle Sigma } logically implies another set of dependencies Γ {displaystyle Gamma } , if any relation R satisfying all dependencies from Σ {displaystyle Sigma } also satisfies all dependencies from Γ {displaystyle Gamma } ; this is usually written Σ ⊨ Γ {displaystyle Sigma models Gamma } . The notion of logical implication for functional dependencies admits a sound and complete finite axiomatization, known as Armstrong's axioms. Suppose one is designing a system to track vehicles and the capacity of their engines. Each vehicle has a unique vehicle identification number (VIN). One would write VIN → EngineCapacity because it would be inappropriate for a vehicle's engine to have more than one capacity. (Assuming, in this case, that vehicles only have one engine.) Transversely, EngineCapacity → VIN is incorrect because there could be many vehicles with the same engine capacity. This functional dependency may suggest that the attribute EngineCapacity be placed in a relation with candidate key VIN. However, that may not always be appropriate. For example, if that functional dependency occurs as a result of the transitive functional dependencies VIN → VehicleModel and VehicleModel → EngineCapacity then that would not result in a normalized relation.

[ "Relational database", "Database", "Data mining", "Transitive dependency", "Third normal form", "Multivalued dependency", "compiler writing systems", "Universal relation assumption" ]
Parent Topic
Child Topic
    No Parent Topic