Avatar billede suix Nybegynder
31. august 2012 - 12:41 Der er 11 kommentarer

Hjælp til db design

Database design hjælp

Hej Eksperter,
Jeg har lavet følgende database diagram;
http://www.tiikoni.com/ (...)

Men jeg tror der er noget grundlæggende jeg har misforstået. F.eks. skal systemet oprette en bruger, og registrere hvilket "course" personet er tilmeldt, og også subcourse. Men problemet er, at et course kan have 0...M subcourses, så hvis en bruger vælger en course uden nogle subcourses, får jeg vel et problem hvis jeg laver en relation mellem tabellen users og subcourse. Måske mangler jeg en junction tabel et sted, men jeg kan ikke helt gennemskue det. Håber I kan ... :-)
Avatar billede supertekst Ekspert
31. august 2012 - 14:50 #1
Hvad hvis valg af subcourse altid "går gennem" course?

PS: Kan ikke se dit diagram..
Avatar billede suix Nybegynder
31. august 2012 - 14:53 #2
Avatar billede suix Nybegynder
31. august 2012 - 15:03 #3
ideelt set (i mit hoved) skal der være en tabel der lagrer hvilke courses + subcourses brugeren er meldt til. Men da en bruger nødvendigvis ikke har et subcourse bliver det vel et problem mht. fremmednøgle til subcourses tabellen ...?
Avatar billede arne_v Ekspert
01. september 2012 - 03:08 #4
er det rigtigt at course-subcourse er M:M??
Avatar billede arne_v Ekspert
01. september 2012 - 03:08 #5
users-course maa da skulle vaere M:M!
Avatar billede suix Nybegynder
01. september 2012 - 08:19 #6
Hej Arne,
course-subcourse er faktisk ikke M:M så junction tabellen kan fjernes.
Klasse er egentlig nok en bedre betegnelse end course, så users-course skulle være god nok.
Avatar billede suix Nybegynder
01. september 2012 - 13:34 #7
Men mit hoved-"problem" er; hvordan registrerer man at en user altid er tilmeldt et course/klasse, men måske også et subcourse. Kræver det hver sin tabel til både course og subcourse der registrerer brugerid'et?
Avatar billede janus_007 Nybegynder
01. september 2012 - 17:16 #8
Du skal heller ikke gøre sådan synes jeg :)

Lav din course-table med en fremmednøgle til user-tabeller og gør det samme med subcourse.

Dine forretningsregler skal du udtrykke i logiske constraints, lad være med at hoppe i fælden at forsøge at modellere dem. De kan måske ændre sig og så står man med en ubrugelig datamodel.

Derudover synes jeg måske også dine ekstra tabeller til usertyper og intervention måske bør droppes, hvad indeholder de? ja ja.. jeg ved godt du prøver at overholde 2NF, men når det kommer til type-tabeller så bør man normalisere med sund fornuft :) naturligvis sålænge man kan argumentere for det.

Tilsidst vil jeg sige at du skal bruge den samme naming-convention i alle tabeller.
Avatar billede suix Nybegynder
01. september 2012 - 21:23 #9
Jeg har lavet følgende løsning;
http://www.tiikoni.com/tis/view/?id=d0535e0
som løser problemet. Jeg bruger en tabel, user_enrollment til at lagre hvilke klasser / subklasser brugeren er meldt til, og ved at tillade null i kolonnen subclass_id kan man være tilmeldt 0 subklasser.
Avatar billede janus_007 Nybegynder
01. september 2012 - 23:06 #10
Jep, god løsning :)

Men få lige styr på din naming, så spiller det. Bestem dig for om du vil bruge underscores, Camel Case eller pascal case.
Avatar billede arne_v Ekspert
02. september 2012 - 21:55 #11
Er det rigtigt at test resultat kun haenger paa user og ikke paa class?
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
Computerworld tilbyder specialiserede kurser i database-management

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