• Nem Talált Eredményt

Egyedszerepek

In document Halassy Béla ADATMODELLEZÉS (Pldal 196-199)

15. MODELL ÉS RENDSZER

15.5 Egyedszerepek

−−

Az adatmodellt az egyedek szerepei szerint érdemes felépíteni.

Magyarázat: A szerző nagyon sokszor találkozik olyan adatbázistervvel - sőt, mással nem is -, amiben a fejezeteken, modellrészeken belül (már ha ilyenek vannak) teljesen ad hoc sorrendben, minden rendezőelv nélkül jelennek meg az egyedek. A tervezők nagy része ezek szerint nem tudja, hogy az egyedeket azok feladata, jellege, kapcsolódási módja - egyszóval: szerepe - szerint is célszerű osztályozni. Az alábbiakban az eltérő szerepeket mutatjuk be a gépek közös példáján keresztül.

Mag. A gépek egyszeres, általános és közös ismereteit őrzi. Köré épülnek a további, a többszörös, speciális és nem-közös ismereteket befogadó további egyedek. A gépet annak ellenére magnak tekintjük, hogy egy bizonyos szempontból altípus, mégpedig a generikus vagyonelem főtípusnak az egyik specializációja. Számos ok miatt nem alkalmazhatunk több tucatnyi gép egyedtípust annak dacára sem, hogy a szivattyú távolról sem hasonlít például az emelőgépre. Erre a problémakörre alább még visszatérünk.

Osztályozó. Az X és az Y szivattyú két külön fizikai objektum, de teljesítményük, áruk, felépítésük stb. azonos. Ezért megkülönböztethetünk szivattyútípusokat, amiket saját adatokkal írhatunk le (a kocsitípus analógiájára). A magegyedeket több szempont szerint osztályozó egye-dekhez köthetjük. Az osztályozó egyed mindig a magegyed 1:N fokú fölérendeltje. Adott esetben osztályozási hierarchiáról lehet szó, vagyis a gépnek van típusa, azon belül altípusa, azon belül jellege stb. (Ha valaki nagyon akarja, akkor ide értheti a kódegyedeket is, de mi azokkal a fogalmi szinten nem foglalkozunk.)

Leíró. A szivattyúnak van egy maximális kapacitása. Ezt sohasem használják ki. A használati hely, mód, körülmény függvényében a szivattyút adott kapacitásszinteken kell működtetni. Ez a többszörös előírás a magegyedhez kapcsolt olyan alárendeltben jelenik meg, ami azzal N:1 fokú viszonyban áll, de máshová nem kapcsolódik vagy az a viszonya csak osztályozási jellegű. A szivattyú által elfogyasztott áram mint idősoros egyed szintén a maghoz tisztán hierarchikusan kapcsolódó ismeretsor. A lényeg az, hogy a leíró egyed nem mutat ki másik magegyed felé (lásd majd a társító egyedet).

Kiegészítő. Ha a gépeket egy egyedbe fogjuk össze, akkor igen hosszú lesz annak tulajdon-ságsora és sok lesz az üres érték. A szivattyúnak nem ugyanazok a specifikumai, mint az emelő -gépnek, jóllehet mindkettőnek van kapacitása, gyártója, gyártási száma stb. A speciális ismerete-ket érdemes kiegészítő egyedekbe helyezni ( Feltételes függés). Az ilyen egyed nem altípus, mert a kiemelés nem alternáló módon történik. A kiegészítő egyed a magegyeddel 1:1 fokú felülről opcionális kapcsolatban áll.

Társító. Idegen szóval asszociatív egyed. Feladata az, hogy két magjellegű egyed között viszonyt teremtsen. Például a dinamikus modellben nem a gép tulajdonságaként vezetjük a leltárhelyet, mert akkor nem tudjuk nyomonkövetni a gép leltárhelyek közötti mozgását. Inkább létrehozunk egy gép/leltárhely társító egyedet, ami a két jelenség közötti M:N-es viszonyt írja le ismeretekkel. Tehát az ilyen egyed mindig hálós viszonyt testesít meg. Az itt felmerülő sajátos kérdés az, hogy az asszociatív egyed melyik modellrészben kerüljön megfogalmazásra? A

Struktúráló. Itt a (dinamikus) családfákra kell gondolni. A gép tartozékokból és/vagy alkatré-szekből épül fel. Mi több, a gépnek a része is lehet gép. Például az emelőgépnek és a szivattyúnak is van motorja, ami külön is leírandó objektum lehet. Másik példával élve a vízvezeték ön-magában is leírandó és úgy is tükrözendő, mint a vezetékhálózat része. Egy magegyedhez több M:N fokú struktúráló alárendelt egyed is tartozhat. Például egy autógyárban a gépkocsinak mint terméknek van egy technikai darabjegyzéke, ami arról árulkodik, hogy a kocsi milyen fő szerelvé-nyekből, szerelvényekből, alkatrészekből áll. Ugyanakkor létezik egy technológiai darabjegyzéke is, ami szintén családfa, de nem azonos az előzővel. Azt tükrözi, hogy a gépkocsit milyen sor-rendben kell összeszerelni.

