Avatar billede kelderkold Nybegynder
24. oktober 2012 - 13:23 Der er 12 kommentarer og
1 løsning

database struktur hvad er bedst?

Jeg har nogle data som genereres i et tidtagnings system, nu er det endelig lykkedes mig at overtale programmøren til at give mig data i  komma sep. fil. så det automatisk kan blive smidt i databasen.

men hvordan skal jeg lige bede om at få data mest hensigt mæssigt?
Skal alle data i samme TABEL eller skal jeg lave flere for at begrænse data og lette søgninger?

data er flg:

løb.navn
klasse
løbnr.
dato
kval.spor

pos.
navn (hele navnet deler det ikke op da det også kan være holdnavne)
kval.tid
løb.res.
tot.lap
bedst_tid
S1_lap
S2_lap
S3_lap
S4_lap
S5_lap
S6_lap
S7_lap
S8_lap
S1_tid
S2_tid
S3_tid
S4_tid
S5_tid
S6_tid
S7_tid
S8_tid


for at give et indblik i hvor mange data der kommer, køres der 2 gange ugentligt, der er ca. 12 deltagere
så de 5 øverste er ens for alle
de 23 resterende er for hver deltager.
Avatar billede magic-mouse Novice
24. oktober 2012 - 13:27 #1
Hvad er vigtigts for dig: Performance eller sikkerhed?
Avatar billede kelderkold Nybegynder
24. oktober 2012 - 13:37 #2
ikk forstået (helt ny i databaser), sikkerhed imod hacking eller sikkerhed imod at der sker fejl i dataoverførsler.

det betyder ikke noget om siderne der skal genereres senere tager 0,1 eller 2 sek. stykket.
men kan jo godt se der kommer en del data med tiden har samlet ca. 1200 rækker sammen på 3 år.
Avatar billede magic-mouse Novice
24. oktober 2012 - 13:55 #3
Sikkerhed med hensyn til data tab.

InnoDB er godt hvis du vil have noget sikkert. Den gemmer alt på harddisken så hvis maskinen dør spontant så findes informationen der staidg og hvis din database har data presistance (og det har MySql) skulle du kunne fortsætte transaktionen eller lave en rollback. Dog koster den konstante skriven til harddisken.

MyISAM er en del hurtigere, men går det ned så går det ned. Den er god hvis det er f.eks. informationen til en website, hvor du hovedsageligt kun laver udtræk. Hvis database servern ryger. Så har du ikke lavet noget tab.

Overvej InnoDB læs evt. mere på wikipedia.
Avatar billede magic-mouse Novice
24. oktober 2012 - 13:57 #4
"Skal alle data i samme TABEL",

Med hensyn til om du skal smide alt data i samme tabel. Hvis du ved hvad views er så gør det trygt. Brug views til at tage frem det information du behøver.

Hvis du ikke ved hvad det er så : "views er en "compilet" form af SQL du kan bruge til at begræse et SQL kald."

Lær dig views, det gør livet lettere når du har med databaser at gøre.
Avatar billede kelderkold Nybegynder
24. oktober 2012 - 14:10 #5
harddisk? jeg skal ikke have data til min maskine, jeg bruger et webhotel med mysql server, hvorfra websider skal lave udtræk af de forskellige statistikker og resultater der kan laves af dataene.

Tidstagningsprogrammet gemmer data løbende på harddisk, men først på server ved løbsafslutning, går systemet ned midt i et løb (er aldrig sket) kan vi genstarte udfra data, og dør harddisk er det bare ærgeligt, så går vi hjem, køber en ny og prøver igen i næste uge.


Views, jeg bruger select/from osv. i de forsøg jeg har lavet.
så hvis det er det så er en tabel nok.
Avatar billede magic-mouse Novice
24. oktober 2012 - 14:21 #6
Men databasen gemmer informationen på en harddisk.

Selv på webhotellet har de jo harddiske... der hvor de nu har deres servre.

Uanset hvor harddisken befinder sig kommer det til at tage tid at kontakte harddisken, dette kan handle om 1/1000 - 1/10000 sekund alt efter harddisk type, og om harddisken spinner eller om den er stoppet.

Dette betyder normalt ikke noget, men hvis man som på mit arbejde arbejder med databaser der har 30.000.000 rækker. Kan det tage et par minutter at gå igennem alle.

Vil igen opfordre dig til at læse lidt på views, det vil gøre dit arbejde lættere.
Avatar billede kelderkold Nybegynder
24. oktober 2012 - 14:26 #7
har skimmet den men den står på engelsk og så skal jeg være mere frisk
Avatar billede MADOlsen Forsker
24. oktober 2012 - 15:06 #8
Jeg ville dele det op i 2 tabeller.
En til data for selve løbene (de 5 øverste + et ID), og en til data for resultaterne (de 23 nederste + en FK til det løb resultatet tilhører).
24. oktober 2012 - 18:07 #9
Om du bør have dataerne i en eller flere tabeller afhænger af dataernes struktur.  Hvis der er en 'en-til-en relation' mellem alle dataerne, således at der til hvert løb hører en og kun en S1_lap, en og kun en S1_tid, o.s.v., så er der ingen fordel i at dele det op på to tabeller.  Men jeg kunne forestille mig, at der er nogle 'en-til-mange' relationer.  For eksempel gætter jeg på, at der kun er et bestemt antal klasser, således at hvert løb hører til en bestemt klasse, men at der til hver klasse hører mange forskellige løb.  I så fald er den gængse fremgangsmåde at lave en tabel med klasserne, hvor hver klasse har et nummer og et navn, og hvis nødvendigt yderligere data såsom en beskrivelse af klassen.  I løb-tabellen indfører du så klassens nummer i stedet for klassens navn.  Så sparer du at skrive, for eksempel, 'Mesterklasse' snesevis af gange og måske komme til at skrive 'Mestreklasse'.
24. oktober 2012 - 18:16 #10
Og naturligvis, hvis antallet af laps per løb kan variere, så er det (som fedeko også siger) en god ide med en særskilt tabel til resultaterne.
Avatar billede kelderkold Nybegynder
24. oktober 2012 - 19:42 #11
Som jeg nævner i 1. indlæg så er de 5 første data ens for alle kørere

resten er individuelle data med en af hver data til hver kører.

Løb.navn er individuelt for hvert løb altså ikke klubløb der aldrig får et navn

Klasse er der x antal faste som vælges i programmet med et klik, altså ingen mulighed for stavefejl.

Løbnr. er autonummereret fra programmet

dato (datetime)

kval.spor som klasse.


Så da vi ikke taster noget manuelt, men får samtlige data genereret af et program er muligheden for stavefejl lig 0 så jeg vil som fedeko foreslår lave to tabeller.


Tak for input alle sammen

Fedeko smider du et svar?
04. november 2012 - 19:37 #12
kelderkold, kom du fra det igen?  Du fik ikke svar, som du havde bedt om.  Jeg foreslår derfor, at du lukker spørgsmålet med et eget indlæg.  Så har du afsluttet hvad du startede, og så står spørgsmålet ikke længere som åbent i min og andres lister af indlæg.
Avatar billede kelderkold Nybegynder
04. november 2012 - 19:57 #13
lukket
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