We begin to see a need for a more formal approach to help us evaluate whether our design meets these guidelines. If many of the attributes do not apply to all tuples in the relation, we end up with many NULL's in the relation. This can be wasteful of storage space, and may also lead to problems with understanding of the meaning of the attributes. Avoid placing attributes in a base table whose values may be NULL, as far a possible . This is a more formal, more objective design criteria.
Functional dependency is the single most important concept in relational database design .
A FD is a property of the meaning or semantics of the attributes of a relation. Before I give a formal definition, lets look at dependency informally first. Figure out which attributes are dependent on other attributes. If the X is composite , then there is a possibility that Y is not fully functionally dependent on X. To be fully functionally dependent, Y must not be dependent on any proper subset of X . Later a stronger definition of 3NF was proposed by Boyce and Codd and is known as Boyce-Codd normal form.