sql >> Base de Datos >  >> RDS >> Sqlserver

crear una clave foránea sin una clave principal

Muy buena pregunta. No existe una razón fundamental por la que una restricción referencial no deba hacer referencia a algo que no sea una clave candidata. Incluso hay un nombre para tales restricciones:dependencias de inclusión. Una clave externa es solo un tipo de dependencia de inclusión donde el objetivo de la restricción resulta ser una clave candidata.

Desafortunadamente, SQL no brinda un buen soporte para las dependencias de inclusión o incluso para las restricciones de referencia en general. SQL limita sus llamadas restricciones FOREIGN KEY para hacer referencia a las columnas de una restricción UNIQUE o PRIMARY KEY (aunque no necesariamente una clave candidata).

Entonces, lo que ha encontrado es realmente una limitación dudosa de SQL. No significa que estés haciendo algo muy malo.