Poslední úpravy - Vyhledat:

SQL

O modelování

Power Designer

Oracle Data Modeler

Krátká videa DM

Zdroje...

edit SideBar

DM /

Generalizace/specializace

< Dvoutvářné entity | Tutoriál informační analýzy | Co jsou ISA vztahy >

V autoopravně účtují práci a náhradní díly. Práce jsou různého druhu s různou hodinovou sazbou. Náhradní díly mají cenu podle ceníku nebo podle ceny dodavatele, některé má dílna na skladě, jiné objednává v případě potřeby. Rozlišují se ještě náhradní díly, jež mají speciální evidenci jednotlivých kusů, jako motory, od náhradních dílů, u kterých se jednotlivé kusy nerozlišují a eviduje se jen jejich počet. Práci i náhradní díly lze považovat za "služby" poskytované zákazníkům. U "služby" známe její cenu, a lze ji účtovat ve faktuře, s udáním účtovaného množství – počtu hodin práce nebo počtu kusů.
Entitu "služba" vytváříme jako generalizaci "práce" a "náhradního dílu".

O náhradních dílech, ať už typových, nerozlišujících jednotlivé kusy, tak o náhradních dílech s evidencí jednotlivých exemplářů, je třeba znát informace o názvu náhradního dílu, objednacím kódu, dodavateli, technických parametrech a pod. Pojem "náhradní díl" je srozumitelný a v kontextu autoopravny používaný.
U typových dílů bez rozlišení kusů musíme znát jejich počet, kolik jich máme, u dílů s evidencí jednotlivých exemplářů musíme evidovat tyto exempláře a jejich osud. Pro typové díly i pro unikátní díly jsou tedy potřebné další specifické informace, ale jiné pro typové díly a jiné pro unikátní díly.
Entitu "typ náhradního dílu" je vhodné specializovat do podtypů "typ typového náhradního dílu" a "typ unikátního náhradního dílu".
V dalším tyto těžkopádné názvy budeme zkracovat na "náhradní díl", "typový náhradní díl" a "unikátní náhradní díl".

Generalizace či specializace je to co děláme v průběhu datového modelování, tyto procesy ve výsledku oba vedou k analogii množin a jejich podmnožin: při generalizaci vytváříme nadtyp (alà nadmnožinu), při specializaci podtypy (alà podmnožiny). Následující obrázek znázorňuje prve zmíněné typy a jejich podtypy:


Entitní typy jako množiny
Eulerův diagram pro entitní typy "služba","práce","náhradní díl", "typový náhradní díl", "typ unikátního nahradního dílu" a "exemplář unikátního náhradního dílu"

Následující diagram přidává atributy a vztah unikátních exemplářů k příslušnému typu náhradního dílu:


Entitní typy a podtypy s atributy a vztahy
Odrážkovaný seznam uvnitř zaobleného obdélníku vyjmenovává atributy zahrnuté v infomodelu pro daný entitní typ. Spojnice mezi zaoblenými obdélníky "unikátní náhradní díly" a "exempláře unikátních náhradních dílů" představuje vztah náležení exempláře k typu. Takže každá služba má kód služby, název a jednotkovou cenu, každá práce má navíc popis práce. Náhradní díly mají kromě kódu služby, názvu a jednotkové ceny ještě objednací kód, technický popis a váhu. Typové náhradní díly mají navíc ještě počet kusů na skladu. Typy unikátních náhradních dílů nemají navíc žádný atribut, ale mají vztah k evidenci jednotlivých kusů toho typu.

V grafickém zobrazení konceptuálních schémat se často používá znázornění každého entitního typu zvlášť, i když se jedná o podtypy a nadtypy. V takovém zobrazení není podtyp umístěn uvnitř nadtypu, ale mimo. V zobrazení se pak objeví další vztahy (tzv. ISA vztahy), které znázorňují, že každý výskyt v podtypu je zároveň výskytem i v nadtypu. Název ISA pochází z anglického "is a", například "každá PRÁCE je SLUŽBA" = "each WORK is a SERVICE". ISA vztahy se znázorňují šipkami od podtypu k nadtypu. (Podrobněji je otázka těchto obtížněji pochopitelných vztahů diskutována v kapitole Co jsou ISA vztahy.) Následující obrázek zobrazuje předchozí konceptuální schéma s pomocí ISA vztahů:


ISA vztahy mezi entitními typy
Každá PRÁCE je zároveň SLUŽBA, každý NÁHRADNÍ DÍL je zároveň SLUŽBA, každý TYPOVÝ NÁHRADNÍ DÍL je NÁHRADNÍ DÍL, každý UNIKÁTNÍ NÁHRADNÍ DÍL(TYP) je NÁHRADNÍ DÍL. Vztah mezi exemplářem unikátního náhradního dílu (EXEMPLÁŘ U.N.D.) a příslušným typem unikátního náhradního dílu (UNIK.N.D.(TYP)) není ISA, je to vztah mezi typem a výskytem, jak o tom pojednává kapitola Dvoutvářné entity. Rozdíl je v tom, že k jednomu typu unikátního náhradního dílu (UNIK.N.D.(TYP)) může náležet více jeho exemplářů (EXEMPLÁŘ U.N.D.). Ale jedna SLUŽBA je buď jedna a ne více PRACÍ nebo jeden a ne více NÁHRADNÍCH DÍLŮ.

Identifikátory v rámci generalizace a specializace

S identifikátory je to jiné, pokud k nadtypům a podtypům dojdeme generalizací, než když k nim dojdeme specializací. Začněme specializací, protože v tom případě je to jednodušší.

