Metodika návrhu databáze
Metodika tvorby konceptuálního datového modelu (ERA diagramu)1
1. Zvolte jednu primární entitu ze specifikace požadavků. 2. Určete atributy, jejichž hodnoty se mají pro tuto entitu zaznamenávat. Označte případné klíče (identifikátory) a vytvořte ukázková data. 3. Popište slovně navrženou entitu, její atributy a klíče. 4a. Prověřte funkční vztahy (závislosti) atributů a v případě potřeby entitu normalizujte. 4b. Prověřte atributy navržené entity (pokud možno ve spolupráci s uživatelem) a zjistěte, zda je třeba zaznamenávat informace o jednom či více atributech v nové samostatné entitě. 5. Je-li vhodné vytvořit další entitu, zakreslete ji do diagramu a vraťte se na krok 2. 6. Spojte entity vztahy, pokud tyto existují. Popište slovně vztahy mezi entitami z obou stran. 7a. Prověřte seznam atributů a určete, zda některé z nich potřebují být identifikovány prostřednictvím dvou (či více) entit. Pokud ano, umístěte atribut na příslušný vztah, který spojuje dané entity. 7b. Prověřte, zda v diagramu nemáte „smyčky“ (kružnice), které mohou indikovat nadbytečné (odvozené) vztahy. Pokud je vztah skutečně redundantní, odstraňte ho. 8. Vytvořte ukázková data. 9. Předveďte navržený model (diagram i slovní popis) uživateli. Pokud je to třeba, upřesněte diagram.
1
Zpracováno s použitím: BAGUI, Sigha a EARP, Richard. Database design using entity-relationship diagrams. Boca Raton : Auerbach Publications, 2003. 264 s. ISBN 0849315484
Příklad – proces půjčování knih v knihovně Čtenář si nejprve v katalogu knihovny vyhledá signaturu knihy, kterou si chce půjčit. Signaturu nahlásí knihovníkovi a ten podle ní knihu vyhledá ve skladišti. Vyhledanou knihu knihovník zapůjčí čtenářovi a údaje o výpůjčce zaznamená do evidence výpůjček.
Specifikace požadavků •
Výpůjční systém knihovny bude poskytovat své služby v rámci automatizovaného knihovního systému.
•
Podporovaným procesem bude půjčování knih čtenářům.
Požadavky na funkcionalitu: 1. Vyhledání signatury požadované knihy z katalogu knihovny na základě jejího názvu nebo jména autora. 2. Zápis údajů o uskutečněné výpůjčce. 3. Sestavení statistického výkazu o počtu uskutečněných výpůjček za určité období.
„Strukturovaná čeština“ pro popis ERA diagramů ENTITY Databáze zaznamenává údaje o [název entity]. Pro každou [název entity] zaznamenáváme v databázi [názvy atributů].
KNIHA (Název,Autor,Cena,Vydavatelské údaje,Čtenář,Datum výpůjčky,Datum vrácení) Databáze zaznamenává údaje o knihách. Pro každou knihu zaznamenáváme v databázi název, autora, cenu, vydavatelské údaje, čtenáře, kteří si ji půjčili, a data půjčení a vrácení.
ATRIBUTY a) Atomické atributy Pro každou [název entity] bude existovat vždy jeden a pouze jeden [název atributu]. Hodnota [název atributu] se nebude dále členit (na dílčí údaje). Pro každou knihu bude vždy jeden a pouze jeden název. Hodnota názvu se nebude dále členit. b) Složené (skupinové) atributy Pro každou [název entity] budeme zaznamenávat [název atributu], který se skládá z x, y, z…, (x, y, z) jsou součástmi [název atributu]. Pro každou knihu budeme zaznamenávat vydavatelské údaje, jež se skládají z názvu vydavatele, místa vydání a roku vydání. Název vydavatele, místo vydání a rok vydání jsou součástí vydavatelských údajů. c) Vícehodnotové atributy Pro každou [název entity] budeme zaznamenávat [název atributu]. Může být zaznamenán více než jeden [název atributu] pro každou [název entity]. Pro každou knihu zaznamenáváme autory. Může být zaznamenán více než jeden autor pro každou knihu. d) Odvozené atributy Pro každou [název entity] může existovat [název atributu], který bude odvozen z databáze. Pro každou knihu může existovat lhůta (počet dnů zapůjčení), která bude odvozena z databáze (odečet data výpůjčky od data vrácení knihy).
KLÍČE
a) Jeden kandidát klíče (silná entita) Pro každou [název entity] budeme mít následující primární klíč: [název atributu]. Pro každou knihu budeme mít následující primární klíč: přírůstkové číslo.
b) Více než jeden kandidátní klíč (silná entita) Pro každou [název entity] budeme mít následující kandidátní klíče: [názvy atributů]. Pro každou knihu budeme mít následující kandidátní klíče: přírůstkové číslo, signatura, ISBN.
c) Žádní kandidáti klíče (slabá entita) Pro žádnou [název entity1] nepředpokládáme, že by kterýkoli z atributů byl dostatečně unikátní, aby identifikoval individuální [název entity1] bez doplňujícího odkazu na [název entity2], vlastnickou entitu. Pro žádnou rezervaci nepředpokládáme, že by kterýkoli z atributů byl natolik unikátní, aby identifikoval individuální rezervaci bez doplňujícího odkazu na knihu, vlastnickou entitu.
d) Žádní kandidáti klíče (vazební entita) Pro žádnou [název vztahové entity] nepředpokládáme, že by kterýkoli z atributů byl dostatečně unikátní, aby identifikoval individuální [název vztahové entity] bez doplňujícího odkazu na [název entity1] a [název entity2], vlastnické entity. Pro žádnou výpůjčku nepředpokládáme, že by kterýkoli z atributů byl natolik unikátní, aby identifikoval individuální výpůjčku bez doplňujícího odkazu na knihu a čtenáře, vlastnické entity.
VZTAHY
[název entity1] [název vztahu – aktivum] [název entity2] a [název entity2] [název vztahu – pasivum] [název entity1]
Čtenáři si půjčují knihy a knihy jsou půjčovány čtenáři. nebo Čtenář si půjčuje knihy a kniha se půjčuje čtenářům.
musí existovat jedna a právě jedna instance může existovat jedna nebo žádná instance musí existovat jedna nebo více instancí může existovat jedna, více nebo žádná instance
Slovní vyjádření kardinality a členství ve vztahu: a) Vztah jedna – jedna
Čtenář si může půjčit pouze jednu knihu, nemusí si půjčit žádnou knihu. Kniha může být půjčena pouze jednomu čtenáři, nemusí být půjčena žádnému čtenáři.
Čtenář si musí půjčit jednu a právě jednu knihu. Kniha může být půjčena pouze jednomu čtenáři, nemusí být půjčena žádnému čtenáři.
Čtenář si musí půjčit jednu a právě jednu knihu. Kniha musí být půjčena jednomu a právě jednomu čtenáři.
Čtenář si může půjčit pouze jednu knihu, nemusí si půjčit žádnou knihu. Kniha musí být půjčena jednomu a právě jednomu čtenáři.
b) Vztah jedna – více
Čtenář si může půjčit více knih, nemusí mít půjčenou žádnou knihu. Kniha může být půjčena pouze jednomu čtenáři, nemusí být půjčena žádnému čtenáři.
Čtenář si musí půjčit alespoň jednu knihu, může si půjčit více knih. Kniha musí být půjčena jednomu a právě jednomu čtenáři.
Čtenář si musí půjčit alespoň jednu knihu, může si půjčit více knih. Kniha může být půjčena pouze jednomu čtenáři, nemusí být půjčena žádnému čtenáři.
Čtenář si může půjčit více knih, nemusí mít půjčenou žádnou knihu. Kniha musí být půjčena jednomu a právě jednomu čtenáři.
Čtenář si může půjčit pouze jednu knihu, nemusí si půjčit žádnou knihu. Kniha se nemusí půjčit žádnému čtenáři, může se půjčit jednomu nebo více čtenářům.
Čtenář si musí půjčit jednu a právě jednu knihu. Kniha musí být půjčena alespoň jednomu čtenáři, může být půjčena více čtenářům.
Čtenář si může půjčit pouze jednu knihu, nemusí si půjčit žádnou knihu. Kniha musí být půjčena alespoň jednomu čtenáři, může být půjčena více čtenářům.
Čtenář si musí půjčit jednu a právě jednu knihu. Kniha se nemusí půjčit žádnému čtenáři, může se půjčit jednomu nebo více čtenářům.
c) Vztah více – více
Čtenář si může půjčit jednu nebo více knih, nemusí mít půjčenou žádnou knihu. Kniha může být půjčena více čtenářům, nemusí být půjčena žádnému čtenáři.
Čtenář si musí půjčit alespoň jednu knihu, může si půjčit více knih. Kniha musí být půjčena alespoň jednomu čtenáři, může být půjčena více čtenářům.
Čtenář si musí půjčit alespoň jednu knihu, může si půjčit více knih. Kniha se nemusí půjčit žádnému čtenáři, může se půjčit jednomu nebo více čtenářům.
Čtenář si může půjčit jednu nebo více knih, nemusí mít půjčenou žádnou knihu. Kniha musí být půjčena alespoň jednomu čtenáři, může být půjčena více čtenářům.
Pravidla návrhu správných ERA diagramů • Zobrazujeme pouze data a jejich vztahy, žádné procesy • Každý atribut zobrazujeme pouze jednou cílem je strukturovat seznam atributů, nikoli znázorňovat propojení v relační databázi • Zobrazujeme seskupení dat pro účely uložení v databázi, nikoli pro účely výstupů kombinaci atributů z různých entit a případné duplicity realizují až pohledy (formuláře, sestavy) • Zobrazujeme pouze perzistentní (trvalé) datové objekty data, jež hodláme vygenerovat výpočty a agregacemi, nemodelujeme • Entity mají být normalizované např. atributy, mezi kterými je vztah 1 : N, nepatří do stejné entity • Pozor na tyto entity:
•
•
entita bez atributů
•
entita, která má pouze identifikátor a žádné další atributy
•
entita, u níž nastane pouze jeden výskyt
•
entita, která obsahuje atributy patřící jiným entitám (tzv. cizí atributy)
Zobrazujeme pouze nezbytně nutné vztahy (tj. ty, které k něčemu využijeme – např. v dotazu). Nezobrazujeme: •
redundantní vztahy
•
odvozené vztahy
•
kruhové závislosti (smyčky)
Příklad: Redundantní vztah STUDENT–UČITEL