Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Unikalny klucz z wartościami NULL

Podstawowa właściwość unikalnego klucza jest to, że musi być wyjątkowy. Uczynienie części tego klucza Nullable niszczy tę właściwość.

Istnieją dwa możliwe rozwiązania Twojego problemu:

  • Jednym ze sposobów, niewłaściwym, byłoby użycie jakiejś magicznej daty do przedstawienia nieznanego. To po prostu pozwala ominąć „problem” DBMS, ale nie rozwiązuje problemu w sensie logicznym. Spodziewaj się problemów z dwoma wpisami „John Smith” o nieznanych datach urodzenia. Czy ci faceci są jednym i tym samym, czy też są wyjątkowymi osobami? Jeśli wiesz, że są inni, to wracasz do tego samego starego problemu – Twój Unikalny Klucz po prostu nie jest wyjątkowy. Nawet nie myśl o przypisaniu całej gamy magicznych dat do reprezentowania "nieznanego" - to naprawdę droga do piekła.

  • Lepszym sposobem jest utworzenie atrybutu EmployeeId jako klucza zastępczego. To tylko arbitralny identyfikator, który przypisujesz osobom, które znasz są wyjątkowe. Ten identyfikator jest często po prostu wartością całkowitą. Następnie utwórz tabelę Employee, aby powiązać identyfikator pracownika (unikalny, nie dopuszczający wartości null) do tego, co uważasz za zależne atrybuty, w tym przypadku Name i Date of Birth (z których każdy może mieć wartość null). Użyj klucza zastępczego identyfikatora pracownika wszędzie tam, gdzie poprzednio używano nazwy/daty urodzenia. To dodaje nową tabelę do twojego systemu, ale rozwiązuje problem nieznanych wartości w solidny sposób.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oblicz decyla w MySQL na podstawie sum

  2. Eksportuj listę ładnych permalinków i tytuł posta

  3. Jak mogę przechowywać symbol '€' w MySQL używając PHP?

  4. Czy możesz użyć wielu kolumn dla zapytania, którego nie ma?

  5. MySql nie może zrobić kolumny auto_increment