Ing. Martin Molhanec, CSc. Entitně-vztahové modelování 2. přednáška 20.9.2018 X13DFA Ing. Martin Molhanec, CSc. Entitně-vztahové modelování 2. přednáška
ER (Entity-Relationship) Konceptuální modelování Chen, 70 léta Konceptuální modely popisují DATA v reálném světě okolo nás. Opis je nezávislý na případné implementaci. Zkratky ERM (Entity-Relationship Model) ERD (Entity-Relationship Diagram) POZOR Relationship Vztah !!! Říká se správně entitně-vztahové a nikoliv entitně-relační! V databázích se relací myslí databázová relace podle pana Codda! A to je množina n-tic! A ta odpovídá databázové tabulce v relační databázi! 20.9.2018 (c) 2003 Molhanec, M.
Základní konstrukty ENTITA Atribut Vztah Označuje množinu (třídu) objektů, které mají společnou vlastnost Název: podstatné jméno v jednotném čísle Například: Osoba, Auto, Faktura V relační databázi entitě odpovídá tabulka! Atribut Je vlastností entity Například: Jméno, Barva, Cena Má typ (doménu) a hodnotu, je atomický (nedělitelný)! V relační databázi atributu odpovídá sloupeček v tabulce! Vztah Vyjadřuje souvislost (vztah, závislost) mezi entitami Název je sloveso, obvykle je možné dvojí čtení (jazyková nikoliv konceptuální záležitost!) Například: má, náleží, je členem, obsahuje Poznámka: V relačních databázích, defakto žádné vztahy neexistují! Nejsou jako takové nikde uloženy! 20.9.2018 (c) 2003 Molhanec, M.
Atribut Typ (doména) Velikost Povinnost – NULL, NOT NULL 20.9.2018 Atribut Typ (doména) Integer, Float, Boolean, String, Long_String (MEMO), Datum, Blob (Binary Large Object), … Velikost Počet znaků, cifer, slabik, … Povinnost – NULL, NOT NULL Jednoznačnost – UNIQUE, NOT UNIQUE Počáteční (default) hodnota A další integritní omezení – povíme si později 20.9.2018 (c) 2003 Molhanec, M.
Souvislosti (ERM – OOP – RDBMS) ENTITA Třída Tabulka VÝSKYT ENTITY Objekt Řádek v tabulce ATRIBUT Atribut Sloupeček v tabulce VZTAH OOP má jen dědičnost a skládání Neexistuje, musí se dělat SELECT OOP – Object Oriented Programming RDBMS – Relational Data Base Management System 20.9.2018 (c) 2003 Molhanec, M.
ENTITA (notace dle J. Martina) Název OSOBA RČ Jméno Příjmení Věk Stav Pohlaví Entita 20.9.2018 (c) 2003 Molhanec, M.
VÝSKYT ENTITY KONKRÉTNÍ OSOBA 123546789 Martin Molhanec 99 free male 20.9.2018 (c) 2003 Molhanec, M.
ENTITA a VZTAH FAKTURA POLOŽKA FAKTURY má patří k ID_FAK Datum Firma Adresa IČO DIČ FAKTURA ID_POL ID_FAK počet cena/kus zboží DPH POLOŽKA FAKTURY má patří k 20.9.2018 (c) 2003 Molhanec, M.
Kardinalita (horní poměr) maximální výskyt 1 : 1 1 : M M : N manželství Při oboustranné povinnosti vede ke sloučení entit faktura a položka Někdy vztah celek-část autor a kniha V relační databázi nelze implementovat 20.9.2018 (c) 2003 Molhanec, M.
Parcialita (spodní poměr) minimální výskyt 1 : 1 1 : 0 0 : 0 faktura a položka oboustranné povinné členství Učitel přednáší přednášku nepovinné členství manželství oboustranné nepovinné členství 20.9.2018 (c) 2003 Molhanec, M.
Kardinalita a parcialita (textové vyjádření) Jenom kardinalitu 1 : 1, 1 : M, N :1, M : N Jak kardinalitu, tak parcialitu Například: (1,1) : (0,M) (1,1) čteme: právě jeden 20.9.2018 (c) 2003 Molhanec, M.
ENTITA a VZTAH (1,1) : (1,M) 1 : M FAKTURA POLOŽKA FAKTURY má ID_FAK Datum Firma Adresa IČO DIČ POLOŽKA FAKTURY má ID_POL ID_FAK počet cena/kus zboží DPH (1,1) : (1,M) 1 : M 20.9.2018 (c) 2003 Molhanec, M.
PRIMÁRNÍ KLÍČ (primary key) Jednoznačně identifikuje výskyt entity Je unikátní (UNIQUE) Může být množinou klíčů (složený) entita primary key OSOBA RČ FAKTURA ID_FAK POLOŽKA FAKTURY ID_POL + ID_FAK 20.9.2018 (c) 2003 Molhanec, M.
CIZÍ KLÍČ (foreign key) Je výsledkem existence vztahů Vztahy přenášejí cizí klíče ID_FAK v entitě FAKTURA je Primary Key ID_FAK v entitě POLOŽKA FAKTURY je Foreign Key Foreign Key obsahuje hodnoty, které se vyskytují v Primary Key Foreign Key je výsledek relační implementace 20.9.2018 (c) 2003 Molhanec, M.
ENTITA a VZTAH (1,1) : (1,M) FAKTURA PK FK POLOŽKA FAKTURY má ID_FAK (PK) Datum Firma Adresa IČO DIČ FAKTURA Vznik FK PK FK ID_POL (PK) ID_FAK (PK)(FK) počet cena/kus zboží DPH POLOŽKA FAKTURY má (1,1) : (1,M) 20.9.2018 (c) 2003 Molhanec, M.
Integritní omezení ENTITNÍ Výskyt každé entity musí být jednoznačně identifikovatelný Musí existovat primární klíč ! REFERENČNÍ Cizí klíč obsahuje pouze hodnoty, které existují v jemu odpovídajícím primárním klíči ! DOMÉNOVÁ Atribut může obsahovat pouze přípustné hodnoty omezené integritním pravidlem ! 20.9.2018 (c) 2003 Molhanec, M.
MARTIN ORACLE 20.9.2018 (c) 2003 Molhanec, M.
CHEN – ER Modeller CHEN – Sunicat 20.9.2018 (c) 2003 Molhanec, M.
Problém je ten, že tento vztah nelze v relační databázi realizovat ! Vztah M : N M : N KNIHA AUTOR ISBN (PK) Název Cena Stránek Vydavatel RČ (PK) Jméno Příjmení Adresa napsal Problém je ten, že tento vztah nelze v relační databázi realizovat ! 20.9.2018 (c) 2003 Molhanec, M.
Vazební entita (tabulka) 1 : M N : 1 KNIHA AUTOR RČ (PK)(FK) ISBN (PK)(FK) Vazební entita „napsal“ ISBN (PK) Název Cena Stránek Vydavatel RČ (PK) Jméno Příjmení Adresa napsal má ŘEŠENÍ: Vytvoříme vazební entitu a jeden vztah M : N nahradíme dvěma vztahy 1:M a N:1 ! 20.9.2018 (c) 2003 Molhanec, M.
Kusovníková vazba (hierarchie) Tato vazba je velice důležitá v průmyslu. Umožňuje vytvářet hierarchické struktury : tzv. kusovníky dílů ! Obtížně se s ním pracuje pomocí jazyka SQL. ORACLE SQL obsahuje konstrukty na její podporu. Díl ID_dílu (PK) Název dílu ID_celku (FK) celek má část 20.9.2018 (c) 2003 Molhanec, M.
ID_typu (FK) ID_barvy (FK) Číselník Číselník je termín z praxe. Jedná se o malou entitu (tabulku), ve které jsou hodnoty některé z vlastností. Můžeme říci, že se jedná o implementaci tzv. enumerated typu. V praxi se vyskytuje mnoho číselníků. Programátoři je nemají rádi a snaží se je odstranit – to je chyba! ID_barvy (PK) Kód barvy Název barvy ID_typu (FK) Kód typu Název typu Barva Typ Zboží ID_zboží (PK) ID_typu (FK) ID_barvy (FK) … 20.9.2018 (c) 2003 Molhanec, M.
Dědičnost (notace IDEF1X) Novější ERM podporují i vztah tzv. dědičnosti. Vztah se realizuje jako vazby 1:1 s nepovinností! Osoba RČ (PK) Jméno Příjmení Učitel RČ (PK)(FK) Katedra Místnost Ročník Kruh Student 20.9.2018 (c) 2003 Molhanec, M.
Kde bude uložena hodnota atributu zaplaceno ? Vztah s atributy M : N KNIHA AUTOR ISBN (PK) Název Cena Stránek Vydavatel RČ (PK) Jméno Příjmení Adresa napsal Zaplaceno Kde bude uložena hodnota atributu zaplaceno ? 20.9.2018 (c) 2003 Molhanec, M.
Vztah s atributy (řešení) 1 : M N : 1 ISBN (PK) Název Cena Stránek Vydavatel KNIHA RČ (PK) Jméno Příjmení Adresa AUTOR Smlouva RČ (PK)(FK) ISBN (PK)(FK) Číslo smlouvy Zaplaceno má má ŘEŠENÍ: Jako u vztahu M : N, ale vazební entita obsahuje navíc i neklíčové atributy ! VZTAH je nahrazen ENTITOU: např. smlouva 20.9.2018 (c) 2003 Molhanec, M.
Nedoporučuji používat! Moc se nepoužívá. Triviální řešení pouze u dokonale symetrického trinárního vztahu. Nedoporučuji používat! Trinární vztah Družstvo ID_DR (PK) Název Hráč Zápas RČ (PK) Jméno Příjmení Den (PK) Soupeř Score 20.9.2018 (c) 2003 Molhanec, M.
Role ve vztazích Komise Osoba Je vedoucím Je členem vedoucí člen Entita může v různých vztazích vystupovat v různých rolích ! Z toho plyne i nutnost přejmenování FK ! 20.9.2018 (c) 2003 Molhanec, M.
Transformace ERM RDBS ERM obsahuje abstrakce (vztah M : N, dědičnost), které nejdou v RDBMS přímo realizovat Proto musíme provést transformaci Při ní řešíme problematiku Primárních klíčů Cizích klíčů Vazební entit 20.9.2018 (c) 2003 Molhanec, M.
Význam datového modelování! Datové (entitně vztahové) modelovaní nám umožní modelovat názorným grafickým způsobem vztahy mezi daty obsaženými v systému. Výsledky modelování nám slouží pro pochopení datové stránky systému. Nemusí nutně sloužit jako analytická dokumentace pro vytvoření nějakého programového systému. Z hlediska programového systému se jedná o trvalá (persistentní) data systému, nezávislá na běhu programu a jeho konkrétní implementaci. 20.9.2018 (c) 2003 Molhanec, M.
Tohle byl ten správný klíč k datovému modelování ! 20.9.2018 (c) 2003 Molhanec, M.