E-R diagram Entity – Relation diagram, diagram entit a vztahů mezi nimi Entity – objekty, které chci v databázi popisovat, mohou nabývat různých hodnot, mít instance Relace (vztahy) – závislosti mezi entitami Nezaměňovat s pojmem relace jako podmnožina kartézského součinu množin popisovaná relační tabulkou 1
Kardinalita relace 1:1 1:n (jedna ku libovolnému počtu) Například vztah obec leží v okrese m:n (libovolný počet ku libovolnému počtu) Například vztah student si zapsal předmět Mohou existovat i jiné kardinality, například 2:n vztah fotbalové mužstvo a zápas fotbalové ligy 2
ER diagram OSOBY OBCE OKRESY 3
Jak realizovat vztahy z ER diagramu 1:1 odkazem pomocí klíče jedné tabulky umístěného do navazující tabulky (cizí klíč) Často lze vyřešit prostým spojením tabulek 1:n odkazem pomocí klíče tabulky na straně 1 do tabulky na straně n (cizí klíč) m:n Nelze prostředky relačních databází realizovat, je třeba rozložit na dvě relace typu 1:n 4
ER diagram STUDENTI PREDMETY 5
ER diagram STUDENTI ZAPISY PREDMETY 6
Příklad Navrhneme databázi popisující zápasy českých fotbalových soutěží, jednotlivé registrované hráče, účast hráčů v zápasech a počet vstřelených gólů. Hráč může být během jedné sezóny registrován ve více klubech a to i v různých soutěžích 7
Entity? 8
Entity SOUTEZ HRAC KLUB ZAPAS 9
Relace ? SOUTEZ HRAC KLUB ZAPAS 10
Relace SOUTEZ HRAC KLUB ZAPAS Hráč je registrován v klubu m:n Klub hraje soutěž 1:n Kluby hrály zápas 2:n ZAPAS Hráč hrál zápas m:n 11
Relaci 1:n mezi klubem a soutěží můžeme realizovat pomocí cizího klíče (identifikátor soutěže umístit do tabulky klubů) SOUTEZ HRAC Hráč je registrován v klubu m:n KLUB Kluby hrály zápas 2:n ZAPAS Hráč hrál zápas m:n 12
Relace typu m:n realizujeme pomocí vazebních tabulek REGISTRACE SOUTEZ HRAC KLUB Kluby hrály zápas 2:n ZAPAS ÚČAST 13
Relace typu 2:n realizujeme pomocí dvou relací 1:n (domácí, hosté) REGISTRACE SOUTEZ HRAC KLUB ZAPAS ÚČAST 14
Návrh atributů tabulek HRAC Registrační číslo Jméno Příjmení Věk ... 15
Návrh atributů tabulek SOUTĚŽ Identifikátor Název KLUB Město Identifikátor soutěže (cizí klíč) 16
Návrh atributů tabulek ZÁPAS Identifikátor Identifikátor klubu domácích (cizí klíč) Identifikátor klubu hostů (cizí klíč) výsledek REGISTRACE Identifikátor hráče (cizí klíč) Identifikátor klubu (cizí klíč) Časová platnost 17
Návrh atributů tabulek ÚĆAST Identifikátor Identifikátor hráče (cizí klíč) Identifikátor zápasu (cizí klíč) Počet gólů Hodnocení … 18