Archyno

Diagramy entit a vztahů

Obraz věcí, které systém ukládá, a toho, jak spolu souvisejí. Starý, malý a stále nejrychlejší způsob, jak zjistit, že dva lidé myslí slovem "objednávka" něco jiného.

9 min čteníER - crow's foot1 z 3

Krátká odpověď

  • Konceptuální model pojmenovává jen entity a vztahy; logický přidává atributy, klíče a rozložené mnoho k mnoha; fyzický typy a indexy pro jeden stroj.
  • Primární klíč identifikuje řádek ve vlastní tabulce; cizí klíč drží primární klíč jiné tabulky a je to on, co vztah opravdu implementuje.
  • ER diagram nemá operace a jeho vztahy se mapují na cizí klíče. Diagram tříd modeluje chování a umí vyjádřit to, co schéma nedokáže.
  • Vraní noha je de facto standard a kreslí ji téměř každý moderní nástroj. Chenova notace říká totéž a zabere víc místa.
Diagram entit a vztahů se čtyřmi entitami. Customer má primární klíč customer_id; Order má klíč order_id a cizí klíč customer_id; OrderLine má klíč order_line_id s cizími klíči order_id a product_id; Product má klíč product_id. Jeden zákazník zadává nula nebo více objednávek, jedna objednávka obsahuje jednu nebo více položek a jeden produkt se objeví na nula nebo více položkách.
Čtyři entity a tři vztahy. Každou čáru lze přečíst nahlas v obou směrech a dělat to je nejrychlejší technika revize, jaká existuje.

01Co ukazuje#

ER diagram popisuje věci, které systém ukládá, a spojení mezi nimi. Tři složky, a víc ne:

PrvekNotaceCo znamená
Entitapojmenovaný boxDruh věci, který se vyplatí ukládat. Podstatné jméno v jednotném čísle - Customer, ne Customers - protože box představuje typ a každý řádek je jedním z nich.
Atributřádek uvnitř boxuFakt o entitě. V notaci vraní nohy žijí uvnitř boxu; ve starší Chenově notaci z něj visí v oválech.
VztahSpojení, s kardinalitou nakreslenou na každém konci. Symboly říkají, kolik entit na tom konci se může zúčastnit.

Hodnota je téměř celá v té třetí. Entity ve své doméně vyjmenuje každý; spor začne u otázky „může objednávka existovat bez zákazníka?“ - a ER diagram tuhle otázku nutí zodpovědět symbolem místo toho, aby zůstala pohodlně vágní v dokumentu.

02Klíče jsou ta část, na které záleží#

Atributy jsou snadné. Klíče jsou místo, kde si ER model zaslouží své místo, protože klíč je tvrzení o identitě - a právě v identitě se skrývají doménová nedorozumění.

PrvekNotaceCo znamená
Primární klíč (PK)označený PK, uvedený prvníAtribut nebo množina atributů, která identifikuje jeden řádek. Každá entita má právě jeden.
Cizí klíč (FK)označený FKAtribut držící klíč jiné entity. Každé čáře vztahu odpovídá někde cizí klíč, a to na straně „mnoho“.
Přirozený klíčatribut ze skutečného světaISBN, IBAN, e-mailová adresa. Smysluplný - a rukojmí toho, že si vnější svět věci rozmyslí.
Náhradní klíčgenerované idČíslo nebo UUID bez významu. Stabilní z konstrukce, a právě proto ve většině systémů výchozí volba.
Složený klíčdva a více atributůIdentita, která potřebuje víc než jeden sloupec. Běžná u vazebních entit, kde dvojice cizích klíčů je tou identitou.

03Kardinalita, ve zkratce#

Každý konec vztahu nese dva symboly: vnější říká kolik a vnitřní zda je to nepovinné. Čárka je jeden, vraní noha je mnoho a kroužek je nula.

PrvekNotaceCo znamená
Právě jedenČárka, čárka. Povinné a jednotlivé na obou koncích.
Nula nebo jedenKroužek a pak čárka. Nepovinné a jednotlivé.
Jeden nebo víceČárka a pak vraní noha. Povinné a vícenásobné.
Nula nebo víceKroužek a pak vraní noha. V praxi nejčastější konec.

Symbol se čte na konci nejblíž k entitě, kterou omezuje, což je opak toho, co většina lidí hádá.

Právě tenhle poslední bod nachytá téměř každého a má vlastní článek - notace vraní nohy - o tom, který konec je který, o identifikujících versus neidentifikujících vztazích a o tom, jak vyřešit vztah M:N.

04Konceptuální, logický, fyzický#

Tatáž entita zákazníka na třech úrovních. Konceptuální: box s názvem Customer bez atributů. Logická: Customer s primárním klíčem customer_id a atributy name a email. Fyzická: tabulka customer se sloupci customer_id bigint, full_name text a email citext.
Jedna entita, tři úrovně. Konceptuální model je pro byznys, logický pro návrhovou diskusi a fyzický pro databázi.

Většina zmatených ER diagramů jsou dvě úrovně v jednom kabátě. Rozhodnout, kterou kreslíte, urovná tucet malých sporů dřív, než začnou.

PrvekNotaceCo znamená
Konceptuálníjen boxy a čáryEntity a vztahy vlastními slovy byznysu. Žádné klíče, žádné typy, často ani atributy. Vejde se na jednu stránku a je to ten, který reviduje stakeholder.
Logickýatributy a klíče, bez typůNormalizovaný, oklíčovaný a nezávislý na konkrétní databázi. Vztahy M:N vyřešené. Tohle je návrh.
Fyzickýtabulky, sloupce, typyPojmenované tak, jak pojmenovává věci databáze, s typy, indexy a s takovou denormalizací, jakou si zátěž opravdu vyžaduje.

