PB007 Softwarové inženýrství I Cvičenie 8 – Entity-Relationship Diagram Valdemar Švábenský Fakulta informatiky, Masarykova univerzita, Brno 3. novembra 2015 Obsah 1 Entitne-relačný diagram 2 Objektovo-relačné mapovanie 3 Normálne formy 4 Úlohy 1 Entitne-relačný diagram 2 Objektovo-relačné mapovanie 3 Normálne formy 4 Úlohy Entitne-relačný diagram (ERD) ∙ Dátový model je sada nástrojov pre popis dát (ich syntaxe a sémantiky), vzťahov medzi dátami a podmienok, ktoré platia na dátach ∙ Slúži pre návrh dátovej štruktúry ∙ Entitne-relačný model je dátový model, ktorý reprezentuje logickú štruktúru databázy ∙ Odvádza sa z neho relačná schéma databázy ∙ ERD je grafickým vyjadrením entitne-relačného modelu ∙ Základné zložky ERD: ∙ Entity (resp. entitné typy) ∙ Atribúty (resp. typy atribútov) ∙ Vzťahy (resp. vzťahové typy) ERD – entita ∙ Entita je objekt, ktorý existuje, je odlíšiteľný od ostatných objektov a je v navrhovanom systéme potrebný ∙ Abstraktná (výuka) aj konkrétna (študent) ∙ Popísaná svojim názvom a množinou atribútov ∙ Jednoznačne identifikovaná kľúčom ∙ Entitný typ je vzor skupiny entít, ktoré zdieľajú rovnaké typy atribútov ∙ Entita je „inštanciou“ entitného typu ∙ Entitná množina je skupina všetkých entít daného entitného typu v databáze v aktuálnom čase Zdroj: https://is.muni.cz/auth/el/1433/podzim2015/PB007/um/lec/05-StructuredAnalysis.pdf ERD – atribút ∙ Atribút je popisná vlastnosť; informácia o entite alebo vzťahu, ktorej hodnotu uchovávame a používame v systéme ∙ Každý atribút má dátový typ ∙ Druhy atribútov: ∙ Jednoduché (napr. meno) a zložené (napr. dátum) ∙ S jednoduchou hodnotou (single-valued, napr. meno) a s násobnou hodnotou (multivalued, napr. telefónne číslo) ∙ Nulové (null) (napr. osoba nemá telefón) ∙ Odvodené (derived) (napr. vek z dátumu narodenia) Databázová tabuľka Zdroj: http://www.w3resource.com/sql/sql-basic/the-components-of-a-table.php ERD – kľúč ∙ Kľúč je časť relačnej schémy, podmnožina atribútov, ktorá identifikuje entitu (záznam, 𝑛-ticu v tabuľke) ∙ Superkľúč je identifikátor entity dostatočný pre jednoznačnú identifikáciu ∙ Kandidátny kľúč je minimálny superkľúč, tzn. po odobraní akejkoľvek množiny atribútov by už neidentifikoval entity jednoznačne ∙ Primárny kľúč je jeden zvolený kandidátny kľúč ∙ Obvykle umelo vytvorené celočíselné ID, ktoré sa automatizovane inkrementuje ∙ Cudzí kľúč je množina atribútov v entite B, ktorá je superkľúčom v inej entite A ∙ Obvykle kandidátny alebo primárny kľúč entity A ERD – vzťah ∙ Vzťah je spojenie medzi niekoľkými entitami, o ktorom uchovávame informácie ∙ Vzťahový typ1 je vzor vzťahov rovnakého druhu (môže mať atribúty) Zdroj: https://is.muni.cz/auth/el/1433/podzim2015/PB007/um/lec/05-StructuredAnalysis.pdf 1 Zdroj: http://web.cse.ohio-state.edu/~gurari/course/ cse670/cse670Ch2.xht ERD – popisy vzťahu ∙ Rola – úloha, ktorú nadobúda entita vo vzťahu ∙ Vo vzťahu manželstvo medzi entitami typu osoba a osoba získavajú entity role muž a žena2 ∙ Stupeň vzťahu – počet množín entít, ktoré sú súčasťou množiny vzťahu (obvykle unárny/binárny, príp. ternárny) ∙ Kardinalita – počet prvkov množiny; pri modelovaní sa niekedy zamieňa s korektnejším termínom multiplicita ∙ Násobnosť vzťahu (multiplicita) – počet entít, ktoré sa môžu zúčastniť vzťahu ∙ Udáva dolnú a hornú kardinalitu ∙ Typy: 0:1, 1:1, 0:N, 1:N, M:N ∙ Pri násobnosti M:N sa počas implementácie vytvára stredná (tzv. asociačná) entita, ku ktorej majú predošlé dve entity vzťah 1:N 2 Prípadne muž–muž alebo žena–žena ERD – cudzí kľúč detailne ∙ Vo vzťahu 1:N je cudzí kľúč na strane „N“; resp. ukazuje na stranu „1“: Zdroj: http://www.visual-paradigm.com/tutorials/compare-logical-physical-erd.jsp ∙ Vo vzťahu 1:1 je umiestnenie cudzieho kľúča na návrhárovi; prípadne sa dané dve tabuľky môžu zlúčiť do jednej ERD – konceptuálny model – ukážka ∙ Spoločnosť pre rozvoz tovaru ∙ Ku každému autu je priradený plán, ktorý určuje, k akému zákazníkovi na akej adrese bude auto jazdiť daný deň ∙ Zákazníka Z obsluhuje Auto A v i-tý deň v týždni ∙ Model definuje: entity, vzťahy, násobnosti ERD – implementačný, fyzický model – ukážka ∙ Model definuje: entity, atribúty a ich dátové typy, vzťahy, násobnosti, kľúče, integritné obmedzenia ERD – implementačný, fyzický model – ukážka ∙ Model definuje: entity, atribúty a ich dátové typy, vzťahy, násobnosti, kľúče, integritné obmedzenia ERD – grafické vyjadrenie 1 Entitne-relačný diagram 2 Objektovo-relačné mapovanie 3 Normálne formy 4 Úlohy Objektovo-relačné mapovanie (ORM) ORM je technika konverzie dát medzi relačnou databázou a objektovo orientovaným jazykom ∙ Perzistentná trieda ≡ entitný typ (tabuľka v DB) ∙ Objekt ≡ entita (riadok v tabuľke) ∙ Atribúty triedy ≡ atribúty entity (stĺpce tabuľky) ∙ Asociácia tried ≡ relácia (prepojenie tabuliek cudzími kľúčmi) ∙ Dedičnosť je možné riešiť tromi spôsobmi: mapovanie 1:1, zahrnutie do nadtriedy, rozpustenie do podtried Poznámky: ∙ Jedna trieda môže byť mapovaná na viac tabuliek ∙ Viac tried môže byť mapovaných do jednej tabuľky ∙ Nie všetky triedy musia byť perzistentné ORM – ukážka Zdroj: http://www.visual-paradigm.com/VPGallery/datamodeling/SynchronizationToClassDiagram.html ORM – dedičnosť – a) mapovanie 1:1 Zdroj: https://is.muni.cz/auth/el/1433/podzim2015/PB007/um/sem/cz_files/08/pb007-cvicenie-08.pdf ∙ Každá trieda sa stáva tabuľkou ∙ ID ex-nadtriedy = cudzí kľúč v ex-podtriedach ∙ Jedna inštancia triedy je uložená vo viacerých tabuľkách ORM – dedičnosť – b) zahrnutie do nadtriedy Zdroj: https://is.muni.cz/auth/el/1433/podzim2015/PB007/um/sem/cz_files/08/pb007-cvicenie-08.pdf ∙ Všetky atribúty podtried sú zahrnuté do jednej tabuľky ∙ Niektoré atribúty môžu byť null – porušenie BCNF ∙ Vhodné pri menšom počte podtried s málo atribútmi ORM – dedičnosť – c) rozpustenie do podtried Zdroj: https://is.muni.cz/auth/el/1433/podzim2015/PB007/um/sem/cz_files/08/pb007-cvicenie-08.pdf ∙ Atribúty nadtriedy sú prenesené do tabuliek pre všetky neabstraktné podtriedy ∙ Vhodné, ak: ∙ nadtrieda má málo atribútov ∙ existuje mnoho podtried ∙ podtriedy majú veľa atribútov Class Diagram vs. ERD Class diagram ERD Orientuje sa na dáta aj procesy Orientuje sa len na dáta Modeluje štruktúru aj chovanie systému (atribúty, operácie) Modeluje iba štruktúru dát Obsahuje rôzne druhy vzťahov (asociácie, agregácie, kompozície, závislosti, generalizácie) Obsahuje len jednoduché vzťahy (napr. len zriedkavo generalizuje) Pripomína objekty z reálneho sveta Pripomína DB tabuľky 1 Entitne-relačný diagram 2 Objektovo-relačné mapovanie 3 Normálne formy 4 Úlohy 1. normálna forma (1. NF) ∙ Relačná schéma je v 1. NF, keď každý jej atribút je atomický (ďalej nedeliteľný; teda jednoduchý a nie zložený ani viachodnotový) ∙ Relácia Osoba sa rozloží na relácie Osoba a Telefon Funkčná závislosť ∙ Nech 𝑅 je relačná schéma DB ∙ Nech 𝑋 ⊆ 𝑅, 𝑌 ⊆ 𝑅 sú množiny atribútov ∙ Potom 𝑌 je funkčne závislé na 𝑋 (píšeme 𝑋 → 𝑌 ), keď pre každú povolenú reláciu 𝑟(𝑅) platí: ∙ ak majú dva ľubovolné prvky tejto relácie rovnaké hodnoty v atribútoch 𝑋, ∙ potom majú rovnaké hodnoty v atribútoch 𝑌 Zdroj: http://prefex.cs.uwaterloo.ca/projects/probclean/ 2. normálna forma (2. NF) ∙ Relačná schéma je v 2. NF, keď je v 1. NF a každý atribút, ktorý nie je primárny (= nie je súčasťou kandidátneho kľúča), je závislý na celom kľúči (môže byť aj tranzitívne, ale vždy na celom kľúči) ∙ Telefon výrobce nezávisí na celom kľúči, ale len na atribúte Výrobce ∙ Relácia Sklad sa rozloží na relácie Výrobek a Výrobce 3. normálna forma (3. NF) ∙ Relačná schéma je v 3. NF, keď je v 2. NF a každý atribút, kt. nie je primárny, je netranzitívne závislý na celom kľúči ∙ Schéma v 3NF môže byť redundantná ∙ Závislosť r.č → Město → PSČ je tranzitívna závislosť PSČ na kľúči, rovnako ako závislosť r.č. → Funkce → Plat ∙ Zaměstnanec sa rozloží na Zaměstnanec, Město a Funkce Boyce-Coddova normálna forma (BCNF) ∙ Relačná schéma je v Boyce-Coddovej normálnej forme, ak je v 3. NF a každý atribút je triviálne závislý na kľúči (teda každá závislosť v relačnej schéme je závislosť na kľúči) ∙ Jednoducho povedané, nie sú tam hodnoty null ∙ Zdroje: http: //www.manualy.net/article.php?articleID=13 1 Entitne-relačný diagram 2 Objektovo-relačné mapovanie 3 Normálne formy 4 Úlohy Úlohy ∙ Opravte a doplňte State Diagram z minulého cvičenia ∙ Na základe analytického diagramu tried vytvorte ERD ∙ Prakticky identický; eliminujte dedičnosť ∙ Vzťahy M:N rozložte pomocou asociačných entít ∙ U všetkých entít nájdite ich kľúče ∙ Nevytvárajte umelé ID, ak netreba: v asociačných entitách identifikujte kľúčmi pôvodných entít ∙ (Normalizujte model do 3. NF) ∙ Vygenerujte PDF report a vložte ho do odovzdávarne „Week 08“ (skupiny 09, 10) ∙ Názov v tvare priezvisko1-priezvisko2-priezvisko3.pdf ∙ Odovzdáva jeden človek za svoj tím ∙ Deadline: 8.11. 23:59