Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Datenbankdesign und Modellierung spezifischer Beziehungen

Vermutlich hat ein Lastwagen und/oder Trucker eine Aufgabe, bei der es darum geht, eine Abfolge von Ereignissen zu durchlaufen, die das Folgen eines Weges und das Durchführen von Lieferungen und Transaktionen usw. umfassen. Vermutlich ist ein Job ein solches Ereignis, von dem es mehrere Arten gibt, z Abgabe.

Die Tabellen in einer relationalen Datenbank beschreiben den Zustand einer Anwendung. Jede Tabelle hat eine zugeordnete Fill-in-the-(named-)blanks-Anweisung (Prädikat). Die Basistabellenprädikate werden vom Designer vorgegeben:

// 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, ...) 

(Ein Prädikat charakterisiert eine Anwendungsbeziehung, auch bekannt als Relation, dargestellt durch eine Tabelle, auch bekannt als Relation, daher "das relationale Modell".)

Die Parameter des Prädikats sind die Spalten der Tabelle. Wenn Sie Werte für jeden Parameter angeben, erhalten Sie eine Aussage (Proposition), die über Ihre Anwendung wahr oder falsch ist. Eine Reihe von Werten für Spalten gibt solche Werte für jedes benannte Leerzeichen an. Die Zeilen, die das Prädikat einer Tabelle wahr machen, gehen in die Tabelle. Die Zeilen, die if false ergeben, bleiben aus. So beschreibt der Datenbankzustand die Anwendungssituation. Sie müssen die Aussagen der Tabellen kennen, um die Datenbank zu lesen oder abzufragen, um anhand ihrer Zeilen herauszufinden, was an einer Situation wahr und falsch ist, und um die Datenbank zu aktualisieren, indem Sie nach Beobachtung der Situation genau die Zeilen einfügen, die wahre Aussagen machen .

Jede Abfrage hat auch ein Prädikat, das aus den Prädikaten ihrer Tabellen aufgebaut ist. Der JOIN zweier Tabellen ergibt die Zeilen, die das AND ihrer Prädikate erfüllen, UNION das OR usw. Und ein Abfrageergebnis enthält auch die Zeilen, die sein Prädikat erfüllen .

(Constraints sind dafür irrelevant; sie beschreiben lediglich gemeinsam die Datenbankzustände, die angesichts der Prädikate und der Anwendungszustände, die auftreten können, auftreten können.)

Sie müssen sich für ausreichende Prädikate entscheiden, um die Situation Ihrer Bewerbung vollständig beschreiben zu können. Dazu gehören abstrakte Dinge wie Routen und Transaktionen und Ereignisse und Zeitpläne und Zuweisungen usw. (Sobald wir genügend Prädikate/Tabellen haben, verbessern wir sie durch Techniken wie Normalisierung.)

Wenn es verschiedene Arten von Dingen geben kann, sprechen wir über Supertypen und Subtypen und sehen Prädikate wie (ich verwende "Job", was ich für ein Ereignis halte):

// 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,...)
...

(Möglicherweise haben Sie eine andere oder zusätzliche Vorstellung von Übertragung als Ereignis mit zwei oder mehr zugehörigen Containern usw.) (Suchen Sie nach „Untertypen“. zB. )