Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Fremdschlüssel ohne Primärschlüssel erstellen

Sehr gute Frage. Es gibt keinen grundsätzlichen Grund, warum eine referenzielle Einschränkung nicht auf etwas anderes als einen Kandidatenschlüssel verweisen sollte. Es gibt sogar einen Namen für solche Einschränkungen:Inklusionsabhängigkeiten. Ein Fremdschlüssel ist nur eine Art Inklusionsabhängigkeit, bei der das Ziel der Einschränkung zufällig ein Kandidatenschlüssel ist.

Leider bietet SQL keine gute Unterstützung für Inklusionsabhängigkeiten oder überhaupt für referenzielle Einschränkungen im Allgemeinen. SQL beschränkt seine sogenannten FOREIGN KEY-Einschränkungen darauf, auf die Spalten einer UNIQUE- oder PRIMARY KEY-Einschränkung zu verweisen (jedoch nicht unbedingt ein Kandidatenschlüssel).

Sie sind also wirklich auf eine zweifelhafte Einschränkung von SQL gestoßen. Das bedeutet nicht, dass Sie irgendetwas falsch machen.