Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

creare una chiave esterna senza una chiave primaria

Ottima domanda. Non esiste una ragione fondamentale per cui un vincolo referenziale non dovrebbe fare riferimento a qualcosa di diverso da una chiave candidata. C'è anche un nome per tali vincoli:Dipendenze di inclusione. Una chiave esterna è solo un tipo di dipendenza di inclusione in cui l'obiettivo del vincolo è una chiave candidata.

Sfortunatamente SQL non fornisce un buon supporto per le dipendenze di inclusione o anche per i vincoli referenziali in generale. SQL limita i suoi cosiddetti vincoli FOREIGN KEY a fare riferimento alle colonne di un vincolo UNIQUE o PRIMARY KEY (non necessariamente una chiave candidata).

Quindi ciò che hai incontrato è davvero una dubbia limitazione di SQL. Non significa che stai facendo qualcosa di molto sbagliato.