Avatar billede turkis Nybegynder
25. maj 2002 - 12:35 Der er 15 kommentarer og
1 løsning

Svær relation (selvrefererende)

Jeg har en tabel (ordtabel) i en database, hvor jeg ønsker at lave en relation fra en entitet (ordID) til en anden entitet i samme tabel (ord). (ét ord skal knyttes til et andet ord i en oversættelse). Fremmednøgle peger altså på en primærnøgle i samme tabel. Hvordan gøres dette i praksis?

Jeg har oprettet en tabel hvor de to entitetstyper der indgår i relationen findes, altså ordID og ord. Der er en forbindelse over ordID. Anden kolonne i denne tabel henter så sine værdier fra kolonnen ord.

Er dette så en selvrefererende relation? Eller hvordan brude det gøres??
Avatar billede hansk Nybegynder
25. maj 2002 - 12:39 #1
Jeg vil foreslå at du laver en relationstabel ved siden af din ordtabel
Så kan du lave alle de relationer du har lyst til.
Avatar billede terry Ekspert
25. maj 2002 - 12:40 #2
You have another field (foreign key) which reference the primary key. If the foreign key is 0 then there is no (parent)
Avatar billede terry Ekspert
25. maj 2002 - 12:41 #3
This is a typical parent child realtionship and you dont need extra tables
Avatar billede hansk Nybegynder
25. maj 2002 - 12:41 #4
Iøvrigt:
En entitet kan bedst oversættes til tabel. Det du taler om når du siger entitetstyper kan bedst oversættes til attributter.
Avatar billede hansk Nybegynder
25. maj 2002 - 12:45 #5
Sådan noget som:

OrdTabel:
OrdID
Odd
Beskrivelse

OrdRelation:
OrdID
OrdID
Avatar billede a1a1 Novice
25. maj 2002 - 12:47 #6
et ord kan have flere "underord", kan dette ord ikke selv være et "under" ord af et andet?

ordtabel
id, ord

ordXtabel
fk_topord, fk_underord

så kan du "kryds" referere som du har lyst til?
Avatar billede a1a1 Novice
25. maj 2002 - 12:48 #7
ijjeee hansk....
25. maj 2002 - 12:49 #8
Terry, du kan ikke nøjes med den ene tabel her (for så kan ét ord kun referere til ét andet ord)
hansk's løsning må være den rigtige.
Avatar billede mhoffmann Nybegynder
25. maj 2002 - 12:49 #9
Så vidt jeg kan forstå på dit spørgsmål, så vil du lave et relation fra et felt i en tabel, til et andet felt i den samme tabel...?? Hvad vil du få ud af det. Prøv at forklare dit problem lidt nærmere...
Avatar billede terry Ekspert
25. maj 2002 - 13:02 #10
Yes this is the same as a many to many relationship so YES Thomas another table will be needed as hansk says :o)

I think it can be solved with a single table though!
Avatar billede turkis Nybegynder
25. maj 2002 - 13:06 #11
Hansk, tak for svaret.
Men det ser ud som om det ikke kan lade sig gøre at have en relationstabel med 2 gange ordID. Og hvordan skulle jeg egentlig lave joinforbindelser og nøgler i de to tabeller du har foreslået. Og hvordan viser jeg, de to ord som ordID'erne refererer til?
Avatar billede a1a1 Novice
25. maj 2002 - 13:21 #12
muligvis såån:
SELECT o.id, o.ord, osub.ID, osub.ord FROM ((tbl_ord o
LEFT JOIN tbl_ord2ord o2 ON o.id = o2.fk_topord)
LEFT JOIN tbl_ord osub ON o2.fk_underord = osub.ID)
WHERE ord = 'supermand'

hvis det nu var supermand...
Avatar billede a1a1 Novice
25. maj 2002 - 13:22 #13
o.id = org. ord ID
o.ord = org. ord
osub.ID = under ord
osub.ord = under ord
Avatar billede hansk Nybegynder
25. maj 2002 - 13:22 #14
OrdRelationstabellen skal have felterne OrdIDFra og OrdIDTil. Primær key er begge nøgler.

Joins laves fra Ord(OrdID) til OrdRelation(OrdIDFra)
og fra OrdRelation(OrdIDTil) til Ord_1(OrdID)
Avatar billede a1a1 Novice
25. maj 2002 - 13:22 #15
osub.ID = under ord ID selfølgelig....
Avatar billede hansk Nybegynder
25. maj 2002 - 13:23 #16
I din query builder trækker du simpelthen ordtabellen ind to gange.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester