CompusaMedlem sedan jan. 20023 327 inlägg Låt oss säga att jag har följande tre tabeller:
Tabell A
A1 PK
A2
PK: A1
Tabell B
B1
B2
FK: B2 FK till A1
PK: B1, B2
Tabell C
C1
C2
C3
FK: C2 till B1, C3 FK till A1
I tabell C vill jag att primärnyckel ska vara kombinationen C1, C2, C3 där C2 och C3 är främmande nycklar till hela primärnyckeln av tabell B. Är det då rätt att ange de främmandenycklarna i tabellen C på följande vis?
CONSTRAINT BFK
FOREIGN KEY (C2, C3) REFERENCES B(B1, B2)
ON DELETE CASCADE ON UPDATE CASCADE
Anledningen till att jag undrar detta är för att jag refererar en främmande nyckel till en främmande nyckel dvs:
C.C3 -> B.B2 -> A.1
Om jag försöker på följande vis så får jag error, att unikt index ej kan skapas:
FOREIGN KEY (C2) REFERENCES B(B1)
ON DELETE CASCADE ON UPDATE CASCADE
FOREIGN KEY (C3) REFERENCES A(A1)
ON DELETE CASCADE ON UPDATE CASCADE
LarsGMedlem sedan dec. 200012 464 inlägg
Är det då rätt att ange de främmandenycklarna i tabellen C på följande vis?
Ja. Vilka foreign keys som finns i B är helt irrelevant.
CompusaMedlem sedan jan. 20023 327 inlägg Okej. Jag vet inte om jag blivit lurad av kurslitteraturen. Men i de relationsscheman som finns där så går alltid de främmande nycklarna till basattributet. Dvs ingen fk går till en annan fk. Hade det varit irrelevant även om detta attribut inte hade varit en del av primärnyckel?
Om jag har entitetstypen A och entitetstypen B som ingår i relationen S och denna relation ger upphov till att A behöver ha en FK till B, ska jag alltid hämta Fk från denna relation, även om detta attribut kan vara fk till en annan enitetstyp? Har jag tolkat ditt svar rätt så är det så, och rent logiskt så borde det också vara på det viset.
LarsGMedlem sedan dec. 200012 464 inlägg
Hade det varit irrelevant även om detta attribut inte hade varit en del av primärnyckel?
Vilket attribut syftar du på?
CompusaMedlem sedan jan. 20023 327 inlägg
LarsG skrev:
Hade det varit irrelevant även om detta attribut inte hade varit en del av primärnyckel?
Vilket attribut syftar du på?
Ursäkta att jag var otydlig: B.B2 syftade jag på :)
Jag tror jag besvarat mig själv i inlägget ovan, men du får gärna verifiera. Jag tror det är jag som missuppfattat det hela. Naturligtvis ska man referera fk till den tabell som ingår i den relation som ger upphov till att fk behövs?