Odpovědi na otázky ze shrnutí pátého dílu
Návrh databáze
-
Připomeňte fáze vývoje databáze. Které z nich jsou naznačeny v tomto dílu?
Fáze vývoje databáze by se daly označit např. takto:
- shromažďování požadavků,
- analýza požadavků,
- vytvoření konceptuálního modelu (reprezentovaného ER diagramem),
- převod ER diagramu na logický model databáze (tabulky, vazby mezi nimi, zatím nezávisle na SŘBD),
- vytvoření fyzického modelu (zefektivnění přizpůsobením se použitému SŘBD, využitím jeho speciálnějších možností, vytvoření indexů apod.),
- testování, tvorba dokumentace,
- údržba, používání databáze.
Předchozí díl seriálu byl věnován fázím 1), 2) a 3).
-
Najděte ještě jednu tabulku, která ve výsledném ER diagramu uskutečňuje vazbu M – M pomocí dvou vazeb 1 – M.
Třetí tabulkou (entitou), která byla vytvořena s tímto cílem, je tabulka Vypujcka, která umožňuje vazbu M – M mezi tabulkami Kniha a Ctenar.
-
Najděte v diagramu také jedinou vazbu 1 – 1.
Jde o vazbu mezi entitami Vypujcka a Upominka. Vztah byl pojat tak, že k výpůjčce může vzniknout jen jedna upomínka (nebo žádná) a naopak daná upomínka se vždy týká jen jedné výpůjčky – jedné vypůjčené knihy.
-
Zkuste navrhnout (nakreslit na papír, vytvořit v programu Workbench apod.) ER diagram jednodušší verze databáze Knihovna.
Možné řešení je uvedeno na druhém obrázku tohoto dílu.
Opakování: Konceptuální model databáze Knihovna
Připomeňme si výsledek konceptuálního návrhu v minulém dílu – získané ER diagramy. Jde o výsledek analýzy shromážděných požadavků: hledali jsme v nich entity, jejich atributy a vztahy mezi entitami (budoucí tabulky, sloupce tabulek a vazby mezi tabulkami). V dalším textu si budete moci vybrat mezi dvěma verzemi databáze Knihovna: složitější a jednodušší.
Složitější verze databáze knihovna (verze „A“)
ER diagram jsme vytvořili a také okomentovali v druhé části předchozího dílu, kde si ho můžete prohlédnout. V tomto dílu bude zobrazen později jako základ logického modelu téměř stejně, jen s upravenými názvy tabulek a sloupců.
Jednodušší verze databáze knihovna (verze „B“)
Vytvoření jednoduššího ER diagramu bylo jedním z úkolů na závěr pátého dílu. Navrhuji následující řešení (možností je ovšem mnoho, podle toho, co od databáze očekáváte, opět se tím vracíme k důležitosti fází shromažďování a analýzy požadavků, i když třeba provedených jen podvědomě).
ER diagram jednodušší verze databáze
Knihovna
Z diagramu byste měli poznat, že:
-
Program MySQL Workbench doplnil do tabulek automaticky cizí klíče po vytvoření vazby a pojmenoval je podle svého schématu. Pro náš logický model jejich názvy trochu upravíme (např. cizí klíč Spisovatel_idSpisovatel přejmenujeme na AutorID), také názvy primárních klíčů ponecháme podle předchozích dílů (idCtenar z diagramu nahradíme názvem CtenarID). Tyto změny najdete níže v logickém modelu.
-
V jednodušší verzi databáze ponecháme předpoklad, že jeden spisovatel může být autorem více knih, ale každá kniha má jen jednoho autora (nebo žádného – to znázorňuje symbol nuly na konci vazby a prázdný červený kosočtverec u cizího klíče Spisovatel_idSpisovatel). Prázdný kosočtverec u cizího klíče říká, že tento cizí klíč nemusí mít nutně zadánu hodnotu (jak to známe z předchozího dílu; říká se také, že entita nemá povinné členství ve vazbě).
-
Stejný zjednodušující předpoklad pro obory (že jeden obor se může týkat více knih, ale každá kniha by podle návrhu byla přiřazena jen k jednomu nebo k žádnému oboru) ale opravíme na vazbu M – M mezi tabulkami Kniha a Obor. To už při vytváření této vazby mezi tabulkami vyřešil Workbench vložením pomocné tabulky, jakéhosi prostředníka: Obor_has_Kniha (Obor má Knihu). Přejmenujeme ji ale na Obor_Kniha.
-
Sami promyslete, jaký je vztah mezi entitami (budoucími tabulkami) Ctenar a Kniha.
Pokud se o tomto typu ER diagramu chcete dozvědět víc, navštivte třeba už v minulém dílu zmíněnou stránku z blogu Lee Richardsona, kde je zde použitý způsob znázornění (Crow's Foot notace, „vraní nožky“ ve schématu označují konec vazby typu M) pěkně vysvětlen.
Logický model databáze Knihovna
Následující fáze vývoje databáze – logický model – spočívá v převodu entit z ER diagramu na tabulky, vlastností entit na sloupce tabulek a vztahů na vazby mezi tabulkami. Tento převod má svá celkem jasná pravidla. Jedním z těchto pravidel je převod vztahu M – M.
Převod vztahu M – M na dvě vazby 1 – N
Tento převod se uskuteční vytvořením třetí tabulky, která se s původními dvěma spojí vazbami typu 1 – M. Promyslete si, že výsledek je obdobný: jeden záznam z první tabulky můžeme provázat pomocí vložené tabulky s více záznamy tabulky druhé, stejně to platí i naopak. Ukazuje to další obrázek (nakreslený grafickým editorem Dia v Ubuntu):
Převod vztahu M – M na dvě vazby 1 – M
Víte, že tento krok učinil za nás už ve fázi konceptuálního modelování program MySQL Workbench při kreslení ER diagramu.
Ti, kteří si ER diagram zkusili také vytvořit, zjistili jednu změnu oproti obrázkům diagramů v této i předchozí lekci. Dodatečně v nich bylo upraveno toto: u vznikající vazby M – M Workbench ve třetí, pomocné tabulce vytvoří primární klíč kombinací dvou cizích klíčů z provázaných původních tabulek, jak je to naznačeno i v předchozím obrázku; nejsem si ale jistý, jestli by neměl Base s tímto tzv. složeným primárním klíčem nějaké těžkosti, a proto jsem v ER diagramech do těchto zprostředkujících tabulek doplnil jako primární klíč nový sloupec typu Integer, u kterého v Base nastavíme automatickou hodnotu.
Protože má přechod z konceptuálního k logickému modelu jednoznačně daná pravidla, mohou ho mnohé vývojové nástroje zvládnou samostatně – automaticky. Takové programy patří mezi tzv. CASE nástroje, zkratka je ze slov Computer-Aided Software Engineering, počítačem podporované softwarové inženýrství, podrobnější informace najdete např. na odpovídající stránce Wikipedie.
Možnosti přechodu k logickému modelu
Máme tedy dvě možnosti přechodu od ER diagramu k tabulkám a vazbám v databázi:
-
Tabulky a vazby vytvořit samostatně v Base. Tato možnost je v našem případě velmi usnadněna způsobem tvorby ER diagramu v programu Workbench (viz předchozí text o vazbě M – M i text následující podkapitoly „První možnost: Samostatné vytvoření tabulek a vazeb v Base“).
-
Nechat vytvořit tabulky a vazby samotným programem Workbench jako nástrojem CASE.
První možnost: Samostatné vytvoření tabulek a vazeb v Base
Proč zvolit tuto možnost? Z předchozích dílu máme už hotových pět tabulek, takže postačí buď provést jen drobné úpravy (ve verzi „B“), nebo doplnit dalších pět tabulek a upravit vazby (verze „A“). Tuto možnost doporučuji těm čtenářům, kteří se nechtějí zabývat prací s programem MySQL Workbench a instalací dalších doplňků. Ona je totiž spolupráce s programy CASE (zde Workbench) sice příjemná, ale nejdřív je třeba program nainstalovat, vytvořit v něm ER diagram, pak v našem případě nainstalovat také server MySQL a ještě konektor – driver – pro připojení aplikace (Base) k databázi MySQL. Workbench totiž podle ER diagramu vytvoří databázi MySQL a teprve k té se potom připojíme pomocí Base (program Base pak funguje jako jakési rozhraní pro práci s daty, tzv. Front-end, o tom podrobněji v příštím dílu). Takováto databáze v Base také nebude fungovat bez spuštění „zdrojové“ MySQL databáze v MySQL serveru (ale na druhou stranu by nám právě připojení k databázi MySQL umožnilo použít Base i pro práci s databází na Internetu). Méně zkušeným uživatelům počítače doporučuji tedy zatím samostatné vytvoření databáze v Base bez pomoci programu typu CASE.
Jak vytvoříme schéma logického modelu? Budeme to mít velmi usnadněné tím, jak program MySQL Workbench vytvořil ER diagram: jeho strukturu (entity, vztahy) můžeme rovnou přebrat jako strukturu databáze (tabulky, vazby). Workbench totiž při vytvoření vazeb sám doplnil potřebné cizí klíče do entit (tabulek) a také vazby typu M – M rovnou převedl na dvě vazby 1 – M pomocí třetí tabulky.
Shrnutí k první možnosti: Při vytváření tabulek a vazeb databáze v Base tedy postačí sledovat zde uvedené ER diagramy, ale doporučuji níže uvedené verze, ve kterých byly upraveny názvy některých tabulek a jejich sloupců.
Logický model databáze Knihovna verze „A“
Úkol 9: Pokud jste se rozhodli pro složitější verzi „A“ databáze Knihovna, vytvořte na základě následujícího ER diagramu (upravená verze obrázku z předchozího dílu) v Base zbývající tabulky i vazby mezi nimi. Využijete i pět již dříve založených tabulek, ale některé vazby bude nutné odstranit.
Upravený ER diagram jako základ logického
modelu verze „A“ databáze
Logický model databáze Knihovna verze „B“
Úkol 10: Jestliže pracujete s jednodušší verzí „B“ databáze Knihovna, vytvořte na základě dalšího ER diagramu (upravená verze prvního obrázku z tohoto dílu – někde byly změněny názvy) v Base tabulky a vazby. Bude třeba vytvořit jen jednu novou tabulku (OborKniha), naopak odstraňte starší tabulku Trida. Odstraníte také vazbu mezi tabulkami Kniha a Obor, ale doplníte vazby od nové tabulky OborKniha.
Upravený ER diagram jako základ logického
modelu verze „B“ databáze
Závěr
Druhou možnost postupu, totiž
-
vytvoření logického modelu (tabulek a vazeb) z konceptuálního modelu použitím automatizovaného převodu nástrojem CASE (v našem případě programem Workbench)
-
a následné připojení se k takto vzniklé databázi MySQL z programu Base
necháme na další díl.
V tomto dílu jsme uzavřeli fázi logického modelu, výsledkem by mělo být vytvoření hotové stavby databáze Knihovna (tabulek a vazeb mezi nimi) podle diagramů a pomocných pokynů v úkolech 9 nebo 10 podle zvolené verze databáze.
Otázky na závěr – Shrnutí šestého dílu (logický model databáze)
-
Vysvětlete, v čem spočívá přechod od konceptuálního k logickému modelu.
-
Jak se dá využít toho, že tento přechod má jasně daná pravidla (postupy)? Vysvětlete zkratku CASE.
-
Popište přechod od vztahu M – M mezi dvěma entitami v ER diagramu k obdobně fungující vazbě mezi jim odpovídajícími tabulkami v databázi.
Co vás čeká v dalším dílu?
Protože stavba databáze je v podstatě hotová, bylo by dobré ji začít plnit daty. V dalším dílu ale ještě doplním druhou možnost tvorby databáze - automatické vygenerování databáze MySQL z ER diagramu (v programu MySQL Workbench) a následné připojení se k této databázi v námi zkoumaném programu Base. Kdo se tomuto způsobu práce s databází nepotřebuje věnovat, může klidně šestý díl přeskočit a pustit se do zadávání dat do databáze pomocí formulářů v dílu sedmém.