sql >> データベース >  >> RDS >> Mysql

第一正規形と姓名

    1NFは原子性に関するものであり、冗長性に関するものではありません(これが、より高い正規形に関するものです)。基本的に、すべての属性がアトミックである場合、テーブルは1NFになります。

    明らかに、テーブルが1NFにあるかどうかは、「アトミック」として定義するものによって異なります。 「原子性」が実際に意味することは、いくつかの論争の問題ですが、ここでは実際的なケースバイケースのアプローチを取り、単純に質問します:

    私が解決しようとしている問題のコンテキストで、値の一部にアクセスすることは意味がありますか、それとも常に値全体にアクセスしますか?

    私が常に全体にアクセスする場合、それはその特定のコンテキストではアトミックです。

    あなたの例では、first_nameにアクセスしたいと思うでしょう。 およびlast_name 個別に、full_name 非原子的であり、それが1NFに違反する理由になります。ただし、名前と名前に別々にアクセスする必要がないことがわかっている場合は、ただにすることができます。 full_name まだ1NFに違反していません。

    値への「アクセス」は、ここではかなり広く理解されている必要があります。明らかにデータベースから読み取ることを意味する場合もありますが、制約で使用したり、インデックスを作成したりすることも意味する場合があります...



    1. NOLOCK(SQL Serverヒント)は悪い習慣ですか?

    2. Bcryptハッシュパスワードをデータベースに保存するためにどの列タイプ/長さを使用する必要がありますか?

    3. 列の数はMYSQLの速度に影響しますか?

    4. PDOデータベース接続による簡単なCRUD操作