Mysql
 sql >> база данни >  >> RDS >> Mysql

Уникален ключ с NULL

Основно свойство на уникален ключ е, че трябва да е уникален. Правенето на част от този ключ с Nullable унищожава това свойство.

Има две възможни решения на проблема ви:

  • Един от начините, грешен начин, би бил да се използва някаква магическа дата за представяне на неизвестно. Това просто ви преодолява "проблема" на СУБД, но не решава проблема в логически смисъл. Очаквайте проблеми с два записа на "Джон Смит" с неизвестна дата на раждане. Тези момчета едно и също ли са или са уникални личности? Ако знаете, че са различни, тогава се връщате към същия стар проблем - вашият уникален ключ просто не е уникален. Дори не си помисляйте да задавате цял набор от магически дати, които да представляват „неизвестни“ – това наистина е пътят към ада.

  • По-добър начин е да създадете атрибут EmployeeId като сурогатен ключ. Това е просто произволен идентификатор, който присвоявате на лица, които познавате са уникални. Този идентификатор често е само целочислена стойност. След това създайте таблица Employee, за да свържете EmployeeId (уникален ключ без нула) с това, което смятате, че са зависими атрибути, в този случай Име и Дата на раждане (всеки от които може да бъде нула). Използвайте сурогатния ключ EmployeeId навсякъде, където преди сте използвали името/датата на раждане. Това добавя нова таблица към вашата система, но решава проблема с неизвестните стойности по стабилен начин.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Прикачване на съществуваща база данни с MySQL

  2. SELECT на View съдържа подзаявка в клаузата FROM

  3. Чувствителни ли са UNIQUE индексите в MySQL?

  4. MySQL насипна маса пускане, където таблица като?

  5. Конструкция на SQL заявка - разделяне на данни в колона в две колони