Avatar billede -anders- Juniormester
17. december 2014 - 22:24 Der er 8 kommentarer og
1 løsning

Foreslag til database design, grundlæggende tabeller

Hej Eksperter

Jeg arbejder i Access 2010. Jeg er ikke sikker på at nedenstående tabeldesign er fornuftigt til min database, så jeg ville høre om der er nogen forslag til at gøre det, måske på en anden måde. Det en længere omgang så det svært at gøre det kort.

Jeg starter ud med 2 tabeller:
TBLbrugere med nedenstående felter:
brugerID (autonummering, primær nøgle)
brugerfuldenavn (tekst)
brugerrolle (tal)

TBLroller med nedenstående felter:
rolleID (automummering, primær nøgle)
rollenavn (tekst)

Jeg går så tilbage til TBLbrugere og laver et opslag i feltet brugerrolle fra TBLroller med relationstypen en til mange. Nu kan jeg oprette en bruger og vælge hvilken rolle bruger skal have i feltet brugerrolle. På denne måde kan der ligger mange brugere i TBLbrugere, og mange roller i TBLroller, men hver bruger kan kun tildeles en rolle i TBLbrugere. Det fint nok.

Det ikke kun brugere der skal registeres for en rolle, der skal også registreres en eller flere grupper til rollen, dvs. at en bruger har kun en rolle, men den rolle som er tildelt bruger kan have mange grupper tilknyttet (mange til mange). Jeg opretter så 2 nye tabeller.

TBLgrupper med nedenstående felter:
gruppeid (autonummering, primær nøgle)
gruppenavn (tekst)

TBLrolledata med nedenstående felter:
id (autonummering)
rolle (tal)
gruppe (tal)

Jeg går så tilbage til TBLdata og laver et opslag i feltet rolle fra TBLroller, og et opslag i feltet gruppe fra TBLgrupper. Til sidst går ind i relationsvinduet og sætter dataintegritet på alle de relaterede tabeller, og det ser fint ud. TBLdata er som jeg ser det en mange til mange tabel som indeholder data fra TBLroller og TBLgrupper, men ikke fra TBLbrugere?

Ovenstående design "skaber" nu en dobbelt relation mod TBroller i feltet rolleid (brugerrolle fra TBLbrugere, og rolle fra TBLdata). Når jeg åbner TBLroller skal jeg vælge hvilket under dataark jeg vil vise, og det i grunden fair nok da jeg har en dobbelt relation til samme felt i TBLroller. Alt ser ud til at virke, relationerne virker efter hensigten etc.

Det jeg ikke er sikker på er! Er det ok at lave på denne måde, er databasen normaliseret, er det "god tone" at gøre det på denne måde med en dobbelt relation. Kommentarer/forslag modtages med kyshånd :-)

Hilsen
Anders.
Avatar billede -anders- Juniormester
17. december 2014 - 22:43 #1
UPS

Jeg glemte at nævne at feltet id i TBLdata er primær nøgle.
Avatar billede Slettet bruger
18. december 2014 - 08:47 #2
Ja, det er fint nok!~)
Avatar billede terry Ekspert
18. december 2014 - 13:35 #3
Hi Anders
I assume you mean tblrolledata when you say tblData?

Someone out there might not agree with your design but from where I'm sitting it looks fine.

No problem using the same table (tblRolle) in two different relationships.
Avatar billede terry Ekspert
18. december 2014 - 13:37 #4
and spg seems to think so too :-)
Avatar billede terry Ekspert
18. december 2014 - 13:38 #5
just one thing you might consider. Can a user have more than one role? I assume a user can work on more than one project at the same time!
Avatar billede -anders- Juniormester
18. december 2014 - 17:59 #6
Hej, og tak for indlæggende.

Det fint at læse at i begge mener at mit tabeldesign ikke er helt ude i hampen, jeg tror jeg vil fortsætte af dette spor.

terry>> Ja jeg har tænkt tanken at en bruger kunne have flere roller, men i dette tilfælde er det ikke på banen.

Læg et svar begge to, så deler jeg points mellem jer :-)

Hilsen
Anders.
Avatar billede terry Ekspert
18. december 2014 - 18:13 #7
tak
Avatar billede -anders- Juniormester
19. december 2014 - 17:10 #8
Hej terry

her er din points, tak for hjælpen, og god jul :-)

Hilsen
Anders.
Avatar billede terry Ekspert
19. december 2014 - 17:31 #9
Thanks Anders and a merry Christmas to you too.
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

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