24. oktober 2012 - 13:23Der 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.
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.
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.
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.
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.
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.
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).
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'.
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.
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.
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.