Gewichten met variabele nauwkeurigheid opslaan
Hoe kunnen we dit het beste opslaan in een databasetabel?
Alle gewichten gelijkstellen aan een gram is geen optie, want dan introduceren we schijnnauwkeurigheid: uit de drie observaties 2140 g, 2100 g en 2000 g kun je achteraf niet meer afleiden wat nu het werkelijke gewicht was.
Alles afronden op kilo's is ook geen optie, omdat je informatie verliest: uit 2 kg of 2,1 kg kun je later niet meer afleiden dat het gewicht eigenlijk 2140 g was.
Maar hoe doe je dit dan wel?
Alles in grammen opslaan en dan on the fly omrekenen naar bijvoorbeeld kilo's
Ik zou in dit geval dus elk meetmoment registreren met een extra betrouwbaarheidsfactor (of in dit geval dus de nauwkeurigheid).
Pakket naam, gewicht, locatie, nauwkeurigheid
Pakket X, 2140, Depo Y, 5
Pakket X, 2000, Depo Z, 500
Op deze manier kan je ten alle tijden alle meet momenten van pakket X achterhalen en het gewicht met de beste betrouwbaarheid selecteren. Ik zou ook de betrouwbaarheid opslaan bij het meetmoment en deze niet koppelen aan de locatie (normalisatie zou eigenlijk zeggen dat je betrouwbaarheid aan de locatie moet koppelen, maar ik kan me zo voorstellen dat de meetapparatuur op de locatie ter zijner tijd vervangen/vernieuwd wordt en dan wil je niet dat de nauwkeurigheid met terugwerkende kracht van invloed is op eerdere metingen)
Bijna goed. ;-) Een pakket wordt niet gewogen op een locatie, maar op een weegschaal (die op zijn beurt weer op een locatie staat). Op die manier hoef je de nauwkeurigheid niet bij de meting zelf op te slaan. Als je op de betreffende locatie een andere weegschaal gaat gebruiken, sla je bij de nieuwe metingen het id van de nieuwe weegschaal op, waarmee de oude metingen dus onveranderd blijven.
Dat is inderdaad een goed idee: een integer voor grammen plus 2 bits voor 3 nauwkeurigheids- of betrouwbaarheidsniveaus. We weten de exacte nauwkeurigheid op locaties niet, dus dan volstaat een bitflag die aangeeft dat 2100 g werd gemeten als 2,1 kg.