Altípus. Általános sajátosságaik alapján a gépeket egy egyedtípusban tükrözzük. Ezzel a meg-oldással a gépeket elválasztjuk az ingatlanoktól, amik más absztrakciós síkon a gépekkel együtt egy osztályt alkotnak, hiszen mind a kétféle dolog vagyonelem. Noha nem létezik két teljesen azonos gép - hiszen mindegyikük egyedi - az általánosítás, az egyetlen GÉP egyed alkalmazása mégis jogos. Feltétlenül az, hiszen a hétköznapok során is használjuk a teljesen általános „gép”

fogalmat. Ugyanakkor az X gép jobban hasonlít az Y-ra, mint a Z-re. Az X gép elektromotoros fűnyíró, az Y benzinmotoros fűnyíró, a Z pedig egy elektromotoros permetezőgép.

Az általános gép fogalom és az egyedi konkrét gép közötti tág határon belül számos lehető -ségünk nyílik arra, hogy a különös vonások alapján kialakítsuk a gépek alosztályait. Példánk esetében a megkülönböztetés történhetne a funkció szerint (fűnyíró, permetező), de hasonlóan logikus lehet a meghajtás (áram, benzin) szerinti besorolás is. Eltekintve az üres értékektől ( Feltételes függés), nincs semmilyen egzakt módszer arra nézve, hogy milyen alapon kell összevonni illetve megbontani ( Generalizáció és specializáció) az egyedelőfordulások - esetünkben a gépek - halmazát.

−−

Kerüljük a bonyolult és a többszörös altípus-hierarchiát.

Magyarázat: Mivel nem ismerhetjük sem a konkrét sajátosságokat, sem a gépek fajtáit, azt természetesen nem tudjuk megmondani, hogy a gépekhez milyen altípus egyedeket kell kapcsolni egy adott szervezetben. Ezért a tervezőknek csak a szabályban foglalt kettős tanács magyaráza-tával szolgálhatunk.

A specializált egyedek altípus-hierarchiát alkotnak. A gép egyik alosztálya a szivattyú, annak pedig további alosztálya lehetne a benzinmotoros szivattyú. A szabály első része egy általánosabb elv sajátos vetülete. Általában véve ha hierarchiát alkalmazunk (legyen szó egy szervezet felépítéséről vagy éppen egy könyv szerkezetéről), törekedni kell az egyensúlyosságra. Ez két dolgot jelent. Egyrészt a hierarchia ne legyen túl mély, tehát ne keressük az al-alosztály még további alosztályát. Másrészt ne legyen túl széles, tehát ne tervezzünk annyi altípust, hogy azok szinte már az egyedi gépfajtákat tükrözzék.

Többszörös altípus-hierarchiáról akkor van szó, ha a specializációt több ismérv mentén is végrehajtjuk. Például a gépeket funkció szerint is, energiaforrás szerint is osztályozzuk. Ekkor az elektromos fűnyíróra vonatkozó ismeretek a gép alapegyedben, a fűnyíró gép és az elektromos gép altípusban „szóródnak szét”, ami roppantul elbonyolítja nemcsak az adatmodellt, hanem magát a kezelést is.

Probléma: Számos olyan gyakorlati helyzettel találkozhatunk, amiben egyszerűen nincs módunk arra, hogy az elméleti elveket tisztán érvényesítsük. A modellezés feladata a valóság hű tükrözése, de nem feladata a rossz valóság jobbítása. Két példával világítjuk meg ezt a rébuszt. A

józanul gondolkodó ember számára a konkrét gép olyan objektum, aminek adott esetben vannak tartozékai is. Azt nem is tudja elképzelni, hogy egy cégnél az X gépnél külön tételes nyilván-tartást vezetnek a tartozékokról, viszont az Y gépnél - ami az előbbivel teljesen azonos jellegű és ugyanolyanok a tartozékai is - csak egy laza felsorolásban közlik, hogy van N darab valamiféle kelléke is. Hasonlóképpen meglepő, ha egy cég Q üzemegységében lévő minden műszaki eszköz külön leltári számot kap (amint az illik), miközben a teljesen azonos jellegű Z üzemegységet egyetlen egy leltári számon futtatják, jóllehet található benne ötven külön is azonosítható gép.

Összefoglalás: A jó tervező tudja, hogy miképpen kell a mag-egyedek köré építeni a velük kapcsolatos osztályozó, kiegészítő, altípus stb. részletező egyedeket. Gyakorlatilag nincs mindig módja arra, hogy a valóságot elvileg korrekten tükrözze. Ha a fentiekhez hasonló kaotikus helyzetek uralkodnak egy szervezetben, akkor két eset lehetséges. Ha a probléma nem súlyos és a vezetés hajlamos a gyakorlat megváltoztatására, akkor esetleg alkalmazhatunk szigorúan csak időlegesnek szánt kompromisszumos megoldásokat. Így például kétféleképpen modellezzük a tartozékokat (külön egyedekként is, általános leíró tulajdonságokként is), de nem engedjük meg a kompromisszumos megoldás alkalmazását karbantartási módban. Azaz a régi gépeknél a tartozékok még leírásokként szerepelnek, de új gépnél a tartozékokat már csak külön egyedekként lehet megadni. Ha viszont nem látunk szándékot a valós gyakorlat jobbítására, akkor minden-képpen le kell mondanunk a modellezésről. Azért, mert mi leszünk erkölcsileg is felelősek a káosz konzerválásáért. A lelkiismeretes adatmodellező sohasem feledkezhet el az alábbi szabály-ról:

−− −

Káoszt nem lehet modellezni.

In document Halassy Béla ADATMODELLEZÉS (Pldal 196-199)