Diagram výskytů a vztahů Nepoužívá se pro modelování. Pomůcka pro pochopení kardinalit a parcialit. KINO Blaník Vesna Mír Domovina Květen MÁ_NA_PROGRAMU FILM Černí baroni Top gun Kmotr Nováček Vzorec Vetřelec Lucerna Ponrepo 1:N M:N 1:1 Jízda Kolja 1
Násobnost účasti ve vztahu (kardinalita) 1:1 KINO Blaník M Á_NA_PROGRAM U FILM Vesna Černí baroni Mír Domovina Top gun Kmotr Nováček Květen Vzorec Vetřelec Lucerna Ponrepo Jízda Kolja Kino hraje nejvýše jeden film. Film je na programu nejvýš jednoho kina. Povinnost/nepovinnost účasti ve vztahu je diskutována dále. 2
Kardinalita vztahu 1:N K IN O B laník M Á _ N A _ P R O G R A M U F IL M V esna Č erní b aro ni M ír D o m o vina T o p gun K m o tr N o váček K věten V zo rec V etřelec Kino může hrát více filmů. Film je na programu nejvýše jednoho kina. 3
Kardinalita vztahu M:N KINO Blaník MÁ_NA_PROGRAMU FILM Vesna Černí baroni Mír Top gun Domovina Kmotr Nováček Květen Vzorec Vetřelec Lucerna Jízda Ponrepo Kolja Kino může hrát více filmů. Film může být na programu více kin. 4
role účastníka Použití: - čitelnost schématu Kino hraje film. Film je na programu kina. - implementace (v relačním modelu) Jméno atributu, na kterém je IO cizí klíč (realizuje vztah), přebírají roli (nebo její zkratku) jako prefix. Nalomení nechtěných cyklů (viz přednáška o transformaci konc. modelu na relační). 5
N-ární vztah Tohle není UML! 1:1:1 1:1:N 1:N:M M:N:P Používá se spíše v nejvyšších úrovních abstrakce. Dekompozicie vztha se změní na vztahovou entitu. 6
Povinnost/nepovinnost účasti ve vztahu (parcialita) Povinná účast: všechny výskyty účastníka vztahu (instance) musí být zapojeny do příslušného vztahu. Každé kino musí mít na programu alespoň jeden film. Nepřipouštíme kina, která nic nehrají. Nepovinná účast: jednotlivé výskyty účastníka vztahu (entity) mohou, ale nemusí být zapojeny do vztahu. Kino může být evidováno i bez programu. Připustíme i taková kina, která nic nehrají. Notace: 1 (zkratka pro 1..1) 0..1 * (zkratka pro 0..*) 1..* 7
Kino může hrát více filmů (ale také žádný). Film je na programu právě jednoho kina. 1 = 1..1 * = 0..* 8
Kino hraje alespoň jeden film (ale může více). Film je na programu právě jednoho kina.. j Jak lze do této databáze vložit??? 9
Atributy vztahu, vztah M:N Chenova notace E: kino (NazevK, Adresa, JmenoVed, PocetSalu) film (JmenoFilmu, RokVyroby, Reziser) R: hraje (KINO, FILM; Datum) Ale pozor!!! F1 v K1 max jednou! UML UML nepřipouští atributy u vztahů (nutná dekompozice). 10
Dekompozice vztahu M:N KINO DAVA PROGRAM JE DAVAN FILM Blaník Černí baroni Domovina Top gun Vesna Kmotr Mír Nováček Ale pozor!!! F1 v K1 max jednou! Opravdu jsme to tak chtěli modelovat? 11
F1 v K1 vícekrát, ovšem v jiné dny. KINO DAVA PROGRAM JE DAVAN FILM Blaník 12.12.2008 12.12.2008 Černí baroni Top gun 13.12.2008 Pozor na to, jak volíte identifikátory!!! Alternativou je umělý identifíkátor entity hraje. 12
Rekurzivní typ vztahu Chenova notace UML Daná OSOBA může vést mnoho OSOB Daná OSOBA může být vedena nejvýše jednou OSOBOU 13
ISA hierarchie Osoba (OsCislo, Jmeno, Narozen,... ); UcitelL(AkHodnost) ISA Osoba; Student(Rocnik, Obor) ISA Osoba; Správně pro každý nadtyp právě jedna instance podtypu! Chenova notace UML UML (ER modelar) Pro implementaci v relačním modelu opatrně!!! 14
Sémantický relativismus PACIENT(ROD_ČÍS,JMÉNO,ADR,VÁHA,VÝŠKA, POČET_LŮŽEK) Popisuje přidaný atribut vlastnost entit typu PACIENT? typy entit: PACIENT(ROD_ČÍS, JMÉNO, ADR, VÁHA, VÝŠKA ) POKOJ(ČÍSLO_POKOJE, POČET_LŮŽEK) typy vztahů: JE_UMÍSTĚN_NA(PACIENT: (1,1), POKOJ: (0,N)) Je tím ztracena informace na kolikalůžkovém pokoji pacient leží? 15
Příklad návrh videopůjčovny 1/4 Půjčovna se rozhodla použít počítač pro evidenci výpůjček filmů. Eviduje se skutečnost, kterou lze jednou větou vyjádřit takto : Danému zákazníkovi je půjčen daný film daným zaměstnancem půjčovny. První nástřel. 16
Příklad návrh videopůjčovny 2/3 Půjčují se kopie, rezervují se filmy. 17
Příklad návrh videopůjčovny 3/3 Chceme evidovat také programy kin. Co když požadavek na rezervaci filmu, který půjčovna nevlasntní? 18
Databázové modelování poznámky na závěr Notace mohou být různé. Při konceptuálním modelu se staráme hlavně o popis reality, ne o řešení v konkrétním systému. Používáme vztahy mezi entitami, kardinalitu a parcialitu nikoliv cizí klíče! Jakmile s v obrázku objeví cizí klíče, už se nejedná o konceptuální model, ale o grafickou podobu modelu relačního! 19