Ik heb een MySql database draaien die een aantal activiteiten voor me bijhoudt.
Het ontwerp ziet er ongeveer als volgt uit:
Tabel Activiteit
------------------
Id Int(10) autoincrement, primary key
Description mediumtext
Tabel Logboek
------------------
Id Int(10) autoincrement, primary key
Activiteit Int(10)
Starttijd Timestamp(14)
Stoptijd Timestamp(14)
Het is zo vrij eenvoudig om van 1 activiteit de duur uit te rekenen (in 1 query). Het probleem is echter dat er data kan ontstaan die inconstitent is.
Zo kan er bijvoorbeeld een activiteit van 12:00 tot 13:00 en een activiteit van 12:30 en 13:30 in de database staan. En dit kan niet omdat ik nog steeds niet kan multitasken
Mij is altijd voorgehouden dat een db ontwerp niet klopt als je inconstitente data kunt krijgen. Dus ben ik op zoek gegaan naar een ander ontwerp. Hierbij kwam ik tot de conclusie dat het onnodig is om de Stoptijd op te slaan. Een nieuwe starttijd is immers de stoptijd van de vorige.
Alleen dan lukt het me niet om een tijdsduur van een project te berekenen zonder gebruik te maken van extra queries.
De vraag is dus: Hoe kan ik mijn ontwerp zo aanpassen dat ik geen "foute" data in de db kan krijgen, maar wel de lengte van een activiteit kan uitrekenen.
Of kan ik bij mijn nieuwe ontwerp wel de lengte uitrekenen (in 1 query)?
Het ontwerp ziet er ongeveer als volgt uit:
Tabel Activiteit
------------------
Id Int(10) autoincrement, primary key
Description mediumtext
Tabel Logboek
------------------
Id Int(10) autoincrement, primary key
Activiteit Int(10)
Starttijd Timestamp(14)
Stoptijd Timestamp(14)
Het is zo vrij eenvoudig om van 1 activiteit de duur uit te rekenen (in 1 query). Het probleem is echter dat er data kan ontstaan die inconstitent is.
Zo kan er bijvoorbeeld een activiteit van 12:00 tot 13:00 en een activiteit van 12:30 en 13:30 in de database staan. En dit kan niet omdat ik nog steeds niet kan multitasken
Mij is altijd voorgehouden dat een db ontwerp niet klopt als je inconstitente data kunt krijgen. Dus ben ik op zoek gegaan naar een ander ontwerp. Hierbij kwam ik tot de conclusie dat het onnodig is om de Stoptijd op te slaan. Een nieuwe starttijd is immers de stoptijd van de vorige.
Alleen dan lukt het me niet om een tijdsduur van een project te berekenen zonder gebruik te maken van extra queries.
De vraag is dus: Hoe kan ik mijn ontwerp zo aanpassen dat ik geen "foute" data in de db kan krijgen, maar wel de lengte van een activiteit kan uitrekenen.
Of kan ik bij mijn nieuwe ontwerp wel de lengte uitrekenen (in 1 query)?