Ne vždy potřebujete všechny tři. Malá služba může jít rovnou na logický. Co nikdy nefunguje, je ukázat konceptuální diagram vývojáři, který potřebuje fyzický - nebo fyzický byznysovému stakeholderovi, který chtěl ověřit, zda zákazník může mít dvě adresy.

05ER diagram, nebo diagram tříd?#

Vypadají podobně a znamenají něco jiného. Diagram tříd popisuje typy v programu: chování, dědění, viditelnost, navigovatelnost. ER diagram popisuje data v klidu: klíče, kardinalitu a referenční integritu. Překryv je skutečný a rozdíl také.

PrvekNotaceCo znamená
Operacejen diagram třídEntity nemají metody. Řádky nic nedělají.
Klíčejen ERDiagram tříd má identitu objektu zdarma; databázi je třeba říct, co je identita.
Děděnídiagram tříd nativněER to modeluje jako strukturu nadtyp-podtyp a fyzický model si musí vybrat jedno ze tří rozvržení tabulek, jak to implementovat.
Vztah M:Nnakreslitelný v obouDiagram tříd ho může nechat jako jednu čáru navždy. Logický ER model ho musí vyřešit vazební entitou, protože databáze ho jinak uložit neumí.

Sáhněte po něm, když

  • Předmětem je to, co se ukládá, a v publiku je i DBA
  • Potřebujete přesně rozhodnout nepovinnost a kardinalitu
  • Výstupem je schéma, migrace nebo množina omezení
  • Byznysový stakeholder má potvrdit doménový slovník

Sáhněte po něčem jiném, když

  • Předmětem je chování nebo hierarchie typů - použijte diagram tříd
  • Dokumentujete payloady API, ne úložiště
  • Úložiště nemá schéma a tvar se opravdu liší dokument od dokumentu
  • Jsou to tři tabulky a DDL je kratší než diagram

06Časté chyby#

  1. Entity v množném čísle. Customer je entita; customers je tabulka. Jejich míchání dělá věty o vztazích nečitelnými.
  2. Nevyřešený vztah M:N v logickém modelu. Žádná databáze ho neuloží. Vyřešte ho a vazební entitu pojmenujte podle toho, co znamená - Enrolment, ne StudentCourse.
  3. Každý vztah nepovinný. Model, ve kterém není nic povinné, nekóduje žádná pravidla a omezení pak skončí rozsypaná po aplikačním kódu.
  4. Atributy, které jsou ve skutečnosti entity. Pokud „adresa“ potřebuje pět podpolí a může se vyskytnout dvakrát, je to entita.
  5. Modelování reportovacích tabulek. Denormalizovaný čtecí model patří do fyzického modelu s poznámkou proč, ne do logického, kde si ho někdo splete s doménou.

Po jednom řádku na každé

  1. 01Entity, atributy, vztahy - a hodnota je ve vztazích.
  2. 02Klíč je tvrzení o identitě; upřednostněte náhradní klíče a přirozený omezte.
  3. 03Kardinalita se čte na konci nejblíž k entitě, kterou omezuje.
  4. 04Konceptuální, logický a fyzický odpovídají na jiné otázky jiným lidem.
  5. 05Diagram tříd popisuje typy v programu; ER diagram popisuje data v klidu.
  6. 06Přečtěte každou čáru nahlas v obou směrech - nejlevnější revize, jaká existuje.

07Časté dotazy#

Co je diagram entit a vztahů?

Obraz věcí, které systém ukládá, a toho, jak spolu souvisejí: entity jako rámečky, jejich atributy uvnitř a čáry mezi nimi nesoucí kardinalitu. Je to standardní způsob, jak se dohodnout na datovém modelu dřív, než vznikne jakákoli tabulka.

Jaký je rozdíl mezi konceptuálním, logickým a fyzickým datovým modelem?

Konceptuální model pojmenovává entity a vztahy a nic víc, je tedy sdíleným slovníkem. Logický model přidává atributy, klíče a rozložené vztahy typu mnoho k mnoha, přičemž zůstává nezávislý na databázi. Fyzický model přidává typy, indexy a cokoli, co vyžaduje jeden konkrétní stroj.

Jaký je rozdíl mezi primárním a cizím klíčem?

Primární klíč jednoznačně identifikuje řádek uvnitř vlastní tabulky. Cizí klíč je sloupec, který drží hodnotu primárního klíče jiné tabulky, a právě on v relační databázi skutečně implementuje vztah.

Čím se ER diagram liší od UML diagramu tříd?

ER diagram modeluje uložená data, takže nemá operace a jeho vztahy se mapují na cizí klíče. Diagram tříd modeluje typy s chováním a umí vyjádřit věci, které relační schéma nedokáže, například rozhraní a polymorfismus. Oba často popisují tutéž doménu, aniž by si odpovídaly prvek po prvku.

Jakou notaci použít pro ER diagramy?

Vraní noha je de facto standard a je to to, co kreslí téměř každý moderní nástroj. Chenova notace, která dává vztahy do kosočtverců, je stále běžná v učebnicích. To, co lze vyjádřit, je v podstatě stejné v obou, a vraní noha je kompaktnější.

V této sérii

Související články

Všechny články