*Rules About Functional Dependencies*

In this section, we shall learn how to reason about FD's. That is, suppose we are told of a set of FD’s that a relation satisfies. Sometimes, we can deduce that the relation must satisfy certain other FD's. This ability to find out additional FD's is important when we discuss the design of good relation schemas in "Design of Relational Database Schemas". **Example :** If we are told that a relation R with attributes A, B, and C, satisfies the FD's A → B and B → C, then we can deduce that R also satisfies the FD A → C. How does that reasoning go? To prove that A → C, we must take into account two tuples of R that agree on A and prove they also agree on C.

Let the tuples agreeing on attribute A be (a, b_{1},c_{1}) and (a, b_{2},c_{2}). We assume the order of attributes in tuples is A, B, C. Since R satisfies A → B, and these tuples agree on A, they must also agree on B. That is, b_{1} = b_{2}, and the tuples are really (a, b, c_{1}) and (a, b, c_{2}), where b is both b_{1} and b_{2}. Likewise, since R satisfies B → C, and the tuples agree on B, they agree on C. In this way, c_{1} = c_{2}; i.e., the tuples do agree on C. We have proved that any two tuples of R that agree on A also agree on C, and that is the FD A → C.

FD's often can be presented in various different ways, without changing the set of legal instances of the relation. We say:

● Two sets of FD's S and T are equivalent if the set of relation instances satisfying S is exactly the same as the set of relation instances satisfying T.

● More generally, a set of FD's S follows from a set of FD’s T if every relation instance that satisfies all the FD's in T also satisfies all the FD's in S

Note then that two sets of FD's S and T are equivalent if and only if S follows from T, and T follows from S.

In this section we shall see various useful rules about FD's. Generally, these rules let us replace one set of FD's by an equivalent set, or to add to a set of FD's others that follow from the original set. An example is the transitive rule that lets us follow chains of FD's, as in above example. We shall also give an algorithm for answering the general question of whether one FD follows from one or more other FD's.

### Tags

- attributes
- tuples
- schema
- Scrolling Cursors
- Protecting Against Concurrent Updates
- Modifications by Cursor
- Cursors
- Instead-Of Triggers
- Triggers in SQL
- Schema-Level Constraints and Triggers
- Tuple-Based CHECK Constraints
- Constraints on Attributes and Tuples
- Declaring Foreign-Key Constraints
- Keys Declared With UNIQUE
- Constraints and Triggers
- Modifying Views
- View Definitions
- Introduction to Selection of Indexes
- Default Values / Indexes
- Simple Table Declarations
- Defining a Relation Schema in SQL
- Deletion / Updates
- Database Modifications
- Grouping / HAVING Clauses
- Full-Relation Operations
- Natural Joins / Outerjoins
- Subqueries in FROM Clauses
- Conditions Involving Tuples
- Subqueries
- Union, Intersection, and Difference of Queries
- Interpreting Multirelation Queries
- Tuple Variables
- Disambiguating Attributes
- Queries Involving More Than One Relation
- Null Values and Comparisons Involving NULL
- Selection in SQL
- Projection in SQL
- The Database Language SQL
- Additional Constraint Examples
- Extending the Projection Operator
- Grouping
- Extended Operators of Relational Algebra
- Selection on Bags / Product of Bags / Joins of Bags
- Union, Intersection, and Difference of Bags
- Relational Operations on Bags
- A Linear Notation for Algebraic Expressions
- Dependent and Independent Operations
- Renaming
- Combining Operations to Form Queries
- Natural Joins / Theta-Joins
- Selection / Cartesian Product
- Set Operations on Relations
- An Algebra of Relational Operations
- Relational Algebra
- Attribute Lists
- Document Type Definitions
- XML and Its Data Model
- Information Integration Via Semistructured Data
- Semistructured Data Representation
- Object-Oriented Versus Object-Relational
- References
- Nested Relations
- The Object-Relational Model
- What If There Is No Key
- Representing ODL Relationships
- Representing Other Type Constructors
- Representing Set-Valued Attributes
- Nonatomic Attributes in Classes
- Declaring Keys in ODL
- Subclasses in ODL / Multiple Inheritance in ODL
- Types in ODL
- Methods in ODL
- Multiplicity of Relationships
- Relationships in ODL / Inverse Relationships
- Attributes in ODL
- Introduction to ODL
- The Type System
- Relationships Among Normal Forms
- Decomposition into Fourth Normal Form
- Reasoning About Multivalued Dependencies
- Definition of Multivalued Dependencies
- Multivalued Dependencies
- Third Normal Form
- Boyce-Codd Normal Form
- Decomposing Relations
- Projecting Functional Dependencies
- Closing Sets of Functional Dependencies
- The Transitive Rule
- Why the Closure Algorithm Works
- Computing the Closure of Attributes
- Trivial Functional Dependencies
- The Splitting/Combining Rule
- Keys of Relations
- Using Null Values to Combine Relations - Comparison of Approaches
- An Object-Oriented Approach
- Converting Subclass Structures to Relations
- Handling Weak Entity Sets
- Combining Relations
- From E/R Relationships to Relations
- From Entity Sets to Relations
- From E/R Diagrams to Relational Designs
- Relation Instances
- Equivalent Representations of a Relation
- Tuples / Domains
- Attributes / Schemas
- The Relational Data Model
- Summary of The Entity-Relationship Data Model
- Weak Entity Set Notation
- Requirements for Weak Entity Sets
- Representing Keys in the E/R Model
- Keys in the E/R Model
- The Modeling of Constraints
- Picking the Right Kind of Element
- Design Principles
- Subclasses in the E/R Model
- Converting Multiway Relationships to Binary
- Attributes on Relationships
- Multiway Relationships
- Elements of the E/R Model
- The Entity-Relationship Data Model
- Database System Implementation
- Database Design
- Multimedia Data
- Relational Database Systems