sql >> Base de Datos >  >> RDS >> Mysql

Clave única con NULL

Una propiedad fundamental de una clave única es que debe ser único. Hacer que parte de esa clave sea anulable destruye esta propiedad.

Hay dos posibles soluciones a su problema:

  • Una forma, la incorrecta, sería usar alguna fecha mágica para representar lo desconocido. Esto simplemente le ayuda a superar el "problema" de DBMS, pero no resuelve el problema en un sentido lógico. Espere problemas con dos entradas de "John Smith" con fechas de nacimiento desconocidas. ¿Son estos tipos iguales o son individuos únicos? Si sabe que son diferentes, entonces vuelve al mismo viejo problema:su clave única simplemente no es única. Ni siquiera pienses en asignar toda una gama de fechas mágicas para representar "desconocido":este es realmente el camino al infierno.

  • Una forma mejor es crear un atributo EmployeeId como clave sustituta. Este es solo un identificador arbitrario que asigna a las personas que conoce. son únicos. Este identificador suele ser solo un valor entero. A continuación, cree una tabla de empleados para relacionar el Id. de empleado (clave única que no acepta valores NULL) con lo que cree que son los atributos dependientes, en este caso, el nombre y la fecha de nacimiento (cualquiera de los cuales puede aceptar valores NULL). Utilice la clave sustituta de EmployeeId en todos los lugares en los que haya utilizado previamente el nombre/fecha de nacimiento. Esto agrega una nueva tabla a su sistema, pero resuelve el problema de los valores desconocidos de manera sólida.