====== ERD ====== * Entity-relationship diagram - grafická reprezentace E-R modelu (ERM) * Autorem je Dr.Chen, 70 léta, [[http://www.csc.lsu.edu/~chen/pdf/erd-5-pages.pdf|originální článek]] * Slouží k popisu konceptuálního datového modelu systému, nezávislé na implementaci * Existují různé notace (způsoby nakreslení), např Crow's Foot ===== Základní konstrukty ===== ==== Entita ==== * 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 závislosti na kontextu může něco být entita, nebo vztah, např. "manželství". ==== Atribut ==== * Je vlastností entity * Například: Jméno, Barva, Cena * Má typ (doménu) a hodnotu, je atomický (nedělitelný), povinnost (null/not null), jednoznačnost (unique), počáteční (default) hodnotu, integritní omezení ==== 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 * Vztah má nějakou kardinalitu (1:1,1:N,M:N) a parcialitu (povinnost členství - 0:0, 1:0, 1:1) * Vztah může také mít atributy ===== Klíče ===== ==== Primární ==== * Jednoznačně identifikuje výskyt entity * Je unikátní (UNIQUE) * Může být množinou klíčů (složený) ==== Cizí ==== * Je výsledkem existence vztahů * Vztahy přenášejí cizí klíče * např. 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 ===== 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 ! ===== Vztah mezi Entitami, OOP a relačními DB ===== ^ERM^OOP^RDBMS^ |Entita|Třída|Tabulka| |Atribut|Atribut|Sloupec v tabulce| |Výskyt entity|Objekt (instance třídy)|Řádek v tabulce| |Vztah|pouze objektová dědičnost a skládání|neexistuje|