sql >> Databáze >  >> RDS >> Database

Jak vytvořit databázový model od nuly

Chcete tedy vytvořit svůj první databázový model, ale nevíte, jak začít? Čtěte dál!

Předpokládám, že o tabulkách, sloupcích a vztazích už něco málo víte. Pokud ne, než budete pokračovat, podívejte se na naše výuková videa.

Začněte popisem systému

Vždy byste měli začít vytvářet databázový model s popisem systému. V situaci ve třídě vám učitel poskytne popis systému. V reálném životě je příprava popisu proces v jeho právu. Budu jen předpokládat, že máte popis. Nezáleží na tom, zda vám to dal váš klient, váš šéf, váš učitel, nebo jste to napsali sami.

Podívejte se na popis a zvýrazněte všechna podstatná jména . Podstatná jména v popisu lze zhruba rozdělit do tří kategorií:tabulky, atributy a příklady.

  • Tabulky představují primární entity v systému:osoby, fyzické objekty, události, transakce atd.
  • Atributy jsou vlastnosti spojené s primární entitou. Popisují vlastnosti vaší entity. V databázovém modelu to budou sloupce ve vašich tabulkách.
  • Příklady jsou jen to, příklady. Pomáhají vám porozumět datovým typům určitých atributů a pomohou vám porozumět vztahu mezi různými entitami.

Začít popisem má tu výhodu, že vás nutí používat stejný glosář jako vaši uživatelé. Pokud vytváříte systém pro základní školu, měli byste mluvit o žácích. Pokud vytvoříte podobný systém pro univerzitu, měli byste mluvit o studentech.

Tabulky, vztahy, sloupce

  1. Jakmile zvýrazníte podstatná jména, identifikujte tabulky . Nemusíte modelovat vše najednou. Nejprve se zaměřte na základní funkce systému.
  2. Až budete mít tabulky, zjistěte vztahy mezi stoly. Tento krok může vést k zavedení nových přechodných (spojovacích) tabulek.
  3. Nakonec přidejte sloupce ke stolům.

V tomto okamžiku byste si měli znovu přečíst popis a zjistit, zda něco nechybí. Ujišťuji vás, že bude co dodat. Přidejte nové tabulky, nové vztahy a nové sloupce. Přečtěte si popis znovu...

Na co je třeba pamatovat

Vytvoření databázového modelu je iterativní proces. Nesnažte se modelovat vše najednou. Začněte s hlavními entitami vašeho systému. Další podrobnosti můžete přidat později.

Je v pořádku klást otázky . Bez ohledu na to, jak přesný je popis, vždy budete mít nějaké pochybnosti. Vždy bude něco málo specifikováno. Ptejte se na věci, kterými si nejste jisti. Pokud nemůžete klást otázky, udělejte rozumný předpoklad a poznamenejte si svůj předpoklad.

Vždy existuje více než jeden způsob modelovat každý systém. Některé modely jsou jasně špatné, ale u většiny ostatních je těžké posoudit, zda jsou správné nebo špatné. Model závisí na tom, jaký je účel systému, jak data do systému přicházejí, dokonce i na osobním vkusu designéra. Jak budete získávat zkušenosti, získáte větší jistotu ohledně svých návrhových rozhodnutí.

Příklad:Autopůjčovna

Jako příklad vytvoříme databázový model pro systém autopůjčoven. Nejprve se podívejte na popis systému:

Autopůjčovna pronajímá auta zákazníkům. Společnost vlastní několik automobilů. Každé auto má značku, název modelu, rok výroby, počet najetých kilometrů, barvu atd. Auta se dělí do různých kategorií:malá, střední, velká, limuzíny.

Společnost má mnoho míst, kde si můžete pronajmout auto. Půjčovny se nacházejí v různých městech po celé zemi. Ve městě může být více než jedno sídlo společnosti.

Auto si může pronajmout kdokoli starší 21 let, kdo má platný řidičský průkaz. Zákazníci mladší 25 let nebo starší 75 let platí jiné (vyšší) poplatky než ostatní zákazníci.

