Vermoedelijk heeft een vrachtwagen en/of vrachtwagenchauffeur een opdracht waarbij een reeks gebeurtenissen wordt doorlopen, waaronder het volgen van een pad en het doen van leveringen en transacties, enz. Vermoedelijk is een baan zo'n gebeurtenis, waarvan er verschillende soorten zijn, bijv. ophalen, overbrengen en afzetten.
De tabellen in een relationele database beschrijven de status van een applicatie. Elke tabel heeft een bijbehorend invul-in-de-(named-)blanco-statement (predikaat). De predikaten van de basistabel worden gegeven door de ontwerper:
// truck [truck_id] has code [truck_code] and ...
TRUCK (truck_id, truck_code, ...)
// product [product_id] has code [product_code] and name [product_name] ...
PRODUCT (product_id, product_code, product_name, ...)
(Een predikaat kenmerkt een toepassingsrelatie, ook wel relatie genoemd, vertegenwoordigd door een tabel, oftewel relatie, vandaar "het relatonale model".)
De parameters van het predikaat zijn de kolommen van de tabel. Wanneer u waarden opgeeft voor elke parameter, krijgt u een statement (propositie) die waar of onwaar is over uw toepassing. Een rij met waarden voor kolommen geeft dergelijke waarden voor elke benoemde blanco. De rijen die het predikaat van een tabel waar maken, gaan in de tabel. De rijen die if false maken, blijven uit. Dat is hoe de databasestatus de toepassingssituatie beschrijft. U moet de verklaringen van de tabellen kennen om de database te lezen of te doorzoeken om per zijn rijen te weten te komen wat waar en onwaar is over een situatie en om de database bij te werken door precies de rijen in te voeren die ware proposities maken na het observeren van de situatie .
Elke query heeft ook een predikaat dat is opgebouwd uit de predikaten van de tabellen. De JOIN van twee tabellen geeft de rijen die voldoen aan de AND van hun predikaten, UNION de OR, etc. En een zoekresultaat bevat ook de rijen die voldoen aan het predikaat .
(Beperkingen zijn hierbij niet relevant; ze beschrijven gewoon collectief de databasestatussen die kunnen optreden gezien de predikaten en de toepassingsstatussen die kunnen optreden.)
U moet beslissen over voldoende predikaten om de situatie van uw aanvraag volledig te kunnen beschrijven. Dit omvat abstracte zaken zoals routes en transacties en gebeurtenissen en schema's en opdrachten enz. (Zodra we voldoende predikaten/tabellen hebben, verbeteren we deze via technieken zoals normalisatie.)
Wanneer er verschillende soorten dingen kunnen zijn, hebben we het over supertypes en subtypes en zien we predikaten zoals (ik gebruik "job", wat ik voor een gebeurtenis beschouw):
// job [job_id] for trucker [trucker_id] is ... stuff about all jobs ...
JOB(job_id, trucker_id...)
// job [job_id] is a pickup with ... stuff about pickups ...
PICKUP(job_id, container_id...)
// job [job_id] is a transfer with ... stuff about transfers
TRANSFER(job_id,...)
...
(U kunt al dan niet een ander of aanvullend begrip hebben van overdracht als een evenement met twee of meer bijbehorende containers, enz.) (Zoek op "subtypes". Bijv. )