Na obrázku je znázorněn vztah mezi předmětem a studentem
E (entitní typ):
R (vztahový typ):
Pravidla pro kreslení typových diagramů:
Každý uzel je pojmenován. Při pojmenování vztahů je třeba dávat pozor! Vhodné jméno se může lišit podle toho, z které strany se na vztah díváme. V našem diagramu se díváme na vztah zprava. Zleva by bylo vhodnější jméno pro vztah JE_ZAPSÁN.
Binární typy vztahů jsou takové, kde se vztahu zúčastní jen dva entitní typy. n-ární vztah, kde vystupuje více entitních typů, budeme probírat později, např. v souvislosti s datovými sklady.
Typy vztahů jsou určeny tzv. integritními omezeními (IO). Integritní omezení je v podstatě slovní vyjádření pravidel a předpisů, které existují mezi entitními typy.
Proč tak podivný a možná zavádějící název?
Integrita dat je, jak již bylo uvedeno, souhlas obsahu dat s popisovanou realitou. Vystihnout plně realitu popisované oblasti reálného světa by jistě bylo obtížné, ne-li nemožné. Výsledný informační systém, který by musel počítat se všemi nejobecnějšími možnostmi, by byl složitý a nepřehledný. Proto do hry vstupují zmíněná pravidla, která různým způsobem omezují obecný požadavek na úplnou integritu dat, proto integritní omezení.
Existují celkem tři typy vztahů:
Poměr ve vztahu nazýváme kardinalita vztahu. O jakou kardinalitu jde se odvodí právě z množiny IO.
Př. Předpokládejme vztah UČÍ mezi entitními typy
E: UČITEL(JMÉNO_UČITELE,…);
PŘEDMĚT(NÁZEV_PŘEDMĚTU,…)
R: UČÍ(…);
V závislosti na studijních předpisech, může mít zavedený vztah UČÍ tři různé kardinality:
Vztah 1 : 1 odpovídá těmto předpisům:
Na obrázku je znázorněn výskytový diagram vztahu 1:1.
Jak je vidět, vztah 1 : 1 může obecně zahrnovat i případy 1 : 0 a 0 : 1.
Kdybychom chtěli tyto případy vyloučit, museli bychom přeformulovat integritní omezení např. takto:
Vztah 1 : N může odpovídat těmto předpisům:
Na obrázku je znázorněn výskytový diagram vztahu 1:N.
Vztahový typ 1 : N obecně zahrnuje i případy výskytů vztahu 1:0, 0:1 a 1 :1.
Některé z těchto vztahů mohou být vyloučeny přísnějšími pravidly, např.:
Pro vztah 1 : N je důležitý směr. V našem případě je směr definován od (jednoho) učitele k (mnoha) předmětům.
Vztah 1 : N od (jednoho) předmětu k (mnoha) učitelům by vyjadřoval odlišně formulované studijní předpisy.
Vztah M : N může odpovídat těmto předpisům:
Na obrázku je znázorněn výskytový diagram vztahu M:N.
Vztahový typ M : N zahrnuje obecně i případy výskytu vztahu 1 : 0, 0 : 1, 1:1 a 1 : N (resp. N : 1).
Na obrázku je ukázáno, jak se kardinalita zaznamenává do E-R diagramu.
Kardinalita je někdy vyjadřována tvrzením, že:
V literatuře je opět nejednotná terminologie.
Pro vztah 1:1 ve výše uvedeném obrázku můžeme formulovat tato tvrzení:
Pro vztah 1:N ve výše uvedeném obrázku můžeme formulovat tato tvrzení:
Pro vztah M:N ve výše uvedeném obrázku můžeme formulovat tato tvrzení:
Často potřebujeme znát o poměrech ve vztazích podrobnější informace. Zejména budeme potřebovat vědět, zda jeden nebo oba členové vztahu mají tzv. povinné členství ve vztahu. Povinné členství mají tehdy, jestliže všechny entity entitního typu se musí povinně ve vztahu vyskytnout alespoň jednou. Jinak má příslušný entitní typ ve vztahu členství nepovinné. Situaci nejlépe poznáme z příslušného výskytového diagramu pro zkoumaný vztah. Jestliže na některé straně výskytového diagramu zbydou prázdné body, označující jednotlivé entity (nevede od nich žádná spojnice k některé entitě druhého vztahu), má entitní typ, ke kterému entita patří, ve vztahu nepovinné členství. Tato vlastnost nezávisí na kardinalitě vztahu.
Povinné/nepovinné členství zapíše do E-R diagramu. Jde o dvojici čísel, které jsou zapsány u entitního typu na spojnici se vztahem. První číslo znamená, kolikrát se musí každá entita minimálně ve vztahu vyskytnout, druhá číslice naopak, kolikrát se může maximálně vyskytnout. Je-li počet výskytů větší než 1, napíšeme číslo m nebo n. Popisuje-li minimální výskyt entity ve vztahu číslo 0, jde o nepovinné členství entitního typu ve vztahu. Podrobněji si povinné a nepovinné členství rozebereme v kapitole logická úroveň datového modelování.