Pokud v rámci nadtypu platí nějaké identifikační schéma, platí i v rámci kteréhokoli jeho podtypu. Takže objednací kód platný jako identifikátor libovolného TYPU NÁHRADNÍHO DÍLU je samozřejmě identifikátorem i v omezeném rámci TYPOVÝCH NÁHRADNÍCH DÍLŮ i v rámci TYPŮ UNIKÁTNÍCH NÁHRADNÍCH DÍLŮ. Při specializaci nově vzniklé podtypy dědí i způsob identifikace nadtypu.

Pokud účelově generalizujeme vzájemně dosti nepodobné entitní typy, jako například PRÁCI a NÁHRADNÍ DÍL, pak nám většinou nezbývá než uměle vytvořit nový identifikátor pro nově vytvořený nadtyp. Typ SLUŽBA je takový případ, a účtovací kód je příklad uměle vytvořeného identifikátoru. Potřeba takového identifikátoru plyne z potřeby se odkazovat na výskyty toho generalizovaného nadtypu jednotným způsobem, jako v tomto případě odkazovat položky na fakturách zákazníků do seznamu účtovatelných SLUŽEB. Je sice možno se obejít bez vytvoření takového umělého identifikátoru, ale řízení přístupu k datům se s takovým identifikátorem značně zjednoduší.

V rámci některých podtypů v takových případech obvykle platí nějaké původní identifikátory (používané již před generalizací), jako například objednací kód NÁHRADNÍCH DÍLŮ. Pro takový podtyp pak máme alternativní způsoby identifikace – účtovací kódy i objednací kódy mohou každý z nich stejně dobře sloužit k identifikaci NÁHRADNÍCH DÍLŮ.

Členění a rozčleňující charakteristika

Členění je speciální případ rozdělení nadtypu do několika podtypů tak, že toto rozdělení je úplné a každý výskyt nadtypu se vyskytuje pouze v jediném z těch podtypů. U rozdělení SLUŽEB na PRÁCE a NÁHRADNÍ DÍLY v předchozím případě sice tomu takto je, ale můžeme to chápat jako přechodný stav. Lze si představit, že autoopravna zařadí do seznamu nabízených služeb ještě jiné služby, například zprostředkování prodeje či vytipování koupě ojetého automobilu.

TYPY NÁHRADNÍCH DÍLŮ jsou však typický případ. U konkrétního typu náhradního dílu buď vedeme evidenci jeho identifikovaných exemplářů, nebo ne. Jasně jiná možnost není, a tyto možnosti se vzájemně vylučují. Takže to, zda se u daného typu dílu vede evidence jednotlivých kusů, je rozčleňující charakteristika do daných dvou podtypů TYPOVÝ NÁHRADNÍ DÍL a TYP UNIKÁTNÍCH NÁHRADNÍCH DÍLŮ.

Jiný příklad tvoří rozdělení osob podle biologického pohlaví na ženy a muže. Pohlaví je rozčleňující charakteristika, každou osobu podle ní zařadíme buď mezi muže nebo mezi ženy. Takovýto jasný znak, podle kterého se nadtyp člení do podtypů, je možno v konceptuálním schématu zachytit:

Role

Studenti a učitelé na vysoké škole jsou osoby. Kromě studentů a učitelů zde pracují další lidé – administrativní pracovníci, pracovníci technické podpory a údržby. O každé osobě se evidují její osobní data, tj. jméno, příjmení, adresa atd., i veřejnosprávní identifikátory – rodné číslo, číslo občanského průkazu nebo pasu. Pojem "osoba" lidé běžně užívají, při analýze má smysl uvažovat ji jako samostatnou entitu: ke každé osobě se váže další informační obsah, například číslo univerzitního průkazu, přístupové jméno a heslo do počítačové sítě školy, "osoby" se stravují ve školní menze, účastní se školou organizovaných akcí, půjčují si školní majetek, využívají služeb školních zařízení.
O každém studentovi potřebujeme znát informace o jeho studiích: obor studia, semestr, výsledky zápočtů a zkoušek. O učitelích je třeba znát informace týkající se jejich pedagogické činnosti na škole.
Přesto není vhodné modelovat entity "učitel" a "student" jako podtypy entity "osoba", protože v životním běhu jednotlivých osob mohou vystupovat postupně v rolích "student", eventuálně s více průběhy studia, pak jako "učitel", a tyto role mohou zastávat i současně. Slovo role nejlépe vystihuje podstatu, když osoba přestane být studentem, nepřestává být osobou, roli učitele může osoba zastávat a po nějaké době opět ne. Lépe je tedy modelovat role sice jako samostatné entity, ale nikoli jako podtypy "osoby".

Typy bez evidovaných instancí

Uvažujme ovoce. Jahody, maliny a hrušky jsou ovoce. O každém druhu ovoce můžeme například uvést barvu, průměrnou váhu jednoho kusu, kdy a kde dozrává. "Ovoce" je proto vhodný kandidát na entitní typ. "Jahoda","hruška","malina" však podtypy nejsou, neevidujeme jednotlivé kusy těchto druhů ovoce, jsou to exempláře typu nazvaného v předchozí větě "ovoce", ale výstižnější by bylo nazvat tento typ "druh ovoce" .
Ani v tomto případě nemodelujeme jako podtypy, o této otázce je pojednáno také v kapitole Dvoutvářné entity (zde se jedná o případ B z této kapitoly).

< Dvoutvářné entity | Tutoriál informační analýzy | Co jsou ISA vztahy >

Upravit - Historie - Tisk - Poslední úpravy - Vyhledat
Poslední úprava stránky: 24.05.2011, 09:31