Avatar billede dm013 Nybegynder
30. december 2002 - 11:21 Der er 8 kommentarer og
1 løsning

historik, tror jeg

Hej Eksperter,

jeg har brug for lidt assistance.
Jeg har en database med produktionsdata, hvor jeg bla. har en tabel med følgende felter ([ID]nøgle, [Prodnr], [Receptnr], [Varebeskrivelse].

Mit problem er at der fra tid til anden sker det at [Varebeskrivelsen] ændres til noget andet, hvordan kan jeg sikre mig at en sådan ændring ikke slår igennem på historiskedata???

mvh.
dm013
Avatar billede jkjaers Nybegynder
30. december 2002 - 11:24 #1
Hvis du har lavet DBen korrekt, skulle dette jo ske automatisk, eller har jeg misforstået ditn spg?
Avatar billede lap Nybegynder
30. december 2002 - 11:27 #2
Deter desværre ikke så simpelt. Jeg går ud fra, at de historiske data (salget) alene refererer til ovenstående tabel.

Du er nødt til at implementere en tidsstyring - ogdet kræver ændringer i hele applikationen - alternativt skal de historiske data også indeholde værdierne fra denne tabel.

Hvis det er et "datawarehouse" som genereres, så skal data denormaliseres, således at varebeskrivelsen tages med over i databaseskuret med det samme - så er problemet der kun for det kørende system.
Avatar billede dm013 Nybegynder
30. december 2002 - 11:40 #3
jeg har overvejet at ligge [Varebeskrivelse] i en underliggende tabel, sammen med et timestamp og så [ID] som fremmednøgle, men er ikke helt sikker på at det løser mit problem .

lap>>> det er det jeg gør idag, trækker varebeskrivelsen med over på hver record der oprettes i produktionstabellen.

jkjaers>>>det sker automatisk, men hvis varebeskrivelsen ændres vil historiske data, hvor varebeskivelsen var "tekst1", efter en ændring blive lavet om til "tekst2"
Avatar billede lap Nybegynder
30. december 2002 - 11:42 #4
Så er den gal med "automatikken" - historiske data må ikke ændres - kun nye data.
Avatar billede dm013 Nybegynder
30. december 2002 - 11:52 #5
Misforståelse: som det kører idag trækkes varebeskrivelsen med over på hver ny record der oprettes i produktionstabellen. Det virker fint nok.

Jeg er igang med at normaliserer databasen da den ikke tilnærmelsesvis kører optimalt, og det er i den forbindelse at jeg så løber ind i det her problem.
lap>>> du har vel egentligt svaret på mit spørgsmål, at jeg ikke skal normaliserer den Helt, men fortsat skal trække vare beskrivelsen med over.
Avatar billede lap Nybegynder
30. december 2002 - 11:59 #6
Ja, pointen med et datavareskur er netop, at data ikke nødvendigvis skal være normaliserede.

Hvis du normaliserer det, så vil historik ikke virke.

Men, eftersom du er i gang med at normalisere, så skal du også ændre applikationen - derfor bør du gøre følgende:

Alle records i "salg" skal være tidsstemplet - og dit varekatalog skal have en ekstra kolonne - nemlig et "gældende_fra", som også er et tidsstempel.

På den måde kan du altid finde den gyldige record for et givet id på et givet tidspunkt. Det vil nemlig være den, hvor "gældende_fra" ligger umiddelbart før nu.

For at det skal blive simpelt kan du også indføre et "gældende_til", men så går du igen lidt på kompromis med normaliseringen - men det gør udtræk lidt nemmere.

Det kræver dog en del ændringer i applikationen, men er den korrekte måde at gøre det. Samtidig skal du også ændre nøgle på tabellen - id+gældende_fra er nu primærnøgle.
Avatar billede hekla Nybegynder
30. december 2002 - 12:10 #7
Jeg har været ude for det samme problem og har valgt at blive ved med at trække "varebeskrivelsen" med over i de nye records. Med mindre der er tale om en meget stor mængde records eller meget lange varebeskrivelser, er det vel kun et teoretisk og æstetisk problem?
Avatar billede dm013 Nybegynder
30. december 2002 - 12:30 #8
der er tale om store mængder data og korte varebeskrivelser.
Avatar billede dm013 Nybegynder
01. februar 2003 - 23:56 #9
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
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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