Avatar billede natsprinter Nybegynder
03. november 2005 - 14:48 Der er 5 kommentarer og
1 løsning

Når relationer relaterer for meget

Ja jeg ved god overskriften er underlig, men det er den bedste måde for mig at anskueliggøre problemstillingen.

Jeg har en tabel med ansatte, disse ansatte har alle en funktion. Disse funktioner er sat i ren relation til en tabel indeholdende de de forskellige relationer.

I hovedtabellen har jeg altså en fremmednøgle, som referere til hovednøglen funktionsdatabasen.

Det er der jo ingen ben i - nu kommer grunden til min ansøgning om kvalificeret hjælp.

Hvad nu hvis den samme person har f.eks. 3 funktioner i firmaet. Så er jeg i min begrebsverden på den. Jeg har jo kun én fremmednøgle til at lave opslaget i funktionsdatabasen.

Svært at forklare - men for den der forstår spørgsmålet, deler jeg villigt ud af mine dyrbare point :-)
Avatar billede Slettet bruger
03. november 2005 - 14:57 #1
Du skal nok lave en ny tabel, der indeholder dine ansattes funktioner.
Hvis f.eks. dine ansatte har et unikt id i din hovedtabel og hver funktion har et unikt id vil fu f.eks. have 3 poster der sådan ud:

Hovedtabel:
id,navn
1,Peter
2,Hans

Funktionstabel:
id,funktion
1,Rengøringsassistent
2,Pedel
3,Sælger
4,Sekretær

ansattes_funktioner
ansat,funktion
1,2
2,2
2,3
2,4


En tabel der indeholder funktioner.
Avatar billede natsprinter Nybegynder
03. november 2005 - 15:05 #2
Forstår jeg det sådan at der ikke skal være en fremmednøgle til ansattes_funktioner, eller skal id i hovedtabel være fremmednøgle til en id i ansattes_funktioner ?
Avatar billede Slettet bruger
03. november 2005 - 15:12 #3
Kender ikke de udtryk du der bruger, da det er lang tid siden jeg sidst har arbejder i lige netop access.

Din hovedtabel (den med de ansatte) har en nøgle der entydigt identificerer hver medarbejder.

Denne nøgle skal være hovednøgle i ansattes_funktioner, SAMMEN med nøglen der kommer fra funktionstabellen. På denne måde vil du ikke kunne tilknytte samme funktion til en medarbejder mere end én gang, men du vil kunne give samme medarbejder flere funktioner, og lidt krypist: samme funktion til flere medarbejdere.

I fukntionstabellen skal hver funktion selvfølgelig også have sin egen unikke nøgle, hvilket kunne være et auto_increment id.
Avatar billede natsprinter Nybegynder
03. november 2005 - 17:40 #4
Men jeg syntes det er et problem at udtrække påster, eller relaterer dem, når de er separeret med komme. Hvordan skal jeg udtrække 2,3 i en tabel, hvor den entydige id er f.eks. id=2

Det her giver mig grå hår i hovedet.
Avatar billede ldanielsen Nybegynder
03. november 2005 - 17:52 #5
du skal ikke have 2,3 i feltet! du skal have 2 i kolonnen ansat, og 3 i kolonnen funktion. Hvilket betyder at ansat 2 har funktionen 3, dvs at Hans er sælger. Og han er også Pedel og Sekretær.

Det kaldes en mange-til-mange relation, og du bruger begge felter i ansattes_funktioner som fremmednøgler. Du mangler så en primærnøgle, og du kan vælge at lave en kombineret nøgle med begge felter
Avatar billede fdata Forsker
03. november 2005 - 20:16 #6
Når du skal trække data ud, skal du kombinere alle 3 tabeller i en forespørgsel:
- Feltet ansat i ansattes_funktioner peger på id i Hovedtabel
- Feltet funktion i ansattes_funktioner peger på id i Funktionstabel
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