Poslední úpravy - Vyhledat:

SQL

O modelování

Power Designer

Oracle Data Modeler

Zdroje...

edit SideBar

DM /

Co jsou ISA vztahy

< Genaralizace/specializace | Tutoriál informační analýzy | Vztahy mezi objekty >

Tato kapitola poněkud obšírněji rozebírá podstatu ISA vztahů. Čtenář, který nestojí o příliš podrobný rozbor, může tuto kapitolu vynechat. Na druhou stranu, pokud v něm hlodá nějaká nejasnost ohledně těchto vztahů, odpověď by mohl nalézt zde.

Název ISA pochází z anglického "is a" vystupujícího ve větách jako "a cat is a beast", "a banker is a financier". Tyto věty říkají "každá kočka je šelma", "každý bankéř je finančník". Tedy je to konstatování o tom, že každý výskyt nějakého typu je i výskytem jiného typu – první typ je podtypem druhého typu. Jde o generalizaci/specializaci.

Pokud budeme na "ISA vztah" nahlížet jako na vztah, je potřeba se zamyslet nad tím, co vlastně znamená. Výskyt podtypu "je i" výskytem nadtypu, tedy pro výskyt v podtypu exituje výskyt v nadtypu, který je mu roven, je on sám. "Vztah" ISA je tedy vlastně vztahem identických prvků:


Vlevo nahoře: Eulerovy množiny s vyznačenými prvky. Vpravo nahoře: Podtyp je "vysunut" mimo nadtyp, tečkované čáry znázorňují jednotlivé případy vztahu ISA: kočka Garfield je šelma Garfield. Vpravo dole: ISA vztah mezi typy KOČKA a ŠELMA nakreslený v konceptuálním schématu – atribut, který platí v celém nadtypu, je zakreslen pouze tam, podtyp tento atribut dědí.

Je vidět, že pokud na ISA pohlížíme jako na vztah, odpovídá jednomu výskytu v nadtypu maximálně jeden výskyt v podtypu. Tyto dva výskyty jsou si rovny, výskyt podtypu je tentýž objekt jako jemu odpovídající výskyt v nadtypu.

Protože se v konceptuálním schématu až na výjimky nemá opakovat žádná informace, tak vlastnosti, které podtyp dědí od nadtypu, u podtypu znovu nezakreslujeme.

Podtyp dědí i identifikátory, a tak se může stát, že pro podtyp nemáme v konceptuálním schématu zakresleny žádné atributy, jako v obrázku nahoře. V každém případě však pro modelování podtypu musíme mít nějaký pádný důvod – nějaký specifický rys výskytů podtypu, nějaký typ informace, který se vztahuje pouze k jeho výskytům. V našem příkladu nic takového patrno není – ale důvodem k vytvoření podtypu KOČKY může být třeba to, že kočky jsou jediná domácí zvířata, která majitel pouští samostatně ven. Je vidět, že pro vytvoření podtypu v konceptuálním schématu můžeme být motivováni například tím, že existuje pravidlo vztahující se výlučně k výskytům toho podtypu.

Častější je ovšem případ, když pro výskyty podtypu máme k dispozici ještě další typ informace, který u výskytů nadtypu nemá smysl, protože ne všechny výskyty nadtypu takovou informaci mají. V případě koček v našem příkladu takovou informací může být počet myší, které kočka přinesla domů:

Následující subkapitola sice nepojednává o ISA vztazích, ale pro objasnění problematiky typů, podtypů a jejich výskytů je užitečná.

Vztah "patří k"

V případě, že o všech výskytech nadtypu (o všech šelmách bez rozdílu) se uchovávají informace stejného typu, ale kromě toho potřebujeme uchovávat nějaké informace o podtypech jako celcích (o druzích šelem - o druhu pes, kočka, medvěd...), pak můžeme modelovat takto:

Eulerovy množiny s vyznačenými prvky a se spojnicemi mezi prvky ve vztahu "patří k", například "šelma Garfield patří k druhu (šelem) kočka":


Zatímco pro druhy šelem může jako identifikátor sloužit jak logo tak i jméno druhu, pro jednotlivé šelmy jako identifikátor poslouží jen jméno jedince, logo druhu k identifikaci nelze použít, protože je pro více jedinců stejné.

A kartotéční lístky se spojnicemi ukazujícími, který lístek "patří ke" kterému lístku:



Pro druh medvěd nemá tento chovatel šelem žádného jedince, zato pro druh kočka má jedince tři.

Všimněte si, že k jednou druhu šelmy může patřit i více jedinců šelem, takže vztah "patří k" rozhodně nemůže být ISA, rovnost. Vztah ISA je generalizace-specializace, ale tento vztah "patří k" je vztah druhu k jedincům toho druhu. Problematika tohoto typu vztahů je vysvětlena také v kapitole Dvoutvářné entity.

Paradoxy nakonec

Garfiled je kočka.
Kočka je druh šelmy.
Takže Garfield je druh šelmy?!

Takový sylogismus je nesprávný – slovo "je" v těchto větách neznamená rovnost, ani ISA, ale vztah náležení. Ty věty lze přeformulovat:

Garfiled patří mezi kočky.
"Kočka" je jeden z druhů šelmy.

(Žádný automatický závěr.)

Je vidět, že v běžném jazyce se vztah ISA od vztahu "patří k" obtížně odlišuje, takže se musíme obrátit k něčemu jinému. Poslouží nám metody informační analýzy – bezpečným rozlišujícím příznakem je kardinalita vztahu: ISA je 1:1, vztah "patří k" je 1:n.

(Od jiných 1:1 vztahů se ISA odlišuje tím, že je v každém případě nepřenositelný: kocour Garfield se nemůže stát jinou šelmou než Garfieldem. Dále je pro podtyp povinný: každá kočka je šelmou.)

< Genaralizace/specializace | Tutoriál informační analýzy | Vztahy mezi objekty >

Upravit - Historie - Tisk - Poslední úpravy - Vyhledat
Poslední úprava stránky: 29.02.2012, 20:00