Summary of Schema Refinement
If a relation is in BCNF, it is free of redundancies that can be detected using FDs. Thus, trying to ensure that all relations are in BCNF is a good heuristic.
If a relation is not in BCNF, we can try to decompose it into a collection of BCNF relations.
- Must consider whether all FDs are preserved. If a lossless-join, dependency preserving decomposition into BCNF is not possible (or unsuitable, given typical queries), should consider decomposition into 3NF.
- Decompositions should be carried out and/or re-examined while keeping performance requirements in mind.