Normalization using graphs
- Get to first normal form.
- List all the fields.
- Get rid of synonym problems; that is, don't use different names for the same attribute.
- Get rid of homonym problems; that is, don't use the same name for different attributes.
- Ensure field definitions make sense.
- Remove from this list all the repeating groups of fields.
- Combine paired, mutually exclusive fields if possible.
- Remove from this list all those values that can be derived from other fields in the list.
- Construct a determinancy diagram representing all the functional dependencies.
- Put a rectangle around the primary identifier for this relation. You should now have one large diagram.
- 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.
- 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.
- Get to fourth normal form.
- You should have a few relations that contain at least two attributes in the primary identifier.
- Identify MVDs by drawing double-headed arrows.
- 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.
- Repeat the above steps for each pair of MVDs (remembering to work from the leaves to the branches).
- Get rid of conditional dependencies.
- Identify all conditional dependencies by changing regular arrows to dashed arrows.
- 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.
page revision: 3, last edited: 19 Aug 2008 00:01