関係の正規化
例えば、先程の例で挙げた関係を第3正規形に変形する方法としては、{会員番号, 氏名, 所属店コード}{所属店コード,所属店名} の2つの関係に分解する方法と、{会員番号, 氏名, 所属店コード}{会員番号, 所属店名} の2つの関係に分解する方法が考えられるが、後者の方法は妥当でない。なぜなら、この方法では、先に挙げた不利な点が解決されず、更新異常を防ぐためには、両関係のデータ間の関連が監視されなければならないからである。
このようなことが起こるのは、元の関係にあった所属店コード → 所属店名の関連を、分解後の各関係における関数従属性から導くことができない形になっているからである。一般に、関係Rをその射影である関係R1と関係R2に分解して正規化する場合、「R1とR2の上の関数従属性からRの関数従属性をすべて導くことができ、かつ、R1とR2に共通の属性が、そのいずれかにおいて候補キーを構成する」という条件を満たすように分解するのが妥当である。なお、このような条件を満たす分解を従属性保存といい、その場合のR1とR2は、両関係中のデータ間の関連を監視することなく更新できるという意味で、独立であるという。第2正規形の関係は、常に無損失かつ独立なように第3正規形に分解することができる。
妥当な第3正規形では、関数従属に関する更新異常の問題がほぼ解決されるが、複数の属性からなる候補キーがある場合にまだ例外が残る。