Normalization
Main Source:
In database, Normalization is the process of organizing data in a relational database to eliminate redundancy and improve data integrity and efficiency. Database normalization is done in several levels, called normal forms, each building upon the previous one.
Functional Dependency
Functional Dependency is a concept that describes the relationship between column or sets of attributes within a table. It specifies how the values of one or more attributes determine the values of other attributes. Functional dependency is an important concept for normalization.
One attribute, known as the determinant, uniquely determines the value of another attribute, known as the dependent. This means that for a given value of the determinant, there can be only one corresponding value for the dependent attribute.
Functional dependencies are denoted using arrow notation (→). For example, if A and B are attributes in a table, A → B represents a functional dependency where the value of attribute A uniquely determines the value of attribute B. So, if we need a value of B, we can find it by knowing the value of A.
In actual application, functional dependency is the one that you find on primary key and foreign key relationship.
There are different types of functional dependencies:
- Full functional dependency: A functional dependency A → B is considered full if no proper subset of A determines B. In other words, removing any attribute from A would result in the dependency no longer holding.
- Partial functional dependency: A functional dependency A → B is considered partial if there is a proper subset of A that also determines B. In this case, removing any attribute from A would still preserve the dependency.
- Transitive dependency: A transitive dependency occurs when there is a functional dependency A → B and B → C, which implies a transitively dependent relationship between A and C. In other words, A indirectly determines C through B.
Heath's Theorem
Given a relation or table with attributes and , where is a functional dependency, and is defined as the set difference between , which is some set of and , then .
Where is a symbol for projection, and