Avatar billede chicoboy Novice
14. december 2010 - 11:00 Der 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:

ATLETER (navn, årgang, køn), STÆVNE(sted, dato), DISCIPLINER(60m, længde, højde, kuglestød, osv...), RESULTATER

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.
Avatar billede mrgumble Nybegynder
14. december 2010 - 11:21 #1
Ja, jeg syntes dine tabeller lyder fornuftige.

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.
Avatar billede chicoboy Novice
14. december 2010 - 13:25 #2
Tak for et brugbart svar.

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?
Avatar billede mrgumble Nybegynder
14. december 2010 - 13:36 #3
Prøv at komme med nogle eksempler på, hvad DISCIPLIN kommer til at indeholde af rækker.
Avatar billede chicoboy Novice
14. december 2010 - 13:47 #4
Et eksempel på de data jeg har til rådighed er:

Stævne:12/12-10 Hvidovre

Atlet: Anders Andersen årgang 2001
Resultat: Længdespring 3.81, 60 meter 9.67, Kuglestød 5.89

Atlet: Bente Børgensen årgang 2000
Resultat: Højdespring 1.20, 60 meter 10.05, Kuglestød 4.77

Det er disse oplysninger jeg gerne vil have struktureret i de 4 tabeller.

Mht DISCIPLIN så skal der stå det du selv foreslår i forrige indlæg, altså

dID |  disciplin
-----+-------------- 
  1  | Længdespring 
  2  | Kuglestød 
  3  | 60 m løb

Giver det mening?
Avatar billede mrgumble Nybegynder
14. december 2010 - 14:02 #5
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]


STÆVNER
[code]
sID | Sted    | Dato
-----+---------+----------
  1  | Århus  | 1/4-1998
  2  | Lem    | 1/4-1999
  3  | Bølleby | 1/4-2000
[/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.
Avatar billede chicoboy Novice
14. december 2010 - 14:22 #6
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.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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