ErdDocs

Symbole diagramu ERD

Diagramy związków encji korzystają z trzech rodzin symboli. Kurzą stopkę rysują narzędzia bazodanowe, notacji Chena uczy się na zajęciach, a UML to diagramy klas zastosowane do danych. We wszystkich trzech tabela lub encja to prostokąt, a relacja to linia między prostokątami. Różnią się zapisem liczebności, czyli tego, ile wierszy po jednej stronie odpowiada wierszowi po drugiej. Kurza stopka zaznacza ją na końcach linii. Dlatego każdą linię czyta się dwa razy, raz w stronę każdej tabeli. Każdy symbol poniżej jest pokazany razem ze sposobem czytania i narysowany przez ErdDocs w tej samej notacji, której użyje dla twojego własnego schematu w narzędziu poniżej.

Co oznaczają zakończenia linii w notacji kurzej stopki?

W kurzej stopce wszystko dzieje się na końcach linii. Każdy koniec ma do dwóch znaków. Znak bliższy tabeli oznacza maksimum, a zewnętrzny minimum.

SymbolNazwaJak czytaćPrzykład
Dokładnie jedenDokładnie jedenKreska + kreska: co najmniej jeden, co najwyżej jedenzamówienie należy do dokładnie jednego klienta
Zero lub jedenZero lub jedenKółko + kreska: opcjonalnie, co najwyżej jedenklient ma co najwyżej jedną kartę lojalnościową
Jeden lub wieleJeden lub wieleKreska + stopka: co najmniej jedenzamówienie ma co najmniej jedną pozycję
Zero lub wieleZero lub wieleKółko + stopka: dowolnie wiele, także żadenklient ma zero lub wiele zamówień
Ściągawka z notacji kurzej stopki z czterema zakończeniami linii: dokładnie jeden (kreska i kreska), zero lub jeden (kółko i kreska), jeden lub wiele (kreska i stopka), zero lub wiele (kółko i stopka)Ściągawka z notacji kurzej stopki z czterema zakończeniami linii: dokładnie jeden (kreska i kreska), zero lub jeden (kółko i kreska), jeden lub wiele (kreska i stopka), zero lub wiele (kółko i stopka)
Te same cztery zakończenia na jednej karcie. Zapisz ją albo pobierz SVG w wersji jasnej lub ciemnej.

Jak przeczytać całą linię

Linię relacji czyta się dwa razy, w stronę każdej tabeli. Klasyczny przykład sklepu:

W stronę orders: klient ma zero lub wiele zamówień. W stronę customers: zamówienie należy do dokładnie jednego klienta.customersorders
W stronę orders: klient ma zero lub wiele zamówień. W stronę customers: zamówienie należy do dokładnie jednego klienta.

Pełne zasady czytania, w tym znaczenie znaków, gdy schemat jest znany tylko w połowie, są na stronie o notacji kurzej stopki. To, które połączenie wybrać, zależy od liczebności.

Chen, kurza stopka i UML

PojęcieChenKurza stopkaUML
Encja / tabelaProstokątProstokąt z listą kolumn w środkuBlok klasy
AtrybutOwal połączony z encjąWiersz w tabeliPole w bloku klasy
RelacjaRomb między encjamiLinia ze znakami liczebności na końcachLinia asocjacji
LiczebnośćLitery 1, N, M przy rombieKreska, kółko i stopka na końcachKrotności 1, 0..1, 1..*, *
Klucz głównyPodkreślona nazwa atrybutuZnacznik klucza w wierszu kolumnyStereotyp lub właściwość

Prosta zasada. Dopóki schemat jest tylko pomysłem, pasuje Chen. Gdy diagram żyje obok kodu aplikacji, pasuje UML. Kiedy baza danych już istnieje, potrzebna jest kurza stopka. Właśnie ją ErdDocs rysuje prosto z wklejonego schematu.

Symbol, którego nie ma w podręcznikach: linia przerywana

W prawdziwych zrzutach często brakuje kluczy obcych. Aplikacje w Rails, Django i Laravel pilnują relacji w kodzie, a baza nie deklaruje nic. W takim przypadku ErdDocs dodaje własny symbol. Linia ciągła to relacja zadeklarowana w bazie. Linia przerywana to relacja wywnioskowana z nazwy kolumny, na przykład user_id → users. Pierwszą gwarantuje ograniczenie w bazie, a druga jest uzasadnionym domysłem.

Linia przerywana oznacza, że w zrzucie nie ma FOREIGN KEY i linia pochodzi z konwencji nazw.usersposts
Linia przerywana oznacza, że w zrzucie nie ma FOREIGN KEY i linia pochodzi z konwencji nazw.

Symbole na prawdziwym schemacie

Wklej swój SQL do narzędzia poniżej. Znajdzie klucze obce i ograniczenia unikalności, a na ich podstawie zaznaczy stronę „wiele” każdej linii.

Twój schemat

Najczęstsze pytania

Co oznaczają symbole kurzej stopki?

Na każdym końcu linii są do dwóch znaków. Znak bliższy tabeli pokazuje maksimum. Kreska znaczy „co najwyżej jeden”, a trójpalczasta stopka „wiele”. Znak zewnętrzny pokazuje minimum. Kreska znaczy „co najmniej jeden”, a kółko „może być zero”. Kółko ze stopką czyta się więc jako „zero lub wiele”, a dwie kreski jako „dokładnie jeden”.

Którą notację wybrać – Chena czy kurzą stopkę?

Notacja Chena nadaje się do nauki i projektowania koncepcyjnego. Relacja jest w niej osobnym elementem, rombem, co ułatwia wykład. Kurza stopka nadaje się do prawdziwych baz. Każda tabela to w niej prostokąt z kolumnami w środku, i tak schemat naprawdę wygląda.

Jak oznacza się relację wiele do wielu?

Stopką na obu końcach. W schemacie fizycznym wiele do wielu realizuje się przez tabelę pośrednią, na przykład order_items między orders i products. Dlatego narzędzia rysujące prawdziwe bazy pokazują dwie relacje jeden do wielu. Zbiegają się one na tej tabeli.

Dlaczego narzędzia bazodanowe nie rysują rombów i owali Chena?

Bo w fizycznej bazie to, co Chen rysuje osobno, sprowadza się do tabel i kolumn. Owal atrybutu to wiersz w prostokącie tabeli. Romb relacji to albo kolumna klucza obcego, albo tabela pośrednia. Rysowanie ich jako osobnych kształtów podwoiłoby rozmiar diagramu, a nie pokazałoby niczego nowego.

Zobacz też