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

NULLのある一意のキー

    一意キーの基本的なプロパティ それはユニークでなければならないということです。そのキーの一部をNullableにすると、このプロパティが破棄されます。

    問題には2つの解決策があります。

    • 1つの方法、間違った方法は、未知のものを表すために魔法の日付を使用することです。これにより、DBMSの「問題」を乗り越えることができますが、論理的な意味での問題は解決されません。生年月日が不明な2つの「JohnSmith」エントリの問題が予想されます。これらの人は同じですか、それともユニークな個人ですか?彼らが異なることがわかっている場合は、同じ古い問題に戻ります-あなたのユニークキーはユニークではありません。 「未知」を表すために魔法の日付の全範囲を割り当てることさえ考えないでください-これは本当に地獄への道です。

    • より良い方法は、代理キーとしてEmployeeId属性を作成することです。これは、知っている個人に割り当てる任意の識別子です。 ユニークです。この識別子は多くの場合単なる整数値です。次に、Employeeテーブルを作成して、EmployeeId(一意のnull許容キー)を、依存属性であると思われるもの(この場合はNameとBirthの日付(いずれもnull可能))に関連付けます。以前にName/Date-of-Birthを使用したすべての場所で、EmployeeIdサロゲートキーを使用します。これにより、システムに新しいテーブルが追加されますが、不明な値の問題が確実に解決されます。



    1. パート2–大規模なデータベース図を整理する方法

    2. Oracle Database BLOBからJavaのInputStreamへ?

    3. Azure Data Studio(SQL Server)でクエリ実行プランを表示する方法

    4. AUTO_INCREMENTを既存の列に追加するにはどうすればよいですか?