Thuộc tính cơ bản của khóa duy nhất là thatit phải là duy nhất. Tạo một phần của khóa đó Nullable sẽ phá hủy thuộc tính này.
Có hai giải pháp khả thi cho vấn đề của bạn:
-
Một cách, sai lầm, sẽ là sử dụng một ngày phép thuật nào đó để đại diện cho điều chưa biết. Điều này chỉ giúp bạn vượt qua "vấn đề" DBMS nhưng không giải quyết vấn đề theo nghĩa logic. Những người này là một và giống nhau hay họ là những cá thể duy nhất? Nếu bạn biết họ khác nhau thì bạn sẽ quay lại vấn đề cũ - Chìa khóa duy nhất của bạn chỉ là không duy nhất. Thậm chí đừng nghĩ đến việc gán toàn bộ dãy dữ liệu ma thuật để đại diện cho "chưa biết" - đây thực sự là con đường dẫn đến địa ngục.
-
Một cách tốt hơn là tạo thuộc tính EmployeeId làm khóa thay thế. Đây chỉ là số nhận dạng tùy ý mà bạn gán cho các cá nhân mà bạn biết là duy nhất. Thisidentifier thường chỉ là một giá trị số nguyên. Sử dụng khóa đại diện EmployeeId ở mọi nơi mà trước đây bạn đã sử dụng Tên / Ngày sinh. Điều này sẽ thêm một bảng mới vào hệ thống của bạn nhưng giải quyết vấn đề giá trị không xác định một cách mạnh mẽ.