Datový model vztahu mezi entitou , také nazývané ER , je jedním z různých datových modelů, které můžete použít k uvažování o svých datech.
Konkrétně se jedná o koncepční datový model , protože není spojen s žádnou konkrétní implementací. To je úkol ponechaný logickému datovému modelu.
Datový model ER je tak obecný, na tak vysoké úrovni, že jej lze implementovat řadou zcela odlišných druhů databází.
Je to skvělé, protože nepřemýšlíte o podrobnostech implementace, ale myslíte jen o svých datech a jejich uspořádání . A přitom jste nuceni analyzovat problém způsoby, o kterých jste dříve nepřemýšleli.
ER diagramy považuji za skvělé, protože vám pomohou analyzovat scénář, kde se jedná o data.
Model ER vám poskytuje nástroje pro reprezentaci všech dat, která potřebujete k modelování, pomocí grafického zápisu, vztahů mezi různými druhy dat a informací s nimi spojených.
Model ER tvoří 2 položky:
- entity
- vztahy
Entity jsou typy dat, jako jsou položky nebo osoby, které mají společné vlastnosti.
Vztahy jsou vztahy mezi entitami.
Dám vám příklad, pojďme mluvit o knihách a jejich autorech. Máme 2 entity :
- kniha
- autor
Konkrétní kniha je instancí entity knihy.
Protože máme 2 entity, máme 2 vztahy mezi nimi. Jedním z nich je vztah mezi jedinou knihou a entitou autorů. Jedním z nich je vztah mezi jedním autorem a entitou knihy. Když se nad tím zamyslíme, máme:
- kniha má autora
- Autor může napsat mnoho různých knih
Vizuální notace pro entity
Na základě tohoto jednoduchého příkladu můžeme začít představovat vizuální notaci, která nám pomůže vytvořit ER datový model našeho scénáře.
Poznámka:Existuje mnoho různých způsobů, jak kreslit ER diagramy. Použiji ten, který podle mého názoru , je vizuálnější a dává větší smysl.
Entity jsou reprezentovány jako obdélníky s textem, který je identifikuje:
Vizuální notace vztahů
Vztah mezi entitami je znázorněn ve své nejzákladnější podobě pomocí čáry, která spojuje dvě vztahy, a kosočtverce s nějakým textem pro identifikaci typu vztahu:
Všimněte si, že jsem nevytvořil 2 vztahy „kniha má autora“ a „autor napsal knihu“. Mezi knihou a autorem jsem vytvořil jediný vztah.
Kardinality
Jakmile máme vztah, musíme nyní uvést čísla, o která se jedná. V tuto chvíli máme mnoho otázek:
- Kolik autorů může mít kniha?
- Může autor napsat více knih?
- Musí autor napsat alespoň jednu knihu, aby mohl být nazýván autorem?
- Může být kniha napsána více autory?
- Může kniha existovat alespoň bez autora?
To vše jsou dobré otázky a v tomto případě si myslím, že odpovědi jsou celkem zřejmé. A když odpověď není zřejmá, můžete o problému přemýšlet a přidat svá vlastní omezení.
Existují různé způsoby, jak vizuálně naznačit mohutnosti na diagramu. Někteří dávají přednost změně tvaru čáry, když se spojuje s entitou.
Dávám přednost číslům, díky kterým jsou věci jasnější:
Výše uvedená čísla znamenají toto:knihu může napsat 1 nebo více autorů. n
znamená libovolný počet prvků.
A autor může napsat od 0 knih (možná právě jednu píše) až po nekonečný počet knih.
První se nazývá vztah nula k mnoha . Druhým je vztah jeden k mnoha .
Můžeme také mít:
- osobní vztahy
- vztahy mnoho k mnoha
- vztahy nula ku jedné
Atributy
Každá entita může mít jeden nebo více atributů.
Řekněme, že výše uvedený vztah použijeme v knihkupectví. Každý autor má jméno, životopis, adresu URL webu.
Každá kniha má název, vydavatele, rok vydání, ISBN. Vydavatel by mohl být také subjekt, chceme-li. Můžeme to ale také definovat jako atribut knihy.
Výše uvedené informace můžeme reprezentovat takto:
Atributy identifikátoru
Entity musí být identifikovány jedinečným klíčem. Entitu knihy lze jednoznačně identifikovat pomocí atributu ISBN. Každá kniha má jedno ISBN (vzhledem k tomu, že nepředstavujeme jednu kopii knihy, ale „název“ knihy).
Atributy primárního klíče identifikujeme tak, že jsou základem:
Autor na druhou stranu v tuto chvíli nemá žádný jedinečný identifikátor. Dva autoři mohou mít stejné jméno.
Musíme proto přidat jedinečný atribut klíče. Například id
atribut:
Atributy identifikátoru mohou zahrnovat více atributů.
Například ID pasu a země autora jedinečně identifikují osobu a mohou nahradit id
atribut, který jsme přidali:
Kterou si vybrat? Jde o to, co ve vaší aplikaci dává větší smysl. Pokud modelujeme knihkupectví, nemůžeme očekávat, že budeme mít ID země a pasu všech autorů knih. Použijeme proto náhodné id
vybereme a spojíme s každým autorem.
Atributy vztahu
Atributy nejsou jedinečné pro entity. Vztahy mohou mít také atributy.
Zvažte, že potřebujeme modelovat knihovnu. Kromě knihy a entit autora nyní představujeme entitu čtenáře , osoba, která si knihu půjčí, aby si ji přečetla. Když si ji půjčí, vezmeme její jméno a číslo ID karty:
Ale stále nám chybí informace. Potřebujeme vědět, kdy si daná osoba knihu vypůjčila a kdy ji vrátila, abychom mohli ukládat informace o celé historii konkrétní knihy v naší knihovně. Tyto informace nepatří ani knize, ani entitám čtenáře; patří do vztahu:
Slabé entity
Výše jsme hovořili o primárních klíčích a o tom, jak nápověda jednoznačně identifikuje entitu.
Některé entity svou existencí závisí na jiných entitách a nazývají se slabé entity .
Předpokládejme, že potřebujeme modelovat objednávky pro internetový obchod.
U každé objednávky uložíme ID objednávky, které začíná od 1 a postupem času se zvyšuje, datum a čas zadání a informace o zákazníkovi, abychom věděli, komu fakturovat a kam ji poslat.
Pak také potřebujeme vědět, co si objednali. Vytváříme slabou entitu „objednané položky“, která představuje každou položku v košíku v době placení.
Tento subjekt uloží cenu položky v okamžiku pokladny (takže když změníme cenu produktů ve výprodeji, nebude to mít vliv na již zadané objednávky), množství položek, které byly objednány, a zvolené možnosti. Řekněme, že prodáváme trička, a proto musíme uložit barvu a velikost objednaného trička.
Je to slabá entita, protože entita objednané položky nemůže existovat bez entity objednávky.
Rekurzivní vztahy
Entita může mít rekurzivní vztah sama se sebou. Předpokládejme, že máme entitu osoby. Vztah rodič-dítě můžeme modelovat takto:
Osoba může mít 0 až n dětí, dítě má 2 rodiče (vzhledem k nejjednoduššímu scénáři).
Vztahy ISA
ISA je zkratka pro IS-A a je to způsob, jak modelovat zobecnění v modelu ER.
Používáme jej k seskupování podobných subjektů pod společný deštník. Například autor a čtenář lze v případě knih a knihoven zobecnit pomocí osoby.
Oba mají jméno, takže jméno extrahujeme až na entitu osoby a pouze spravujeme zvláštnosti toho, že jste autorem nebo čtenářem v odpovídající entitě:
Nebinární vztahy
Ne každý vztah je striktně binární. Vezměme si scénář lekce.
Lekce se koná v učebně školy dnes v 10:00, s učitelem si povídá se třídou o fyzice.
Lekce se tedy koná v určitou denní dobu, zahrnuje předmět, učitele, třídu a místnost.
Můžeme to modelovat takto: