webForumDet fria alternativet

Foreign keys trubbel

4 svar · 326 visningar · startad av Compusa

CompusaMedlem sedan jan. 20023 327 inlägg
#1

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
#2

Ä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
#3

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
#4

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
#5

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?

266 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
126 ms — hämta statistik (db)
137 ms — hämta tråd, inlägg och bilagor (db)