Avatar billede max33 Nybegynder
19. februar 2010 - 22:08 Der er 8 kommentarer og
1 løsning

Opbygning af database

jeg skal til at opbygge en database/tabel til logning af måleværdier målt 1 gang pr minut, fra flere målere, dette giver en masse data så ved ikke hvordan man laver det så det ikke fylder alt for meget.

Udgangspunkt:
- Dato (2010-02-19)
- Tid (12:34)
- Dag (1-7) til bestemmelse af ugedag
- Måler ID (int)
- Måler Resultat (int)

jeg skal kunne præssentere de loggede værdier grafisk, på mange forskellige måder.

f.eks.
- vælg periode (2008-2010) eller (2010-01 - 2010-02)
- tid (02:00 - 05:00)
- vælg hvilke målere man vil se
- gruppering (måned/ugedag/år)

hvordan får jeg min database til at fylde så lidt så muligt.

har overvejet:
tabel (datotid)
- ID (int)
- Dato (2010-02-19)
- Tid (12:34)
- Dag (1-7) til bestemmelse af ugedag

tabel (Målinger)
- datotid_ID (int)
- Måler ID (int)
- Måler Resultat (int)

Nogen bedre ide eller vil der blive problemer når jeg skal trække data du med denne opdeling.
Avatar billede arne_v Ekspert
19. februar 2010 - 22:15 #1
Det er vist ikke helt forkert.

Du kan skippe dag, da den kan beregnes udfra dato.
Avatar billede max33 Nybegynder
19. februar 2010 - 22:25 #2
hvis jeg ønsker at gruppere en periode efter ugedag så jeg kan summere hver ugedag for sig vil det så ikke være lettest med ugedag også?

hvor meget fylder det i en mysql database?

Der er 1440 minutter pr. døgn

datotid = 1440 records

ved 10 målere
målinger = 14400 records

Men hvor meget fylder hver records?
Avatar billede arne_v Ekspert
19. februar 2010 - 23:08 #3
en INT fylder 4 byte

14400 records x 12 byte er 172.8KB

altså ingenting

heller ikke med lidt overead i forhold til de rå data
Avatar billede arne_v Ekspert
19. februar 2010 - 23:08 #4
... med lidt overhead ...
Avatar billede arne_v Ekspert
19. februar 2010 - 23:10 #5
selvom du skal bruge ugedag meget, så synes jeg at du skal starte med at brueg WEEKDAY(dato) og se om ikke det performer godt nok
Avatar billede max33 Nybegynder
22. februar 2010 - 23:40 #6
Hej Arne

Så er det lavet og det virker og bruger også WEEKDAY, Super!

Men lige en lille ting...

Hvis jeg nu vil have reslutatet af 2 målere lagt sammen med hver sit Måler_ID, hvad gør jeg så? De ligger jo i hver sin record dog med fælles datotid_ID

Reslutatet er 16bit Analog signal som skal * med en max værdi for hver måler før man lægger dem sammen, denne værdi ligger i 3. tabel.

Ved ikke om du forstår...

Men send et svar så for du point for det fine svar.
Avatar billede arne_v Ekspert
23. februar 2010 - 01:40 #7
SELECT m1.resultat,m2.resultat
FROM maalinger m1,maalinger m2
WHERE m1.datoid=m2.datoid AND m1.datoid=X
Avatar billede arne_v Ekspert
23. februar 2010 - 01:41 #8
SELECT m.resultat*s.maxresultat
FROM maalinger m, support s
WHERE m.maalerid=s.maalerid AND ...
Avatar billede arne_v Ekspert
23. februar 2010 - 01:41 #9
og et svar
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