sql >> Databáze >  >> RDS >> Oracle

Návrh databáze a modelování specifických vztahů

Pravděpodobně má náklaďák a/nebo řidič kamionu úkol, který zahrnuje procházení sledem událostí, které zahrnují sledování trasy a provádění dodávek a transakcí atd. Zakázka je pravděpodobně taková událost, které existuje několik druhů, např. vyzvednutí, převoz a dropoff.

Tabulky v relační databázi popisují stav aplikace. Každá tabulka má přidružený příkaz fill-in-the-(named-)blanks (predikát). Predikáty základní tabulky jsou dány návrhářem:

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

(Predikát charakterizuje vztah aplikace, neboli relaci, reprezentovanou tabulkou, neboli relace, odtud "relační model".)

Parametry predikátu jsou sloupce tabulky. Když zadáte hodnoty pro každý parametr, dostanete prohlášení (propozice), které je pravdivé nebo nepravdivé o vaší aplikaci. Řádek hodnot pro sloupce udává takové hodnoty pro každou pojmenovanou mezeru. Řádky, díky kterým je predikát tabulky pravdivý, jdou do tabulky. Řádky, které mají hodnotu if false, zůstávají mimo. Takto stav databáze popisuje situaci aplikace. Musíte znát výroky tabulek, abyste mohli číst nebo dotazovat databázi, abyste na jejích řádcích zjistili, co je na situaci pravdivé a nepravdivé, a aktualizovat databázi tím, že do ní po zpozorování situace vložíte přesně ty řádky, které do ní obsahují pravdivé výroky. .

Každý dotaz má také predikát sestavený z predikátů jeho tabulek. JOIN dvou tabulek dává řádky, které splňují AND jejich predikátů, UNION OR atd. A výsledek dotazu také obsahuje řádky, které splňují jeho predikát .

(Omezení jsou k tomu irelevantní; pouze souhrnně popisují stavy databáze, které mohou nastat s danými predikáty a stavy aplikací, které mohou nastat.)

Musíte se rozhodnout pro dostatečný počet predikátů, abyste byli schopni plně popsat situaci vaší aplikace. To zahrnuje abstraktní věci, jako jsou cesty a transakce a události a plány a přiřazení atd. (Jakmile budeme mít dostatek predikátů/tabulek, vylepšíme je pomocí technik, jako je normalizace.)

Když mohou existovat různé druhy věcí, mluvíme o supertypech a podtypech a vidíme predikáty jako (použiji „job“, který považuji za událost):

// 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ůžete, ale nemusíte mít jinou nebo další představu o přenosu jako události se dvěma nebo více přidruženými kontejnery atd.) (Hledejte „subtypes“. Např. )




  1. Jak Substr() funguje v SQLite

  2. Oracle JDBC:podtečení dvojnásobně

  3. Varování # 1264:Chyba mimo rozsah v mysql

  4. Budování databáze Microsoft Access