V případě, že zařízení pošle nevalidní data, je vhodnější zaznamenat chybu namísto dat. Důležité je chronologické řazení záznamů. Dvě zařízení nemohou zapisovat do jedné tabulky. Uspořádání tabulky by mělo být podřízeno účelu, maximálně zjednodušit vkládání a výběr dat.
Docela se mi líbí řešení, které má ČHÚ třeba u radarových dat. Čas je v UTC, bez zimního/letního času. Tento přístup pak vede k tomu, že neexistují dvě hodnoty naměřené ve stejný den a čas. Pak je tedy datum a čas unikátní a lze tuto vlastnost použít pro kontrolu, zda se v tom někdo nevrtal nebo zda nedošlo k poruše. Nejjednodušeji se to provede tak, že v db je tento sloupec unikátní a pokus o vložení nevalidních dat vede k zaznamenání chyby. Existence více unikátních sloupců v jedné tabulce sice není problém, ale v tomto konkrétním případě by existence sloupce s unikátní int hodnotou nebyla přínosem.
Ještě jeden důvod, proč použít UTC , je srozumitelnost pro uživatele. Představ si vykreslený graf teploty v čase. V UTC mám na vodorovné ose čas kontinuálně plynoucí do budoucnosti. Při přepnutí letní/zimní čas mám v průběhu jedné hodiny dvě hodnoty ve stejný čas - docela matoucí. Podobné je to u přechodu zimní/letní čas - v datech je hodina díra.
Naproti tomu auto increment int jako primární klíč v jiných případech používám - pokud je to přínosem nebo pokud není jiná možnost (ne vždy je v datech něco unikátního).
hu