Před půjčením auta si zákazník obvykle auto zarezervuje. Zákazník zadá data, kdy bude auto vypůjčeno, místo vyzvednutí, místo odevzdání a kategorii vozu, který si chce pronajmout. Zákazník může uvést, že chce do auta nějaké další vybavení, například GPS, autosedačku pro dítě atd.

Když si zákazník pronajme auto, uvede místo vyzvednutí a odevzdání a datum odevzdání. Zákazník si může koupit různé druhy pojištění. Může se také rozhodnout, že pojištění nepotřebuje, protože je pojištění kryto jinak, například společností, která vydala jeho kreditní kartu. Zákazník si může vybrat další možnosti, jako je možnost předčasného odevzdání, různé možnosti tankování atd.

Zákazník poplatky zaplatí, když auto vrátí.

Začneme zvýrazněním všech podstatných jmen: 

Dalším krokem je nalezení tabulek . Hledáme základní entity v systému. Pro začátek byste měli mít alespoň tyto:auto, zákazník, lokalita, město, výbava, kategorie (auta), pojištění. Vložili jsme je do schématu. Přidal jsem id sloupec v každé tabulce, protože každá tabulka by měla mít nějaké id. Primární klíč můžete kdykoli později změnit.




Základní systémové entity jsou v modelu, ale měli byste si všimnout, že nám chybí základní funkce systému:půjčování aut a rezervace. Pamatujte, co jsme řekli na začátku:tabulky nejsou jen fyzické objekty, ale také události a transakce. Měli byste přidat reservation a rental také jako tabulky. Tady to je:




Nyní přidáme odkazy mezi tabulky v modelu. Při přidávání jsem reference očísloval. Poznámka vedle každé reference vám řekne, kdy byla přidána:

  1. Každé auto patří do určité kategorie,
  2. Každá rezervace je pro určitou kategorii vozů,
  3. Každé místo je ve městě,
  4. Každá rezervace má místo vyzvednutí a odevzdání,
  5. Každou rezervaci provádí zákazník,
  6. Každou výpůjčku provádí zákazník,
  7. Každá půjčovna je pro určité auto,
  8. Každá půjčovna má místo vyzvednutí a odevzdání.
  9. Každá půjčovna je spojena s určitým pojištěním. Existuje ale pouze jedno pojištění pro každý pronájem? Ne. S pronájmem může být spojeno mnoho pojištění (pojištění proti poškození vozidla, proti újmě na zdraví, proti poškození cizího automobilu, ...). Přidal jsem přechodnou tabulku nazvanou rental_insurance připojeno k rental a insurance tabulky.



Stále nám chybí odkaz mezi autem a vybavením. Je zařízení trvale připojeno k vozidlu nebo je lze přemisťovat z jednoho vozu do druhého? Na tuto otázku v popisu není žádná odpověď, takže uděláme rozumný předpoklad:ano, lze to přesunout. Přidáme novou tabulku car_equipment a odkazy mezi car a equipment .

Odstraníme company stůl. Půjčovna je v systému implicitně přítomna. Koneckonců, jiná společnost bude mít svůj vlastní systém a vlastní databázi.




Nakonec přidáme sloupce a jejich datové typy. Také jsme si všimli, že neexistuje žádný vztah mezi reservation a equipment . Je však rezervace provedena pro konkrétní zařízení? Ne, je určeno pro určitý typ zařízení:přidáme tabulku equipment_category a spojte tabulky reservation a equipment k tomu.




jsme hotovi? Přečtěte si popis znovu. Náš databázový model stále vynechává poplatky. No...

To je cvičení pro čtenáře. (Pokud se ale necítíte na procvičování dovedností databázového modelování, zde můžete najít strukturu databáze připravenou k použití pro půjčovnu aut.)


  1. DBaaS, cloud a transparentní směrování dotazů

  2. Výběr hodnot z proměnné tabulky Oracle / pole?

  3. Android Studio nekontroluje/nezvýrazní dotazy Kotlin Room DAO, když řetězec zabírá více než 1 řádek

  4. IDENTITY() vs IDENTITY() v SQL Server:Jaký je rozdíl?