sql >> Database teknologi >  >> RDS >> Oracle

Databasedesign og modellering af specifikke relationer

Formodentlig har en lastbil og/eller vognmand en opgave, der involverer at gennemgå et hændelsesforløb, der blandt andet følger en sti og udfører leverancer og transaktioner osv. Et job er formentlig en sådan begivenhed, som der er flere slags, f.eks. afhentning, overførsel og frafald.

Tabellerne i en relationsdatabase beskriver en applikations tilstand. Hver tabel har en tilknyttet fill-in-the-(named-)blanks-sætning (prædikat). Grundtabelprædikaterne er givet af designeren:

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

(Et prædikat karakteriserer en applikationsrelation, alias relation, repræsenteret ved en tabel, alias relation, deraf "den relatonale model".)

Parametrene for prædikatet er kolonnerne i tabellen. Når du angiver værdier for hver parameter, får du et udsagn (forslag), der er sandt eller falsk om din ansøgning. En række værdier for kolonner giver sådanne værdier for hver navngivne blank. De rækker, der gør en tabels prædikat sandt, går i tabellen. De rækker, der gør, at hvis falsk bliver ude. Det er sådan databasetilstanden beskriver applikationssituationen. Du er nødt til at kende tabellernes udsagn for at læse eller forespørge databasen for at finde ud af dens rækker, hvad der er sandt og falsk om en situation og for at opdatere databasen ved at sætte præcis de rækker, der giver sande propositioner ind i den efter at have observeret situationen .

Hver forespørgsel har også et prædikat bygget ud fra prædikaterne i dens tabeller. JOIN af to tabeller giver de rækker, der opfylder AND af deres prædikater, UNION ELLER osv. Og et forespørgselsresultat indeholder også de rækker, der opfylder dets prædikat .

(Begrænsninger er irrelevante for dette; de ​​beskriver blot samlet de databasetilstande, der kan opstå givet prædikaterne og de anvendelsestilstande, der kan opstå.)

Du skal beslutte dig for tilstrækkelige prædikater for fuldt ud at kunne beskrive betingelserne for din ansøgning. Dette inkluderer abstrakte ting som ruter og transaktioner og begivenheder og tidsplaner og opgaver osv. (Når vi har tilstrækkelige prædikater/tabeller, forbedrer vi dem via teknikker som normalisering.)

Når der kan være forskellige slags ting, taler vi om supertyper og undertyper og ser prædikater som (jeg vil bruge "job", som jeg opfatter som en begivenhed):

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

(Du har muligvis en anden eller yderligere begreb om overførsel som en begivenhed med to eller flere tilknyttede containere osv.) (Søg "undertyper". F.eks. )




  1. Hvordan MOD() virker i MariaDB

  2. Hvorfor vælger denne forespørgsel kun en enkelt række?

  3. uWSGI, Flask, sqlalchemy og postgres:SSL-fejl:dekryptering mislykkedes eller dårlig optagelse mac

  4. udefineret metode, mens du bruger form_for i Ny controller-metode