Notácia vranej nohy
Dva symboly na každom konci čiary a spolu zakódujú každú kardinalitu, akú relačná databáza dokáže vynútiť. Celá notácia sa zmestí do odseku; otočiť konce správnym smerom trvá o niečo dlhšie.
8 min čítaniaER - crow's foot2 z 3
Krátka odpoveď
- Dva symboly na koniec: vnútorný je minimum (krúžok nula, čiarka jeden), vonkajší je maximum (čiarka jeden, vraňa noha mnoho).
- Symboly stoja na jednom konci a obmedzujú ten koniec, ale čítate ich z druhého. Prečítať ich naopak je najčastejšia chyba pri vranej nohe.
- Plná čiara je identifikujúci vzťah - kľúč rodiča je časťou kľúča dieťaťa. Prerušovaná znamená, že cudzí kľúč je obyčajný atribút.
- Relačná databáza nevie uložiť mnoho k mnohým. Každá taká čiara ponechaná v logickom modeli je poznámkou, že väzobná tabuľka ešte chýba.
01Tri symboly, štyri kombinácie#
Vrania noha - správne notácia Information Engineering - kladie na každý koniec čiary vzťahu dve značky. Tá ďalej od entity je maximum a tá bližšie k entite je minimum.
| Prvok | Notácia | Čo znamená |
|---|---|---|
| Čiarka | jeden ťah naprieč čiarou | Jeden. Ako vonkajšia značka znamená „najviac jeden“; ako vnútorná „aspoň jeden“. |
| Vrania noha | tri hroty | Veľa. Vždy len vonkajšia značka - maximum bez stropu. |
| Krúžok | malý krúžok | Nula. Vždy len vnútorná značka - vzťah je nepovinný. |
Skombinujte ich a možností sú presne štyri, a to je celá notácia:
| Prvok | Notácia | Čo znamená |
|---|---|---|
| Práve jeden | Čiarka a čiarka. Povinné, jednotlivé. | |
| Nula alebo jeden | Krúžok a potom čiarka. Nepovinné, jednotlivé. | |
| Jeden alebo viac | Čiarka a potom vrania noha. Povinné, viacnásobné. | |
| Nula alebo viac | Krúžok a potom vrania noha. Nepovinné, viacnásobné. |
02Ktorý koniec symbol popisuje#
Toto je jediná vec na vranej nohe, ktorá je naozaj proti intuícii, a zodpovedá za väčšinu zle prečítaných diagramov. Symboly na konci popisujú entitu na tom konci a čítate ich, keď cestujete k tej entite.
Na štvrtej čiare diagramu vyššie je vrania noha na konci pri Order. Neznamená to „veľa zákazníkov“. Znamená to: pre jedného zákazníka je nula alebo viac objednávok. Povedzte to ako cestu - „začínam pri zákazníkovi, idem po čiare a dorazím k nule alebo viacerým objednávkam“ - a smer prestane byť dvojznačný.
Praktický návyk, ktorý problém odstráni úplne: napíšte na čiaru slovesnú frázu v smere, v akom sa číta zľava doprava, a skôr než pôjdete ďalej, prečítajte nahlas opačné čítanie. Tridsať sekúnd na vzťah - a zachytí to chyby, ktoré v dokumente prežijú mesiace.
03Identifikujúce a neidentifikujúce#
Štýl čiary nesie druhú informáciu a je o kľúčoch, nie o počtoch.
| Prvok | Notácia | Čo znamená |
|---|---|---|
| Neidentifikujúci | Prerušovaná. Potomok má vlastný primárny kľúč a na rodiča drží len cudzí kľúč. Order má order_id a osobitne si zaznamenáva, ktorému zákazníkovi patrí. Bežný prípad. | |
| Identifikujúci | Plná. Kľúč rodiča je súčasťou primárneho kľúča potomka, takže potomok bez neho nemôže existovať ani byť identifikovaný. Slabá entita. |
Testom je jedna otázka: dal by sa tento riadok identifikovať bez znalosti jeho rodiča? Položka objednávky číslo 3 nemá zmysel bez toho, aby sme vedeli, ktorej objednávky - to je identifikujúci. Objednávka patriaca zákazníkovi 41 je stále objednávkou 8817 bez ohľadu na to - to je neidentifikujúci.
04Ako vyriešiť vzťah M:N#
Vrania noha na oboch koncoch hovorí „veľa k veľa“ a žiadna relačná databáza to v dvoch tabuľkách neuloží. Vzťah sa stane samostatnou entitou - väzobnou, asociačnou alebo spojovacou - ktorá drží cudzí kľúč na každú stranu.
Z toho vyplývajú dve veci a tá druhá je dôvodom, prečo sa to oplatí urobiť skoro a nie až pri implementácii:
- Väzobná entita má zvyčajne vlastné atribúty. Zápis má dátum, známku, stav. Tie atribúty nemali kde bývať, kým bol vzťah čiarou, a ich absencia skrývala medzeru v modeli.
- Väzobná entita si zaslúži skutočný názov.
Enrolment,Booking,Assignment- nieStudentCourse. Doménový expert prvý pozná a druhý nedokáže revidovať, a ten názov býva slovom, ktoré biznis už používa.
Všimnite si kľúče vo väzobnej entite vyššie: oba cudzie kľúče spolu tvoria primárny kľúč, a práve to zabráni tomu, aby sa ten istý študent zapísal na ten istý kurz dvakrát. To obmedzenie prišlo zadarmo z poriadneho namodelovania a inak by bolo validáciou, na ktorú si niekto spomenul.
05Proti alternatívam#
| Prvok | Notácia | Čo znamená |
|---|---|---|
| Chenova notácia | kosoštvorce a ovály | Pôvodná. Vzťahy sú kosoštvorce a atribúty ovály visiace z entít, čo je výrazné a zaberie štvornásobok miesta. Bežná pri výučbe, v praxi zriedkavá. |
| Násobnosť UML | 0..1, 1..* | Čísla napísané na koncoch čiar namiesto symbolov. Presnejšie - vie povedať 2..5 - a pomalšie na preletenie očami cez stenu plnú tabuliek. |
| IDEF1X | vyplnené krúžky | Federálny štandard USA, blízky vranej nohe s inými symbolmi a prísnejšími pravidlami o identifikujúcich vzťahoch. Stretnete ho v štátnej správe a obrane. |
| Vrania noha | Kompaktná, čitateľná aj z diaľky a rozumie jej každý databázový nástroj. Predvoľba z dobrých dôvodov. |
Siahnite po ňom, keď
- Akýkoľvek diagram s viac než zhruba šiestimi entitami - zostane čitateľný
- Publikum, v ktorom sú aj DBA a dátoví inžinieri
- Model, z ktorého bude DDL, kde tie štyri prípady presne sadnú na obmedzenia
- Prácu pri tabuli, lebo symboly prežijú aj zlé nakreslenie
Siahnite po niečom inom, keď
- Potrebujete hranicu typu „medzi dvomi a piatimi“ - použite násobnosť UML
- Publikom je softvérový tím žijúci v UML a modelom sú doménové triedy
- Výučbu prvých princípov, kde Chenove kosoštvorce robia vzťah viditeľným
- Ternárny vzťah, ktorý vrania noha bez väzobnej entity nenakreslí
Nič z toho sa nevylučuje. Veľa reálnych projektov kreslí vraniu nohu pre databázu a diagram tried pre doménový model a drží oboje, lebo odpovedajú na iné otázky o tých istých podstatných menách.
06Časté chyby#
- Symboly na nesprávnom konci. Najčastejšia chyba v tejto notácii. Prečítajte obe vety nahlas.
- Všetko nepovinné. Krúžok na každej vnútornej pozícii znamená, že model netvrdí žiadne pravidlá - a každé z nich sa namiesto toho stane aplikačným kódom.
- Vzťah M:N ponechaný v logickom modeli. Konceptuálne v poriadku, fyzicky nemožné. Vyriešte ho a väzobnú entitu pomenujte.
- Väzobné entity pomenované zreťazením.
OrderProductrecenzentovi nepovie nič;OrderLinemu povie všetko. - Spoliehanie sa len na štýl čiary pri identifikujúcich vzťahoch. Nástroje sa nezhodnú. Ukážte zložený kľúč aj v boxe.
- Neoznačené vzťahy. Sloveso je to, čo robí čiaru čitateľnou nahlas - a čítanie nahlas je tou revíziou.
Keď je kardinalita vyriešená, ďalšou otázkou je, aké tabuľky vlastne majú byť - a to je návrh schémy: kľúče, normalizácia a cesta od modelu k DDL.
Po jednom riadku na každé
- 01Vonkajší symbol je maximum, vnútorný symbol je minimum.
- 02Čiarka je jeden, vrania noha je veľa, krúžok je nula.
- 03Symboly popisujú entitu na svojom vlastnom konci - čítajte smerom k nej.
- 04Každý vzťah má dve pravdivé vety; overte obe.
- 05Plná čiara znamená, že kľúč rodiča je súčasťou kľúča potomka; prerušovaná, že nie je.
- 06Vzťah M:N sa stane pomenovanou väzobnou entitou, zvyčajne s vlastnými atribútmi.
07Časté otázky#
Čo znamenajú symboly vranej nohy?
Na každom konci čiary sú dva symboly. Vnútorný je minimum: krúžok pre nulu, teda voliteľné, alebo čiarka pre jeden, teda povinné. Vonkajší je maximum: čiarka pre jeden, alebo trojprstá vraňa noha pre mnoho. Spolu dávajú nula alebo jeden, práve jeden, nula alebo viac, jeden alebo viac.
Na ktorý koniec čiary sa symbol vranej nohy vzťahuje?
Symboly stoja na jednom konci a obmedzujú entitu na tom konci, ale čítate ich z druhého. Vraňa noha vedľa Objednávky vo vzťahu Zákazník - Objednávka znamená, že jeden zákazník má mnoho objednávok. Prečítať to naopak je najčastejšia chyba pri vranej nohe.
Aký je rozdiel medzi identifikujúcim a neidentifikujúcim vzťahom?
V identifikujúcom vzťahu nemôže dieťa existovať bez rodiča a kľúč rodiča tvorí časť kľúča dieťaťa, kreslí sa plnou čiarou. V neidentifikujúcom vzťahu je cudzí kľúč obyčajným atribútom a dieťa stojí samostatne, kreslí sa prerušovanou čiarou.
Ako sa rieši vzťah mnoho k mnohým?
Rozložte ho na väzobnú tabuľku: tretiu entitu s cudzím kľúčom na každú stranu. Relačná databáza nevie mnoho k mnohým uložiť priamo, takže každá taká čiara ponechaná v logickom modeli je poznámkou, že jedna tabuľka ešte chýba.
Ako sa vraňa noha porovnáva s násobnosťou v UML?
Vyjadrujú tie isté obmedzenia inou syntaxou. UML píše rozsah ako text na konci asociácie, napríklad 0..1 alebo 1..*, kým vraňa noha ho kreslí ako dvojicu symbolov. UML tiež umiestňuje násobnosť na opačný koniec, než kde ju čitateľ vranej nohy očakáva, čo sa oplatí skontrolovať pri prechode medzi nimi.
V tejto sérii
- 01ER diagramy
- 02Notácia vranej nohy
- 03Návrh schémy
Súvisiace články
Základy
Prax modelovania
Diagramy štruktúry
Prehľad notácie