正規化は絶対に現実の世界で使用されます...そして、3NFが3番目のものに過ぎないことをご存じでしょうか?しかし、3NFは簡単なターゲットです。
しかし...私はそのようなツールはあり得ないと言うことを敢えてするでしょう。
技術的には、正規化は各テーブルの属性です。特定のデータベース内で、テーブルごとに正規化レベルが異なる場合があります。
各テーブルは事実を表します...特定の種類の事物(人、アカウント、注文、出荷、アイテム、場所)のインスタンスに関する事実。
正規化は、テーブルでファクトがどの程度正確かつ効率的に表現されるか、およびテーブルの設計があいまいで冗長なデータパターンを防ぐ能力に関係しています。
したがって、実際の事実を理解する必要があります...これは自動化ツールの範囲外です。
Q: Is a table with { student, subject, instructor } in 3NF?
A: What are students, subjects and instructors?
すべてのインストラクターがすべての科目を教え、各生徒が各インストラクターの各科目で複数のコースを組み合わせて受講できる世界では、このテーブルは実際に3NFであると言えます。現実の世界では、このテーブルに対して3NFを主張するのはばかげています。
それが3NFではないことを理解するには、それが表す事実の性質を理解する必要があります。現実には、このテーブルは3NFにはなりません。これは(他の理由もありますが)主題と講師が学生とは無関係の方法で関連付けられているためです。インストラクターがデータベースの他の場所に保存されている科目を教えるコースがある場合、学生がコースにサインアップしたことを示す他のテーブルの外部キーの代わりに両方の値をここにコピーするのはなぜですか?インストラクターが置き換えられた場合、複数の場所で複数のレコードを変更する必要があります。
データベースが正規化されればされるほど、データベースは実世界およびそれ自体と本質的に一貫し、データベースの事実が不注意で真実ではなくなるのが難しくなります。データベース設計は芸術ですが、間違いなく科学でもあります。
彼が書いたものすべてに目を向けているわけではありませんが、私はChris Dateの本、Database Design and Relational Theory:Normal Forms and All That Jazzをお勧めします。