sql >> Database >  >> RDS >> Sqlserver

maak een externe sleutel zonder een primaire sleutel

Zeer goede vraag. Er is geen fundamentele reden waarom een ​​referentiële beperking niet zou verwijzen naar iets anders dan een kandidaatsleutel. Er is zelfs een naam voor dergelijke beperkingen:Inclusion Dependencies. Een externe sleutel is slechts een soort inclusie-afhankelijkheid waarbij het doel van de beperking toevallig een kandidaatsleutel is.

Helaas biedt SQL geen goede ondersteuning voor inclusie-afhankelijkheden of zelfs voor referentiële beperkingen in het algemeen. SQL beperkt zijn zogenaamde FOREIGN KEY-beperkingen tot het verwijzen naar de kolommen van een UNIEKE of PRIMARY KEY-beperking (niet noodzakelijkerwijs een kandidaat-sleutel).

Dus waar je tegenaan bent gelopen, is echt een dubieuze beperking van SQL. Het betekent niet dat je iets heel erg verkeerd doet.



  1. Hoe GraphQL en PostgreSQL te verbinden

  2. PLSQL-codeprestaties afstemmen of testen in Oracle D2k-formulieren

  3. MySQL TRUNCATE() Functie – Een getal afkappen tot een bepaald aantal decimalen

  4. Oracle heeft standaard NLS_LANG ingesteld