Meine Frage ist erst mal nur theoretischer Natur, ich habe noch keinen Quellcode.
Angenommen ein Benutzer kann in ein Formular einen Wert eingeben und dazu eine Maßeinheit auswählen - ein wählbares Vielfaches, z.B. Milligramm, Kilogramm oder Kilotonne.
Würdet ihr den Eingabewert auf eine Basiseinheit umrechnen, z.B. in Gramm, und als Fließkommazahl speichern
ODER - und jetzt kommt das was mich eigentlich interessiert - würde man die vom Nutzer gewählte Einheit in einer zusätzlichen Spalte speichern?
Wenn ich dem Benutzer später jede Eingabe in der von ihm jeweils ausgewählten Einheit wieder anzeigen möchte, müsste ich die pro Eingabe ausgewählte Einheit sowieso irgendwo speichern.
Meine eigentliche Frage: Wie speichert man Maßeinheiten (bzw. die abgeleitete Größe) am besten?
Jeweils als sprechenden String, z.B. "mg", "kg", "kt" oder lieber in einer Konstante wie 1, 2, 3 ... ?
Würde man Zahlenkonstanten in seiner Anwendung nach Lust und Laune selber definieren oder gibt es eine ISO-Norm o.ä. für Zahlenkonstanten für Größeneinheiten? Oder vielleicht schon eine fertige Pascal-Unit?
Oder gibt es dafür sogar einen Datenbank-Standard von der Stange, oder bastelt sich jeder Programmierer etwas nach eigenem Bedarf und Gutdünken selbst? (was ich vermute)
Noch kniffliger wird es bei seltenen Zeitangaben: Tag.Monat.Jahr mit und ohne Uhrzeit, oder nur Monat/Jahr (z.B. Baujahr), oder "Mitte des 17. Jahrhunderts", oder 2.500 Jahre v.Chr., oder "vor ca. 100 Millionen Jahren" (mya = million years ago).
Vermute ich richtig, dass man solche Spezialangaben entweder als interpretierbaren String in die Datenbank speichern würde oder sich einen komplexen Datentyp selber bauen würde, den man entweder als Binärobjekt oder zerlegt auf mehrere Spalten verteilt speichern würde?
Ich frage deshalb, weil ich das noch nie gemacht habe und ich mir später nicht anhören möchte: "Warum hast du das denn nicht einfach mit der XYZ-Funktion gemacht, da ist doch alles schon drin!"

Danke fürs Lesen. Ich freue mich auf Kommentare.
Grüße, Jörg