18. april 2009 - 08:18Der er
6 kommentarer og 1 løsning
ER-diagram medlemsdatabse med historik
Hej
Jeg søger erfaringer med opbygning af databaser med historik.
Helt konkret har jeg en database med flg. 3 tabeller og testdata:
personer (persID, persNavn, osv....) 1 Hans 2 Peter 3 Jens
medlemsStatus_List (medlStatusId, medlStatusNavn) 1 Udvalgsmedlem 2 Aktiv medlem 3 Bestyrelses medlem 4 Formand 5 Kasserer
medlemsStatus (persId, medlStatusId, dato, ja_nej, bem) nøglefelter er: persId, medlStatusId og dato 1 2 '2008-01-01' - ja - "indmeldt via mail" 1 2 '2008-06-01' - nej - "utilfreds med træner" 1 3 '2008-06'-01 - ja - "valgt på mødet d. 20/5"
Jeg har brugt denne opbygning i lang tid, og den virker efter hensigten :) jeg har ihvertfald de oplysninger i databasen, som jeg ønsker. Efterhånden som tabellerne er vokset bliver mine forespørgsler dog noget tunge. f.eks. er der oprettet 2 view's for at udtrække aktive medlemmer.
Spørgsmålet går derfor på, om der er nogle der har andre, mere effektive opbygninger med samme problemstiling. evt. link
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Det kan være det er mine view's der måske ikke er lavet 'rigtigt'
Jeg har f.eks. disse 2: vwMedlMaxDato finder den nyeste dato for ændring i medlemsStatus. vwMedlAktuelMedlStatus finder derefter hvad ændringen har været (meldt ind eller ud samt evt bemærkninger) for alle medlemmer.
vwMedlMaxDato: SELECT persId, medlStatusId, MAX(dato) as maxDato FROM medlemsStatus
vwMedlAktuelMedlStatus: SELECT medlemsStatus.* FROM vwMedlMaxDato INNER JOIN medlemsStatus ON (vwMedlMaxDato.maxDato = medlemsStatus.Dato) AND (vwMedlMaxDato.medlStatusId = medlemsStatus.medlStatusId) AND (vwMedlMaxDato.persId = medlemsStatus.persId);
vwMedlAktuelMedlStatus bruger jeg overalt i min app og det er den jeg har på fornemmelsen ikke er lavet optimal.
Til info er jeg begyndt at gå koden igennem istedet for, og har fundet en del uregelmæssigheder og unødvendige kald til databasen. Det har hjulpet en del på performance
Niels
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.