1NFは原子性に関するものであり、冗長性に関するものではありません(これが、より高い正規形に関するものです)。基本的に、すべての属性がアトミックである場合、テーブルは1NFになります。
明らかに、テーブルが1NFにあるかどうかは、「アトミック」として定義するものによって異なります。 「原子性」が実際に意味することは、いくつかの論争の問題ですが、ここでは実際的なケースバイケースのアプローチを取り、単純に質問します:
私が解決しようとしている問題のコンテキストで、値の一部にアクセスすることは意味がありますか、それとも常に値全体にアクセスしますか?
私が常に全体にアクセスする場合、それはその特定のコンテキストではアトミックです。
あなたの例では、first_name
にアクセスしたいと思うでしょう。 およびlast_name
個別に、full_name
非原子的であり、それが1NFに違反する理由になります。ただし、名前と名前に別々にアクセスする必要がないことがわかっている場合は、ただにすることができます。 full_name
まだ1NFに違反していません。
値への「アクセス」は、ここではかなり広く理解されている必要があります。明らかにデータベースから読み取ることを意味する場合もありますが、制約で使用したり、インデックスを作成したりすることも意味する場合があります...