Properti dasar dari kunci unik adalah bahwa itu harus unik. Menjadikan bagian dari kunci Nullable akan menghancurkan properti ini.
Ada dua kemungkinan solusi untuk masalah Anda:
-
Salah satu cara, cara yang salah, adalah menggunakan tanggal ajaib untuk mewakili yang tidak diketahui. Ini hanya membuat Anda melewati "masalah" DBMS tetapi tidak menyelesaikan masalah secara logis. Harapkan masalah dengan dua entri "John Smith" yang tanggal lahirnya tidak diketahui. Apakah orang-orang ini satu dan sama atau mereka individu yang unik? Jika Anda tahu mereka berbeda maka Anda kembali ke masalah lama yang sama -Kunci Unik Anda tidak unik. Jangan pernah berpikir untuk menetapkan rentang tanggal ajaib untuk mewakili "tidak diketahui" - ini benar-benar jalan menuju neraka.
-
Cara yang lebih baik adalah membuat atribut EmployeeId sebagai kunci pengganti. Ini hanyalah pengidentifikasi arbitrer yang Anda tetapkan ke individu yang kenal unik. Pengenal ini sering kali hanya berupa nilai integer. Kemudian buat tabel Karyawan untuk menghubungkan EmployeeId (unik, non-nullablekey) dengan apa yang Anda yakini sebagai atributer dependen, dalam hal iniNama dan Tanggal Lahir (semuanya dapat dibatalkan). Gunakan kunci pengganti EmployeeId di mana pun Anda sebelumnya menggunakan Nama/Tanggal Lahir. Ini menambahkan tabel baru ke sistem Anda tetapi memecahkan masalah nilai yang tidak diketahui dengan cara yang kuat.