Normalization using graphs
  1. Get to first normal form.
    1. List all the fields.
    2. Get rid of synonym problems; that is, don't use different names for the same attribute.
    3. Get rid of homonym problems; that is, don't use the same name for different attributes.
    4. Ensure field definitions make sense.
    5. Remove from this list all the repeating groups of fields.
    6. Combine paired, mutually exclusive fields if possible.
    7. Remove from this list all those values that can be derived from other fields in the list.
    8. Construct a determinancy diagram representing all the functional dependencies.
    9. Put a rectangle around the primary identifier for this relation. You should now have one large diagram.
  2. Get to second normal form. You are removing partial key dependencies. For each separate diagram, apply the following rule: “No box shall have lines coming out from inside it.” When you can no longer apply this rule, group together all relations that have the same primary identifier.
  3. Get to third normal form. You are removing transitive dependencies. For each separate diagram, apply the following rule: “No box shall have lines going in and coming out.” When you can no longer apply this rule, group together all relations that have the same primary identifier.
  4. Get to fourth normal form.
    1. You should have a few relations that contain at least two attributes in the primary identifier.
    2. Identify MVDs by drawing double-headed arrows.
    3. Now, work from the leaves back to the branches when applying the following rules.
      • Any 4NF relation can have, at its outside layer, no more than 1 double-headed arrow.
      • Any 4NF relation can have, at its outside layer, either dependencies or MVDs but not both.
    4. Repeat the above steps for each pair of MVDs (remembering to work from the leaves to the branches).
  5. Get rid of conditional dependencies.
    1. Identify all conditional dependencies by changing regular arrows to dashed arrows.
    2. Apply the following rules.
      • No relation may have both a conditional dependency and any other dependency.
      • No relation may have more than one conditional dependency.
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License