14. december 2010 - 11:00Der er
5 kommentarer og 1 løsning
Opbygning af database til registrering af atletikresultater
Jeg har brug for input til, hvordan jeg skal skrue en database sammen i Access 2003, så det kan hjælpe med at holde styr på atletikresultater for ca. 50 atleter. Jeg ønsker at indtaste resultater fra de forskellige stævner børnene deltager i, i de discipliner de er med i (typisk 3 discipliner pr. stævner ud af 5-6 mulige). Når resultaterne er tastet ind - ønsker jeg at kunne gøre følgende automatisk:
• Udtrække den enkelte atlets personlige rekord (PR) i hver disciplin • Udtrække den bedste atlets resultat i hver disciplin (fx kan der være 20 stævner med 20 atleter der alle har sprunget længdespring ved hvert stævne, det er det bedste spring blandt alle de spring, jeg gerne vil vise) • + en masse andet statistik
Jeg er dog usikker på hvilke tabeller det kræves og relationerne derimellem. Min tanker er følgende fire tabeller:
Mine spørgsmål er: Er det de rigtige tabeller? Hvordan laver jeg relationerne imellem tabellerne? Skal der oprettes flere tabeller i den forbindelse? Hvilke ID skal jeg have med i de forskellige tabeller? ...og er det andet jeg bør overveje?
Håber der er en venlig sjæl, der har ideer til strukturering af databasen og/eller har nogle link til noget der ligner.
For ATLETER skal du naturligvis have et unikt ID, ligesom til STÆVNE (f.eks. hhv. "aID" og "sID"). Disciplinerne er jeg lidt usikker på, så jeg forestiller mig det foregår som følgende: Et disciplin er uafhængigt af stævnerne, dvs. man kan have et stævne med 60m og længde, og et andet stævne med 60m, højde og kuglestød. Dette gør, at du din DISCIPLIN-tabel får følgende udseende: [code] dID | disciplin -----+-------------- 1 | Længdespring 2 | Kuglestød 3 | 60 m løb [/code] Tabellen kan evt. udvides med en type (eks. "løb", "kast", "æde"). Din RESULTATER-tabel bliver så en krydsreference tabel, med følgende format: [code] aID | sID | dID | resultat -----+-----+-----+---------- 1 | 1 | 2 | 15 m 2 | 1 | 2 | 17,8 m 1 | 2 | 2 | 36 m 1 | 2 | 3 | 17,01 s [/code] Dvs. atlet 1 har i stævne 1 kastet 15 m i kuglestød, i stævne 2 kastet 26 m i kuglestød, samt i stævne 2 løbet 60 m på 15,01 s. Atlet 2 har kun deltaget i stævne 1 med kuglestød, 17,8 m. Hvis du blot regner med sekunder/minutter, kan din resultat-kolonne sagtens have et decimal-datatype.
Resten af dine opgaver (rekorder etc.) er blot et spørgsmål om at lave nogle joins og grupperinger.
For lige at få skåret det helt ud i pap for en databasenovice - så får jeg disse 4 tabeller med følgende indhold?
ATLETER Aid Fnavn Enavn Årgang Køn .
STÆVNE Sid Sted Dato
DISCIPLIN Did Længdespring Kuglestød 60 meter Etc.
RESULTAT Aid Sid Did resultater
Skal Aid ikke med i tabellen STÆVNE og Aid og Sid med i DISCIPLIN? Eller hvordan hænger de tre tabeller sammen? Hvad bliver nøglen i tabellen RESULTAT?
Ja, så er jeg med, men dine tabel-forklaringer passer ikke for DISCIPLINER (du blander felter og rækker). I mellemtiden har jeg konstrueret nogle sjove data.
Eksempel data (nogle kolonner udeladt af dovenskab): ATLETER [code] aID | FNavn -----+--------------- 1 | Jens 2 | Pauline 3 | Christophpher [/code]
DISCIPLINER [code] dID | disciplin -----+-------------- 1 | Længdespring 2 | Kuglestød 3 | 60 m løb [/code]
Hvis Jens kun løber 60 m løb, vil hans resultatkort se sådan ud: Jens: 60 m løb 30 s ved stævnet i Bølleby, 2000 2 min ved stævnet i Lem, 1999 3 min ved stævnet i Århus, 1998
Paulina derimod både løber og springer, men har kun løbet de første to år: Paulina: 60 m løb 1 min, 30s ved stævnet i Lem, 1999 2 min ved stævnet i Århus, 1998 Længdespring 48 m ved stævnet i Lem, 1999 45 m ved stævnet i Bølleby, 2000 30 m ved stævnet i Århus, 1998
Christophpher (stakkels barn) kan ikke beslutte sig: Christophpher: 60 m løb 60 s ved stævnet i Bølleby, 2000 Længdespring 17 m ved stævnet i Lem, 1999 Kuglestød 18 m ved stævnet i Århus, 1998
Med det på plads, kan vi udfylde RESULTATER-tabellen. Bemærk tabel-navnene; de er alle i flertal, idet de indikerer at de indeholder flere atleter, discipliner, resultater eller stævner. Bemærk også, at jeg kalder feltet "resultat" med ental, idet feltet kun indeholder ét resultat per række, og altså ét resultat per atlet-stævne-disciplin kombination. Og det er altså denne kombination derudgør din nøgle i RESULTATER: RESULTATER [code] aID | sID | dID | resultat -----+-----+-----+---------- 1 | 1 | 3 | 3 1 | 2 | 3 | 2 1 | 3 | 3 | 0,5 2 | 1 | 2 | 2 2 | 2 | 2 | 1,5 2 | 1 | 1 | 30 2 | 2 | 1 | 48 2 | 3 | 1 | 45 3 | 3 | 3 | 1 3 | 2 | 1 | 17 3 | 1 | 2 | 18 [/code]
Fordelen ved denne model er, at du løbende kan tilføje discipliner, uden at ændre på strukturen, samt at der her ikke er krav på at atleterne deltager i samtlige discipliner. For at lave en nøgle af flere felter, skal du i tabeldesign-vinduet markere de tre tabeller (ved at holde Ctrl nede) og derefter trykke på nøglen (alt efter version af Access).
Dine tabeller skal altså have følgende: ATLETER aID (autonummering - primær nøgle) Fnavn (tekst) Enavn (tekst) Årgang (tal) Køn (tekst, brug evt. guiden opslag)
STÆVNER sID (autonummering - primær nøgle) sted (tekst) dato (dato)
DISCIPLINER dID (autonummering - primær nøgle) navn (tekst)
RESULTATER aID (langt heltal) sID (langt heltal) dID (langt heltal) resultat (decimaltal)
Du opretter også relationer, her er der en én-til-mange relation mellem aID i ATLETER og aID i RESULTATER, osv.
Tak det giver god mening det du skriver. Jeg lukker tråden og giver dig point. Der dukker sikkert flere spørgsmål op undervejs, når jeg går i gang med selve arbejdet.
Synes godt om
Ny brugerNybegynder
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.