Adatbázis-kezelés · Specializáció, öröklés és kategóriák

Az EER-modell

A kibővített ER-modell az általános és speciális egyedek viszonyát is megmutatja. Megtanuljuk a főosztályok és alosztályok jelentését, a specializáció korlátait, a megosztott alosztály és kategória különbségét, valamint a relációs leképezés négy alapváltozatát.

Főosztály és alosztályd/o és teljességRelációs leképezés22 önellenőrző feladat

1. rész

Miért bővítjük ki az ER-modellt?

AlapfogalomAz EER (Enhanced Entity–Relationship) az ER-modell kiterjesztése, amely főosztályokkal, alosztályokkal, örökléssel és kategóriákkal fejez ki további jelentésbeli összefüggéseket.

Egy projektközpontban személyeket tartunk nyilván: mindenkinek van azonosítója, neve és e-mail-címe. Nem mindenki mentor, és nem mindenki résztvevő. A mentorhoz szakterület és mentorálási kapcsolat tartozhat, a résztvevőhöz évfolyam és projektcsapat. A minden személyre érvényes és csak egyes szerepekre érvényes tulajdonságokat külön szeretnénk kifejezni.

Az egyszerű ER-modellben felvehetnénk sok opcionális attribútumot egy SZEMELY egyedtípushoz, vagy külön egyedeket és 1:1 kapcsolatokat rajzolhatnánk. Ez azonban kevésbé mutatná világosan, hogy a mentor nem egy másik személy, hanem ugyanannak a személynek speciális szerepe.

Az EER-ben a SZEMELY főosztályhoz MENTOR és RESZTVEVO alosztály tartozhat. A mentor örökli a személy azonosítóját és nevét, és emellett saját szakterülete is van. Egy személy mindkét szerepben is részt vehet, ha a követelmények ezt megengedik.

Az EER koncepcionális modell: a jelentést és korlátozásokat írja le, nem választ automatikusan táblastruktúrát vagy SQL-megvalósítást. Ugyanazon EER-séma több helyes relációs megoldásra is leképezhető, eltérő előnyökkel és ellenőrzési igénnyel.

Milyen többletet fejezünk ki?
IgényEER-fogalom
A mentor ugyanaz a személy speciális szerepben.Főosztály–alosztály viszony.
Egy személy mentor és résztvevő is lehet.Átfedő specializáció.
Minden belépő belső vagy külső munkatárs.Teljes specializáció, megfelelő kizárási szabállyal.
Támogató lehet személy vagy cég.Kategória, különböző típusok uniójából.

2. rész

Főosztály, alosztály és egyedazonosság

AlapfogalomAz alosztály a főosztály egyedeinek részhalmaza. Az alosztály egyede nem másik objektum: ugyanaz az egyed speciális tulajdonságokkal vagy szereppel.

Legyen C a SZEMELY főosztály egyedeinek halmaza, S pedig a MENTOR alosztály. Ekkor S ⊆ C: minden mentor személy. Fordítva nem kötelező, hogy minden személy mentor legyen. Ez a részhalmazviszony az EER egyik alapjelentése.

A 17 azonosítójú Kovács Mira személy és a 17 azonosítójú Kovács Mira mentor ugyanaz a valós személy. Nem két egymástól független rekordazonosságot modellezünk, hanem ugyanannak az egyednek két szintű leírását. A főosztály azonosítója az alosztály azonosításának alapja is.

A főosztály–alosztály viszonyt gyakran „is-a”, vagyis „egy fajtája” kifejezéssel értelmezzük. MENTOR is-a SZEMELY. Ez nem azt jelenti, hogy a mentor egy másik személyhez tartozik; a „has-a” vagy „része” kapcsolatok más jelentésűek.

A modellezésnél az egyedtípus és az aktuális egyedhalmaz is megkülönböztetendő. Az ábra a típusviszonyt írja le; a konkrét adatállapotban az dönti el az alosztálytagságot, hogy mely személyek felelnek meg a szabálynak vagy kerültek az adott szerepbe.

Kidolgozott példa · Ugyanaz az egyed két leírásban

P17: Kovács Mira, mira@iskola.example; a személy mentor is.

  1. SZEMELY szinten: id 17, név és e-mail.
  2. MENTOR szinten: ugyanaz az id 17, szakterület robotika.
  3. A mentori szerep megszüntetése nem feltétlenül szünteti meg a személy nyilvántartását.
  4. A személy teljes törlése után nem maradhat ugyanahhoz az id-hez önálló mentori egyed.

3. rész

Attribútum- és kapcsolatöröklés

AlapfogalomAz alosztály örökli főosztálya attribútumait és a főosztályra érvényes kapcsolatokat, és saját attribútumokkal vagy kapcsolatokkal egészülhet ki.

A MENTOR örökli a SZEMELY id, nev és email attribútumait. Ez fogalmi érvényesség: minden mentor személy, ezért minden személyre előírt tulajdonság rá is vonatkozik. A relációs tárolásban ezek lehetnek külön főosztálytáblában, nem kell őket minden alosztálytáblában fizikailag megismételni.

A szakterulet a mentor saját attribútuma. A RESZTVEVO saját attribútuma lehet az evfolyam. Nem célszerű minden személyhez kötelező mentori szakterületet rendelni, ha sok személy nem mentor. Az alosztály világosan megmutatja, kikre értelmes a speciális tulajdonság.

Ha a SZEMELY részt vehet egy KAPCSOLATTARTAS kapcsolatban, azt a mentorok is megtehetik. Emellett MENTOR vezethet PROJEKT-et, olyan kapcsolatban, amelyet nem minden személy számára kívánunk megengedni. A kapcsolatban való részvétel az alosztály sajátossága is lehet.

Az öröklés lefelé érvényes. Nem állítjuk, hogy minden SZEMELY rendelkezik a MENTOR összes speciális tulajdonságával. Az alosztály saját mezőinek hiányát nem szabad ugyanúgy kezelni, mint egy mindenki számára értelmes, de ismeretlen főosztályadatot.

Személyek két speciális szerepe
Személyek két speciális szerepeA SZEMELY attribútumai közösek, a szakterület csak a MENTOR, az évfolyam csak a RESZTVEVO sajátja. Az o megengedett átfedést jelez, az egyszeres felső vonal részleges specializációt.SZEMELYidnévoMENTORRESZTVEVOszakterületévfolyam

A SZEMELY attribútumai közösek, a szakterület csak a MENTOR, az évfolyam csak a RESZTVEVO sajátja. Az o megengedett átfedést jelez, az egyszeres felső vonal részleges specializációt.

Örökölt és saját adat
AttribútumHelyeKikre érvényes?
id, nev, emailSZEMELYMinden személyre, az alosztályok tagjaira is.
szakteruletMENTORCsak a mentorokra.
evfolyamRESZTVEVOCsak az adott résztvevői alosztályra.

4. rész

Specializáció és általánosítás

AlapfogalomA specializáció egy általános egyedtípusból speciális alosztályokat különít el; az általánosítás több speciális típus közös tulajdonságait emeli főosztályba.

Felülről lefelé indulva SZEMELY-t veszünk fel, majd megállapítjuk, hogy egyes személyek mentorok, mások résztvevők, esetleg mindkettők. Ez specializáció: a főosztály egyedeit a feladat szempontjából fontos sajátosságok szerint további csoportokba soroljuk.

Alulról felfelé indulva először külön MENTOR és RESZTVEVO adatokat gyűjthetünk. Mindkettőnek van személyazonosítója, neve és e-mail-címe. Ezeket közös SZEMELY főosztályba emeljük: ez általánosítás. A saját attribútumok az eredeti speciális típusokon maradnak.

A két tervezési irány ugyanahhoz a kész típusviszonyhoz vezethet. Nem feltétlenül kell a végső ábrán külön rajzolni, hogy történetileg melyik gondolkodási irányt alkalmaztuk. A főosztály–alosztály jelentés és a korlátozások a lényegesek.

Az általánosítás nem pusztán egyforma mezőnevek összevonása. Két külön természetű adat azonos nevű mezője nem feltétlenül indokol közös főosztályt. A név és azonosító mellett valódi közös egyedazonosságot és jelentést kell felismerni.

Tervezési irányok
IrányKiindulópontMűvelet
Felülről lefeléSZEMELY közös leírásaMENTOR és RESZTVEVO szerepek elkülönítése.
Alulról felfeléMENTOR és RESZTVEVO külön leírásaKözös személyadatok kiemelése.
Kész modellSZEMELY és két alosztályUgyanaz a részhalmaz- és öröklési jelentés.

5. rész

Több, egymástól független specializáció

AlapfogalomUgyanaz a főosztály több külön szempont szerint is specializálható; az egyes specializációk korlátozásait külön értelmezzük.

Egy személy szerep szerint mentor vagy résztvevő lehet, elérési mód szerint helyszíni vagy online közreműködő. A két csoportosítás nem ugyanazt a kérdést teszi fel. Egy mentor lehet online közreműködő, egy résztvevő pedig helyszíni közreműködő.

Az egyik specializációban megengedett átfedés nem dönti el automatikusan a másik specializáció korlátait. Ha a munkavégzés módját egyetlen időpontra nézve két kizáró kategóriára osztjuk, ott diszjunkt szabályt használhatunk. A szerepek csoportja közben lehet átfedő.

Az időbeli értelmezést tisztázni kell. A valaki egy időszakban online, máskor helyszíni állítás nem azonos az ugyanabban az adatállapotban egyszerre két alosztály tagja állítással. Ha történetet tárolunk, szerepérvényességi időszakra vagy külön eseményre is szükség lehet.

Az ábrán két elkülönült csoportosítási csomópont egyértelműbb, mint egyetlen körből minden alosztályt vegyesen levezetni. Az utóbbi azt sugallhatná, hogy minden felsorolt osztályra ugyanaz a kizárási és teljességi szabály vonatkozik.

Kidolgozott példa · Független szempontok

P17 mentor és résztvevő, közben online közreműködő.

  1. A szerepspecializációban P17 két alosztály tagja.
  2. Az elérési mód specializációjában P17 az online alosztály tagja.
  3. A szerepspecializáció átfedő, az elérési mód lehet diszjunkt.
  4. A két specializáció teljességét is külön kell eldönteni.

6. rész

Diszjunkt és átfedő alosztályok

AlapfogalomDiszjunkt specializációban egy egyed legfeljebb egy alosztály tagja. Átfedő specializációban egy egyed több alosztályhoz is tartozhat.

A d jelzés a diszjunkt szabályra utal. Egy meghatározott közreműködői nyilvántartásban a BELSO és KULSO munkatárs kategória kizárhatja egymást, ha a belső státusz és a külső státusz az adott időpontra nézve egyértelműen eltérő. Az üzleti szabály, nem az elnevezés teszi őket diszjunkttá.

Az o jelzés megengedett átfedést jelent. SZEMELY esetén a MENTOR és RESZTVEVO szerep átfedhet: egy tapasztalt résztvevő mentorálhat másik csapatot. Az átfedés megengedése nem követeli meg, hogy minden adatállapotban ténylegesen legyen közös tag.

A diszjunkt szabály sem mondja meg, hogy minden főosztálytag valamely alosztályba tartozik-e. Csak a legfeljebb egy feltételt írja elő. Egy személy egyik alosztályban sem lehet, ha a specializáció részleges.

A csoportok közötti átfedést példarekordokkal jól ellenőrizhetjük. Ha a követelmények szerint P17 egyszerre mentor és résztvevő lehet, d jelzés hibás volna. Ha egy dokumentált státuszkód csak egyetlen alosztályt választhat, o jelzés indokolatlanul gyengítené a szabályt.

Kizárás és átfedés
Szabály0 alosztály1 alosztályTöbb alosztály
DiszjunktA teljességtől függMegengedettTiltott az adott csoportban
ÁtfedőA teljességtől függMegengedettMegengedett, nem kötelező

7. rész

Teljes és részleges specializáció

AlapfogalomTeljes specializációban minden főosztálybeli egyed legalább egy alosztály tagja. Részleges specializáció ezt nem követeli meg.

Teljes esetben az alosztályok uniója a teljes főosztályhalmazt adja. Ha minden KÖZREMŰKÖDŐ belső vagy külső, nem maradhat olyan egyed, amelyik egyik státuszba sem tartozik. Az ábrán a főosztály és a csoportosítási kör közötti kettős vonal jelzi a teljességet.

Részleges esetben létezhet főosztálytag alosztálytagság nélkül. A SZEMELY főosztályban lehet kapcsolattartó, aki se nem mentor, se nem résztvevő. Az egyszeres felső vonal ezt megengedi. Nem állítja, hogy biztosan van ilyen személy minden adatállapotban.

A kizárás és a teljesség két független dimenzió. Diszjunkt és teljes esetben pontosan egy alosztály szükséges. Átfedő és teljes esetben legalább egy, de több is megengedett. Diszjunkt és részleges esetben nulla vagy egy; átfedő és részleges esetben nulla, egy vagy több.

E két szabályt nem helyettesíti egyetlen „típus” szó. A modellrajz és a tárolási terv helyességéhez mindkettőt meg kell adni. Egy relációs megoldásban a teljesség biztosítása több táblára kiterjedő ellenőrzést is igényelhet.

Diszjunkt és teljes specializáció
Diszjunkt és teljes specializációA kettős felső vonal teljes lefedést, a d kizárást jelöl. Minden KOZREMUKODO pontosan egy BELSO vagy KULSO alosztály tagja.KOZREMUKODOidnévdBELSOKULSObelső azonosítószerződésszám

A kettős felső vonal teljes lefedést, a d kizárást jelöl. Minden KOZREMUKODO pontosan egy BELSO vagy KULSO alosztály tagja.

A négy kombináció
KizárásLefedésEgy főosztálytag alosztálytagságainak száma
DiszjunktTeljesPontosan 1.
DiszjunktRészleges0 vagy 1.
ÁtfedőTeljesLegalább 1.
ÁtfedőRészleges0, 1 vagy több.

8. rész

Predikátum és attribútum alapján definiált tagság

AlapfogalomPredikátummal definiált alosztály tagságát egy logikai feltétel dönti el. Attribútum alapján definiált specializációban a csoportosítás közös attribútumértékeken alapul.

A HALADO résztvevő alosztály feltétele lehet teljesitett_modulok ≥ 4. Itt egy predikátum, vagyis igaz vagy hamis értékű állítás határozza meg, ki tartozik a csoportba. Az alosztályt nem kézzel választott, a feltétellel ellentétes tagságként kezeljük.

A KOZREMUKODO státusz szerinti alosztályaihoz a statusz = belso és statusz = kulso feltételeket rendelhetjük. Ha ugyanazon egyértékű attribútum különböző értékei különböző alosztályt választanak, a csoportosítás diszjunkt. A teljességhez azonban minden megengedett értéket le kell fedni, és a hiányzó érték kérdését is rendezni kell.

A szerepkörök nem minden esetben egyetlen attribútummal jellemezhetők. Mentor és résztvevő átfedhet, ezért egy kizárólag mentor vagy resztvevo értékű egyértékű mező nem képes minden megengedett állapotot leírni. Több logikai jelzés vagy külön tagsági táblák szükségesek lehetnek.

A tagsági feltétel megváltozásának következményeit is tisztázni kell. Ha a teljesített modulok száma csökken egy adatjavítás után, a HALADO tagságot is a definícióval összhangba kell hozni. A főosztályadat és az alosztálytagság nem mondhat tartósan ellent egymásnak.

Kidolgozott példa · Miért nem biztos a teljesség?

A két alosztály feltétele statusz = belso és statusz = kulso.

  1. A belso és kulso egyszerre nem lehet ugyanazon egyértékű statusz értéke, ezért a csoport diszjunkt.
  2. Ha a statusz lehet vendeg is, az ilyen egyed egyik alosztályba sem kerül.
  3. A teljes specializációhoz a vendeg típust is kezelni kell, vagy a statusz értékkészletét két értékre korlátozni.
  4. Ha statusz hiányozhat, a lefedési feltétel ellenőrzése szintén nem automatikus.

9. rész

Beszúrás, szerepváltás és törlés fogalmi szinten

AlapfogalomAz EER-életciklusnak meg kell őriznie az alosztály részhalmazviszonyát, az egyedazonosságot és a specializáció korlátozásait.

Alosztályba kerüléskor az egyednek a főosztályban is léteznie kell. Egy új mentor nem lehet olyan id-vel nyilvántartva, amelyhez nincs személy. Fizikailag a rekordok beszúrásának sorrendje és ellenőrzése a relációs megoldás feladata, a fogalmi követelmény azonban azonos.

Teljes specializációnál új főosztálytag nem maradhat egyik alosztályhoz sem rendelve. A főosztály és alosztály adatainak létrehozását ezért összehangoltan kell elvégezni. Diszjunkt esetben ugyanazon csoport két alosztályába egyidejűleg nem kerülhet.

Egy mentor szerepének megszüntetése nem feltétlenül törli a SZEMELY egyedet. Részleges specializációban megmaradhat általános személy, vagy továbbra is lehet résztvevő. Teljes specializációban azonban az utolsó alosztálytagság megszüntetése a főosztályelem további sorsát is rendeznünk kell.

A főosztály egyedének törlése fogalmilag minden alosztálybeli megjelenését is megszünteti, mert ugyanarról az egyedről van szó. Ez nem jelenti, hogy a DBMS automatikusan minden séma esetében kaszkád törlést végez: a megvalósítási megszorításokat és műveleteket külön meg kell adni.

Esemény és követelmény
EseményMegőrzendő szabály
Új MENTORLétező SZEMELY azonosság.
Utolsó szerep megszűnéseRészlegesnél megengedhető, teljesnél rendezendő.
Második alosztálytagságDiszjunkt csoportban tiltott, átfedőben megengedett.
SZEMELY teljes törléseNe maradjanak önálló alosztálybeli előfordulásai.

10. rész

Többszintű specializáció és öröklési lánc

AlapfogalomEgy alosztály újabb specializáció főosztálya is lehet. Az alsóbb szintű osztály valamennyi fölötte álló főosztály érvényes tulajdonságát örökli.

A SZEMELY-ből elkülönített MENTOR tovább bontható BELSO_MENTOR és KULSO_MENTOR alosztályokra. Minden külső mentor mentor, és minden mentor személy, ezért minden külső mentor személy is. Ez a részhalmazviszony tranzitivitása.

A KULSO_MENTOR örökli a személy id, név és e-mail attribútumát, a mentor szakterületét, és saját szerződésazonosítót kaphat. Az örökölt attribútumokat fogalmilag nem kell minden szinten újként felvenni. Az alsó szint tulajdonságkészlete a teljes láncból áll össze.

Az egyes szintek szabályai eltérhetnek. A SZEMELY → MENTOR viszony részleges lehet, mert nem minden személy mentor. A MENTOR → BELSO_MENTOR/KULSO_MENTOR csoport viszont teljes és diszjunkt lehet, ha minden mentor pontosan egy státuszhoz tartozik.

A több szint nem indokol végtelen osztályozást. Csak olyan csoportot hozunk létre, amelynek önálló jelentése, speciális attribútuma, kapcsolata vagy üzletileg fontos korlátozása van. Egy kizárólag elnevezésében eltérő alosztály feleslegesen bonyolíthatja a tervet.

Öröklés több szinten
Öröklés több szintenSZEMELY → MENTOR részleges alosztályviszony. A mentori státusz a példában teljes és diszjunkt BELSO_MENTOR/KULSO_MENTOR felosztás.SZEMELYMENTORdBELSO_MENTORKULSO_MENTORbelső azonosítószerződésszám

SZEMELY → MENTOR részleges alosztályviszony. A mentori státusz a példában teljes és diszjunkt BELSO_MENTOR/KULSO_MENTOR felosztás.

Kidolgozott példa · A külső mentor attribútumai

P29 külső mentor a projektközpontban.

  1. SZEMELY-ből örökli az id-t, nevet és e-mailt.
  2. MENTOR-ból örökli a szakterületet.
  3. KULSO_MENTOR saját adata a szerződésazonosító.
  4. A közös azonosító ugyanannak az egyednek a szintek közötti azonosságát őrzi.

11. rész

Megosztott alosztály és többszörös öröklés

AlapfogalomA megosztott alosztály több főosztályhoz is tartozik. Tagjai mindegyik meghatározó főosztály tagjai, ezért ezek metszetének részhalmazát alkotják.

A SZEMELY-ből MENTOR és TECHNIKAI_SEGITO alosztály is képezhető. A MENTOR_TECHNIKUS megosztott alosztály tagja egyszerre mentor és technikai segítő. Az id mindenütt ugyanazon személyt azonosítja.

A megosztott alosztály mindkét főosztály tulajdonságait örökli: a mentor szakterületét és a technikai segítő jogosultsági szintjét is. A közös SZEMELY-ős attribútumai fogalmilag egyszer tartoznak az egyedhez, még ha több öröklési út is vezet hozzájuk.

A tagság feltétele a mindkét főosztályban való részvétel. Nem elég, hogy valaki mentor vagy technikai segítő legyen. Ugyanakkor nem kötelező minden olyan személyt a megosztott alosztályba sorolni, aki mindkét csoportban szerepel, ha a megosztott alosztályhoz további feltételt is rendelünk.

Az öröklési szerkezet ilyenkor már nem tiszta fa, hanem rácsszerű szerkezet. Ez EER-öröklési viszony, nem a klasszikus hierarchikus adatmodell két valódi szülőjű rekordjának hibája. A két modell ugyanazt a „hierarchia” szót más jelentésben is használhatja.

Megosztott alosztály: metszet
Megosztott alosztály: metszetMENTOR_TECHNIKUS minden tagja MENTOR és TECHNIKAI_SEGITO is. A kettős főosztályviszony mindkét szerep öröklését jelenti.SZEMELYoMENTORTECHNIKAI_SEGITOMENTOR_TECHNIKUS

MENTOR_TECHNIKUS minden tagja MENTOR és TECHNIKAI_SEGITO is. A kettős főosztályviszony mindkét szerep öröklését jelenti.

Tagság vizsgálata
SzemélyMentor?Technikai segítő?Lehet mentor-technikus?
P17igenigenIgen, további feltételek mellett.
P18igennemNem.
P19nemigenNem.
P20nemnemNem.

12. rész

Felülről lefelé és alulról felfelé tervezés

AlapfogalomAz EER-tervezés a közös és speciális tulajdonságok felismerésével, majd a tagsági és kapcsolati szabályok ellenőrzésével alakítja ki az osztályszerkezetet.

Felülről lefelé előbb a közös egyedtípust és általános attribútumait keressük. Utána kiválasztjuk azokat a szerepeket, amelyeknek önálló adatuk vagy kapcsolatuk van. SZEMELY-ből így juthatunk MENTOR, RESZTVEVO és TECHNIKAI_SEGITO alosztályokhoz.

Alulról felfelé előbb a külön nyilvántartott szerepek adatait gyűjtjük, majd azonosítjuk a közös tulajdonságokat. Nem minden hasonló típusból készítünk közös főosztályt: a közös valós jelentés és az egyedazonosság fontosabb az oszlopnevek egyezésénél.

A gyakorlatban a két irány váltakozik. Egy új kapcsolat miatt indokolttá válhat egy alosztály, majd a további vizsgálat rámutathat, hogy annak egyes mezői valójában minden főosztálytagra jellemzők. A tervet ilyen esetben javítjuk, nem ragaszkodunk az első rajzhoz.

A végső modell ellenőrzéséhez példaszemélyeket veszünk fel: csak mentor, csak résztvevő, mindkettő, egyik sem. A dokumentált szabályokból eldöntjük, mely állapot megengedett. Ez megmutatja, hogy a d/o jelzés és a teljes/részleges lefedés helyes-e.

Kidolgozott példa · Négy próbaegyed

A SZEMELY szerepspecializációja átfedő és részleges.

  1. P17 mentor és résztvevő: megengedett.
  2. P18 csak mentor: megengedett.
  3. P19 csak résztvevő: megengedett.
  4. P20 egyik szerepben sem vesz részt: megengedett.
  5. Ha a követelmények az utolsó esetet kizárják, a lefedést teljesre kell változtatni.

13. rész

Kategória: különböző típusok uniója

AlapfogalomA kategória több meghatározó főosztály uniójának részhalmaza. Egy kategóriatag legalább az egyik meghatározó típushoz tartozik; nem szükséges mindegyikhez tartoznia.

A projektközpont támogatója lehet MAGANSZEMELY vagy CEG. A személyt személyazonosító és név, a céget cégkód és cégnév írja le. A TAMOGATO kategória azokat az egyedeket fogja össze, amelyek támogatói szerepben részt vesznek. Nem kell a céget személynek tekintenünk.

A kategória tagja személy VAGY cég. Ez az unió jelentése. Ezzel szemben a MENTOR_TECHNIKUS megosztott alosztály tagja mentor ÉS technikai segítő. A két konstrukciót nem a rajz hasonlósága, hanem a tagság logikája különbözteti meg.

A kategória csak a támogatói szerep számára kiválasztott forrásegyedeket tartalmazhatja. Lehet sok személy vagy cég, amely nem támogat semmit. Ez részleges kategória. Teljes kategória esetén az összes meghatározó osztály minden elemét bevonjuk az unióból.

Különböző típusok kulcsai eltérő jelentésűek lehetnek. A P17 személyazonosító és C17 cégkód nem ugyanaz az azonosság. Ezért a kategória relációs leképezésekor gyakran külön támogatói azonosítót vezetünk be, és megőrizzük, mely forrásegyedet képviseli.

Támogató kategória két eltérő típusból
Támogató kategória két eltérő típusbólAz U kör uniót jelöl. A TAMOGATO a MAGANSZEMELY és CEG uniójának részhalmaza; a bemutatott egyes vonal részleges kategóriát jelöl.MAGANSZEMELYCEGUTAMOGATO

Az U kör uniót jelöl. A TAMOGATO a MAGANSZEMELY és CEG uniójának részhalmaza; a bemutatott egyes vonal részleges kategóriát jelöl.

Metszet és unió
KonstrukcióTagsági jelentésPélda
Megosztott alosztályMentor ÉS technikai segítőMENTOR_TECHNIKUS ⊆ MENTOR ∩ TECHNIKAI_SEGITO
KategóriaSzemély VAGY cégTAMOGATO ⊆ MAGANSZEMELY ∪ CEG

14. rész

Kategóriák tulajdonságai és kapcsolatai

AlapfogalomA kategória közös szerepet ad különböző típusú egyedeknek; saját kapcsolatokban is részt vehet, miközben megőrzi a forrásegyed azonosságát.

A TAMOGATO és PROJEKT között TAMOGATAS kapcsolat lehet. Egy támogató több projektet támogathat, egy projekt több támogatótól kaphat hozzájárulást. Az összeg és a dátum az adott támogatási esemény adata. A kategória lehetővé teszi, hogy a kapcsolatban egységesen szerepeljen személy vagy cég.

Ha többféle támogatási eszközt is nyilvántartunk, PÉNZBELI és TÁRGYI hozzájárulásból külön kategória is készíthető, ha valóban eltérő forrástípusokról van szó. Nem szükséges minden külön megnevezett értéket kategóriává tenni: sok esetben egyszerű típusattribútum vagy alosztály megfelelőbb.

A kategóriatag forrását egyértelműen azonosítani kell. Egy támogatói sor nem jelenthet egyszerre két külön személyt vagy egy egymástól független személyt és céget. A bemutatott példában a forrástípusokat különböző egyeduniverzumokként kezeljük, ezért pontosan egy forrásegyedet rendelünk minden támogatóhoz.

Az univerzum és az azonosság szabályát dokumentálni kell. Ha egy valós szereplő több forrástípusban is ugyanazon egyedként szerepelhet, nem szabad a külön táblakulcsok alapján automatikusan két külön kategóriatagot létrehozni. Ilyen helyzetben közös azonosságkezelésre vagy más, pontosabb modellre van szükség.

Kidolgozott példa · Személy és cég ugyanabban a kapcsolatban

T1 támogató P17 magánszemélyt, T2 támogató C8 céget képvisel.

  1. T1 támogatja PR3 projektet 30 000 Ft-tal.
  2. T2 támogatja PR3 projektet 120 000 Ft-tal.
  3. A támogatási összegek nem a személy vagy cég állandó adatai, hanem az adott támogatási eseményé.
  4. Ismételt támogatás esetén külön tamogatas_id vagy megfelelő eseményazonosítás szükséges.

15. rész

A szabályok halmazelméleti összefoglalása

AlapfogalomAz EER-korlátok részhalmaz-, unió- és metszetviszonyokkal is leírhatók; ez pontosan elkülöníti a megengedett és tiltott tagságokat.

Ha G főosztályhoz S1, S2, …, Sn alosztály tartozik, minden Si ⊆ G. Teljes specializációban S1 ∪ S2 ∪ … ∪ Sn = G. Részleges specializációban a lefedési egyenlőséget nem követeljük meg; az unió minden esetben G részhalmaza.

Diszjunkt csoportban az eltérő alosztályok metszete üres: Si ∩ Sj = ∅, ha i ≠ j. Átfedő csoportban ezt az ürességi követelményt nem írjuk elő. Nem állítjuk, hogy a metszetnek kötelezően nem üresnek kell lennie az aktuális adatok között.

Predikátummal definiált S alosztály a G főosztály feltételt teljesítő elemeiből áll: S = {x ∈ G | p(x)}. Megosztott alosztályra például T ⊆ S1 ∩ S2 érvényes. A kategóriánál K ⊆ D1 ∪ D2 ∪ … ∪ Dn; teljes kategória esetén egyenlőség áll fenn.

A formális jelölés akkor hasznos, ha példákat is társítunk hozzá. MENTOR_TECHNIKUS esetén a metszet jelentése, hogy mindkét szerep szükséges. TAMOGATO esetén az unió azt jelenti, hogy egy megfelelő személy vagy cég is elegendő forrás lehet a kategóriatagsághoz.

Jelölés és magyar jelentés
JelölésJelentés
S ⊆ GMinden S-beli egyed G-beli is.
∪ Si = GTeljes lefedés.
Si ∩ Sj = ∅A két alosztály diszjunkt.
T ⊆ S1 ∩ S2Megosztott alosztály: mindkét szerep.
K ⊆ D1 ∪ D2Kategória: az egyik forrástípus tagsága elegendő.

16. rész

EER–relációs leképezés: az alapelvek

AlapfogalomA relációs leképezés a főosztályok és alosztályok jelentését táblákkal, közös azonosítókkal és megfelelő integritási ellenőrzésekkel őrzi meg.

A korábbi ER–relációs szabályok továbbra is érvényesek az egyszerű egyedekre és kapcsolatokra. Az EER új feladata az öröklés, a specializáció és a kategória tárolása. Nem minden részhalmazviszonyhoz kell önálló kapcsolat-attribútum vagy teljesen új, független kulcs.

A főosztály id kulcsát az alosztályokban is használjuk, ha ugyanazt az egyedet azonosítja. Az első leképezési változatban az alosztály id-je egyszerre elsődleges kulcs és a főosztályra mutató idegen kulcs. Ez biztosítja, hogy alosztálysor csak létező főosztályhoz tartozzon.

A részhalmazt biztosító idegen kulcs nem ellenőrzi automatikusan a teljességet vagy a diszjunkt szabályt. A két alosztálytábla ugyanazt az id-t is tartalmazhatja, ha nincs külön kizárás. A főosztálytábla pedig tartalmazhat mindkét alosztályból hiányzó id-t, ha nincs lefedési ellenőrzés.

Ezért a táblaséma mellett mindig külön felsoroljuk, milyen EER-szabályt biztosít a kulcs, és milyenhez kell további támogatott megszorítás, tranzakciós alkalmazáslogika vagy rendszerbeli megoldás. Egy szép táblarajz nem bizonyítja a teljes fogalmi szabályrendszer érvényesítését.

A négy alapváltozat
VáltozatTáblákFő feltétel
1. Főosztály + alosztálytáblákKözös adatok egyszer, szerepenként külön táblaÁltalános megoldás; további d/o és lefedési ellenőrzés kellhet.
2. Csak alosztálytáblákKözös adatok minden alosztálybanTeljes lefedés szükséges az adatvesztés elkerüléséhez.
3. Egy tábla egy típusjelzővelKözös és speciális oszlopok együttDiszjunkt csoporthoz illeszkedik.
4. Egy tábla több tagságjelzővelSzerepenként igaz/hamis jelzőÁtfedés tárolható, a mezőszabályokat külön ellenőrizzük.

17. rész

1. változat: főosztály és külön alosztálytáblák

AlapfogalomMinden főosztály és alosztály külön táblát kap; a közös adatok a főosztálytáblában, a saját adatok az alosztálytáblában szerepelnek.

A SZEMELY(id, nev, email) tábla minden személyt tartalmaz. A MENTOR(id, szakterulet) és RESZTVEVO(id, evfolyam) csak a megfelelő alosztály tagjait tárolja. Az alosztály id elsődleges kulcs, és SZEMELY.id-re mutató idegen kulcs is.

P17 átfedő tagsága úgy jelenik meg, hogy id 17 mindhárom táblában szerepel. A nev és email csak a SZEMELY sorban található. P20 szerep nélkül kizárólag SZEMELY-ben szerepelhet, ha a specializáció részleges.

A teljes mentori adatok kiolvasásához a két táblát id alapján összekapcsoljuk. A saját attribútumokhoz nem kell a másik alosztály mezőit tárolni vagy kitölteni. Ez a megoldás áttekinthető és jól bővíthető új szerepekkel.

A költség a több tábla és az összekapcsolások igénye. Diszjunkt esetben ellenőrizni kell, hogy ugyanaz az id ne jelenjen meg két kizáró alosztályban. Teljes esetben a SZEMELY minden id-jének legalább egy alosztályban meg kell jelennie. E két szabály nem következik pusztán az idegen kulcsokból.

Táblák és kulcsok

SZEMELY(id [PK], nev, email)

MENTOR(id [PK, FK → SZEMELY.id], szakterulet)

RESZTVEVO(id [PK, FK → SZEMELY.id], evfolyam)

Példasorok a szereptáblákban
idSZEMELYMENTORRESZTVEVO
17Kovács Mirarobotika10. évfolyam
18Németh Áronadatbázis-kezelésnincs sor
20Varga Lillanincs sornincs sor

18. rész

2. változat: csak az alosztályok táblái

AlapfogalomCsak alosztálytáblákat használunk, és mindegyikbe felvesszük a főosztály közös attribútumait is; ez teljes lefedés esetén őrizheti meg az összes főosztálytagot.

A KOZREMUKODO teljes és diszjunkt BELSO/KULSO specializációjánál BELSO(id, nev, email, belso_azonosito) és KULSO(id, nev, email, szerzodes_szam) táblát készíthetünk. Minden közreműködő pontosan egyikben szerepel, így a külön főosztálytábla elhagyható.

Részleges specializációban ez nem általánosan helyes: az alosztály nélküli főosztálytag számára nem marad tárolási hely. A csak általános P20 személyt nem lenne hová felvenni. Ezért a változat alkalmazásakor a lefedést ellenőrizni kell.

Átfedő és teljes specializációban ugyanaz az egyed több táblában is szerepelhet, közös adatainak ismétlésével. A név és e-mail összhangját ilyenkor biztosítani kell. A konstrukció tárolhatja az adatokat, de a redundancia és módosítási kockázat jelentős.

Az azonosítók globális értelmezését is megőrizzük. Ha két külön táblában id 17 két külön egyedet jelölhetne, nem lehetne egyszerűen a táblák uniójával rekonstruálni a főosztályt. A közös egyedazonosságot az id-k képzésével és a korlátozásokkal is biztosítani kell.

Teljes, diszjunkt példa

BELSO(id [PK], nev, email, belso_azonosito)

KULSO(id [PK], nev, email, szerzodes_szam)

A teljes KOZREMUKODO halmaz a két alosztály egyedeiből áll.

Kidolgozott példa · Miért veszne el P20?

A SZEMELY → MENTOR/RESZTVEVO specializáció részleges, és P20 egyik szerepnek sem tagja.

  1. Ha csak MENTOR és RESZTVEVO táblát tartunk fenn, P20 egyikbe sem illik.
  2. Az adat így nem tárolható a fogalmi jelentés megsértése nélkül.
  3. Külön SZEMELY tábla megtartása, vagy a konstrukció átgondolása szükséges.

19. rész

3. változat: egy tábla és egy típusjelző

AlapfogalomDiszjunkt specializáció egyetlen táblában is tárolható, a közös és speciális attribútumokkal, valamint egy alosztályt jelölő típusmezővel.

A KOZREMUKODO tábla az id, nev, email, tipus, belso_azonosito és szerzodes_szam mezőket tartalmazza. Ha tipus = belso, a belso_azonosito értelmes; ha tipus = kulso, a szerzodes_szam. A másik alosztály saját mezője nem alkalmazható az adott egyedre.

Teljes specializációban a tipus mező kötelező és csak a megengedett alosztályokat választhatja. Részleges diszjunkt esetben külön semleges jelölés vagy megengedett hiányzó típus reprezentálhatja az alosztály nélküli főosztálytagot. A választást következetesen kell rögzíteni.

Egyetlen típusmező nem írja le a mentor és résztvevő megengedett egyidejű tagságát. Ha az átfedést „mentor_resztvevo” új értékkel próbáljuk kezelni, minden további szerepkombináció külön esetet kívánhat. Az egyszerű változat lényegében diszjunkt felosztáshoz illeszkedik.

A sok alosztályspecifikus mező miatt sok nem alkalmazható érték keletkezhet. Ellenőrizni kell a típus és mezők összhangját: belső rekordnál legyen megfelelő belső azonosító, és ne szerepeljen értelmetlen külső szerződésadat. Az alkalmazhatatlanság és az ismeretlen adat nem ugyanaz a jelentés.

Egytáblás, diszjunkt tárolás
idtipusbelso_azonositoszerzodes_szam
41belsoB-41nem alkalmazható
42kulsonem alkalmazhatóSZ-42

Táblaséma

KOZREMUKODO(id [PK], nev, email, tipus, belso_azonosito, szerzodes_szam)

Teljes esetben tipus ∈ {belso, kulso}, hiányzó érték nélkül.

A tipus és a saját mezők kitölthetősége együtt ellenőrzendő.

20. rész

4. változat: egy tábla több tagságjelzővel

AlapfogalomÁtfedő specializáció egyetlen táblában szerepenként külön logikai tagságjelzővel is leírható; egy sor több jelzője is igaz lehet.

A SZEMELY táblában mentor_e és resztvevo_e jelzőt használunk. P17 esetén mindkettő igaz, P18-nál csak mentor_e igaz, P20-nál mindkettő hamis lehet, ha részleges a specializáció. A közös nev és email egyszer szerepel.

A szakterulet és evfolyam mezők a megfelelő szerephez kötődnek. Ha mentor_e hamis, a szakterület nem mentori adatként értelmezendő. Ha a mentorhoz kötelező szakterület tartozik, igaz jelzőnél értékét is biztosítani kell. A jelzők és a speciális mezők együtt adnak helyes tárolási szabályt.

Teljes specializációban legalább egy tagságjelző legyen igaz. Diszjunkt változatban legfeljebb egy lehet igaz. Átfedő részleges esetben mindegyik hamis is megengedett. A két korlát itt közvetlenül a sor jelzőin vizsgálható, ha azok érvényes, nem hiányzó logikai értékek.

Az egytáblás forma egyszerű közös lekérdezéseket adhat, de sok szerepnél széles és nehezen áttekinthető lehet. Egy új alosztály új jelzőt és új saját oszlopokat kíván. A főosztály + alosztálytáblák megoldása gyakran tisztábban bővíthető, különösen sok szerep és kapcsolat esetén.

Próbáld ki a specializáció korlátait!

Válassz szabályt, majd jelöld egy személy szerepeit! Ez a próba a két tagsági korlátot vizsgálja.

P17 személy tagságai

Megengedett tagsági állapot.

0 alosztálytagság. Több tagság is megengedett. Alosztály nélküli főosztálytag is megengedett.

Átfedő szerepek tárolása
idmentor_eresztvevo_eszakteruletevfolyam
17igazigazrobotika10
18igazhamisadatbázis-kezelésnem alkalmazható
20hamishamisnem alkalmazhatónem alkalmazható

21. rész

Kategóriák és megosztott alosztályok leképezése

AlapfogalomMegosztott alosztályban közös egyedazonosítást és valamennyi főosztálytagságot őrzünk meg. Eltérő kulcsú kategóriánál külön kategóriaazonosítóval kapcsoljuk össze a forrásegyedet és közös szerepét.

A MENTOR_TECHNIKUS(id, szakmai_szint) id mezője egyszerre elsődleges kulcs és a MENTOR, illetve TECHNIKAI_SEGITO id-jére mutató idegen kulcs lehet. A két hivatkozás azt biztosítja, hogy az id mindkét főosztálytáblában létezzen. A közös SZEMELY-azonosság megőrzése itt alapkövetelmény.

TAMOGATO esetén a személyazonosító és cégkód nem helyettesíthető egymással. Bevezetünk tamogato_id pótkulcsot, és megadjuk a forrást. A példában egy támogató pontosan egy személyt vagy céget képvisel, ezért a két forráshivatkozás közül pontosan egy kitöltött. A forrásmezők egyedisége azt is biztosíthatja, hogy ugyanaz a forrásegyed ne kapjon több támogatói azonosságot.

A pótkulcsos hozzárendelés megoldható a forrástáblákban tárolt kategóriahivatkozásokkal vagy a kategóriatáblában tárolt forráshivatkozásokkal. Itt az utóbbit mutatjuk: TAMOGATO(tamogato_id, szemely_id, cegkod). Az idegen kulcsok mellett a pontosan egy forrás szabályt és az egyediséget is érvényesíteni kell.

A TAMOGATAS tábla ezután tamogato_id alapján kapcsolódik a közös szerephez, és projekt_id alapján a projekthez. A pótkulcs nem tünteti el a forrásazonosságot, hanem közös hivatkozási pontot ad. A kategória forrását és a konkrét támogatási esemény adatait külön tartjuk.

Két eltérő konstrukció relációs sémája

MENTOR_TECHNIKUS(id [PK, FK → MENTOR.id, FK → TECHNIKAI_SEGITO.id], szakmai_szint)

TAMOGATO(tamogato_id [PK], szemely_id [FK → SZEMELY.id, egyedi ha kitöltött], cegkod [FK → CEG.cegkod, egyedi ha kitöltött])

TAMOGATO szabály: pontosan egy forráshivatkozás kitöltött.

TAMOGATAS(tamogatas_id [PK], tamogato_id [FK], projekt_id [FK], datum, osszeg)

Kategóriaforrások
tamogato_idszemely_idcegkodÉrtelmezés
T117nincsP17 személy támogatóként.
T2nincsC8C8 cég támogatóként.

22. rész

Összefüggő EER-terv: szerepek, projektek, támogatók

AlapfogalomA teljes EER-terv az alap ER-kapcsolatokat, az osztályviszonyokat és a kategóriákat együtt, de eltérő jelentésű jelölésekkel mutatja meg.

A projektközpont közös SZEMELY főosztályához MENTOR, RESZTVEVO és TECHNIKAI_SEGITO szerepek kapcsolódhatnak. A mentori és résztvevői csoport átfedő és részleges. A mentor a PROJEKT vezetője lehet; a résztvevő a projektcsapat tagja. E két kapcsolat az alosztályhoz tartozik, nem minden személy általános tulajdonsága.

A MENTOR_TECHNIKUS mindkét megfelelő szerep tagja, ezért metszetszerű megosztott alosztály. A TAMOGATO viszont személyek és cégek kiválasztott uniója. Ugyanabban a modellben szerepelhet mindkét konstrukció, de nem cserélhetők fel.

A relációs tervben a személyszerepekhez az első leképezési változatot választjuk, így a közös személyadatok egyszer szerepelnek. A megosztott alosztály id-je mindkét szereptáblához kapcsolódik. A támogató saját pótkulcsot kap, a támogatási esemény pedig külön kapcsolat- vagy eseménytábla.

A végső ellenőrzéshez a jelentéstől a konkrét adatokig haladunk: minden mentor személy; minden mentor-technikus mindkét szerepben létezik; minden támogató érvényes forrást képvisel; minden támogatás konkrét projektet érint. Ezután vizsgáljuk a d/o és teljességi szabályokat, a mezőalkalmazhatóságot és az életciklust. Az EER kiegészíti, nem helyettesíti az alap ER-modellezési ismereteket.

A konstrukció felismerése
ÁllításHelyes eszköz
Minden mentor személy.Alosztályviszony.
Egy mentor több projektet vezet.Kapcsolattípus megfelelő számossággal.
Egy személy mentor és technikus is.Átfedő szerepek; szükség esetén megosztott alosztály.
A támogató személy vagy cég.Kategória, megfelelő azonosságkezeléssel.
Egy támogatás összege és dátuma van.A támogatási kapcsolat vagy esemény saját attribútumai.

Önellenőrző feladatok

Először válaszolj önállóan, és indokold a döntésedet! A kérdés megnyitásakor látható a megoldás és a magyarázat.

1. Mit állít a MENTOR ⊆ SZEMELY viszony?

Minden mentor személy, ugyanazzal az egyedazonossággal. Nem követeli meg, hogy minden személy mentor legyen.

2. Örökli-e a mentor a személy azonosítóját?

Igen, a főosztály azonosítása az alosztályra is érvényes. A külön alosztálytáblás leképezésben az id PK és FK is lehet.

3. Miért nem egyszerű „tartozik hozzá” kapcsolat az alosztályviszony?

Mert a fő- és alosztály ugyanazt az egyedet írja le, általános és speciális szerepben. Egy közönséges kapcsolat két külön egyedet köt össze.

4. Mi a specializáció és az általánosítás különbsége?

Specializációval a közös típusból alosztályokat különítünk el; általánosítással a speciális típusok közös tulajdonságait emeljük főosztályba.

5. Mit jelent a d jelzés?

Az adott alosztálycsoportban egy egyed legfeljebb egy alosztály tagja lehet.

6. Mit jelent az o jelzés?

Többes alosztálytagság megengedett az adott csoportban. Nem kötelező minden adatállapotban tényleges átfedésnek lennie.

7. Mit követel meg a kettős felső vonal?

Teljes lefedést: minden főosztálytag legalább egy alosztályhoz tartozik.

8. Hány tagsága lehet diszjunkt, részleges csoportban?

Nulla vagy egy. A részleges nem követel legalább egyet, a diszjunkt nem enged egynél többet.

9. Hány tagsága lehet átfedő, teljes csoportban?

Legalább egy; több is megengedett.

10. A részleges csoportban kötelező alosztály nélküli egyedet tárolni?

Nem. A részleges szabály csak megengedi, hogy legyen ilyen, de nem követeli meg.

11. Hogyan különbözik a megosztott alosztály a kategóriától?

A megosztott alosztály több főosztály metszetének részhalmaza: mindegyikhez tartozik. A kategória unió részhalmaza: legalább egyik forrástípushoz tartozik.

12. Miért nem megfelelő az egyetlen mentor/resztvevo típusmező átfedő szerepekre?

Mert egy személy egyszerre mindkét szerepben lehet, amit az egyértékű, kétértékű típusjelző nem tud kifejezni.

13. Mikor veszíthet adatot a csak alosztálytáblás tárolás?

Részleges specializációban, ha a főosztály egyedének nincs alosztálytagsága: nincs számára megfelelő tárolási hely.

14. A főosztályra mutató FK biztosítja a teljes specializációt?

Nem. Csak azt, hogy egy alosztálysor létező főosztálytagra utal. A főosztály minden sorának alosztálytagságát külön kell biztosítani.

15. Mit örököl a KULSO_MENTOR?

A SZEMELY közös attribútumait és a MENTOR saját attribútumait; emellett a külső mentori alosztály saját adatait is tárolhatja.

16. Elég mentor vagy technikai segítő tagság a MENTOR_TECHNIKUS-hoz?

Nem. Mindkét főosztálytagság szükséges. A megosztott alosztály a metszetből választ.

17. Miért használhat a TAMOGATO saját pótkulcsot?

A személy és cég eltérő kulcsainak közös hivatkozási pontot ad. A pótkulcs mellett a forrásegyedhez való érvényes és egyértelmű hozzárendelést is meg kell őrizni.

18. Miért tiltott a TAMOGATO mindkét forrásmezőjének hiánya a példában?

Forrás nélküli kategóriatagot jelentene; nem lenne személy vagy cég, amelyet képvisel.

19. Hová tartozik egy konkrét támogatás összege?

A TAMOGATAS kapcsolat vagy esemény saját adata, nem a támogató általános állandó attribútuma.

20. Milyen két korlátot ellenőriz a több jelzős táblában a „legalább egy” és a „legfeljebb egy” feltétel?

A legalább egy a teljes lefedést, a legfeljebb egy a diszjunkt szabályt. Együtt pontosan egy alosztálytagságot követelnek.

21. Miért nem dönthető el a teljesség csak két eltérő státuszértékből?

Mert lehet további érték vagy hiányzó státusz is, amely egyik alosztályhoz sem tartozik. A teljes értékkészletet és kötelezőséget is vizsgálni kell.

22. A mentori szerep törlése mindig a személy törlése is?

Nem. Részleges specializációban a személy megmaradhat általános tagként vagy más szerepben; teljes csoportnál az utolsó tagság megszüntetését külön rendezni kell.

Összetett gyakorlófeladatok

1. gyakorlófeladat: válaszd ki a specializáció szabályait!

A SZEMELY főosztályban lehet mentor, résztvevő, mindkettő vagy egyik sem. Egy külön MENTOR specializációban minden mentor belső vagy külső, egyszerre nem lehet mindkettő.

  1. Add meg a személyszerepek d/o és lefedési szabályát!
  2. Add meg a mentorstátusz szabályát!
  3. Mutass példát mindkét csoportra!
  4. Sorold fel egy külső mentor örökölt és saját adatait!
Részletes mintamegoldás és indoklás
  1. SZEMELY → MENTOR/RESZTVEVO: átfedő (o), részleges. Egyszeres felső vonal, mindkét szerep megengedett.
  2. MENTOR → BELSO_MENTOR/KULSO_MENTOR: diszjunkt (d), teljes. Kettős felső vonal, pontosan egy státusz.
  3. P17 mentor és résztvevő; P20 egyik sem. P29 külső mentor, ezért a belső mentor alosztályban nem szerepel.
  4. SZEMELY-ből id, név, e-mail; MENTOR-ból szakterület; KULSO_MENTOR saját adata például szerződésszám.

2. gyakorlófeladat: képezd le relációkra!

A SZEMELY–MENTOR–RESZTVEVO modell átfedő és részleges. A mentornak szakterülete, a résztvevőnek évfolyama van.

  1. Készíts főosztály + alosztálytáblás sémát!
  2. Add meg a PK és FK mezőket!
  3. Helyezd el P17 mindkét szerepét és P20 szerep nélküli állapotát!
  4. Miért nem általánosan megfelelő a csak két alosztálytáblás megoldás?
Részletes mintamegoldás és indoklás
  1. SZEMELY(id, nev, email); MENTOR(id, szakterulet); RESZTVEVO(id, evfolyam).
  2. SZEMELY.id PK. MENTOR.id és RESZTVEVO.id PK és egyben FK a SZEMELY.id-re.
  3. P17 mindhárom táblában szerepel, közös neve csak SZEMELY-ben. P20 csak SZEMELY-ben szerepel.
  4. P20 alosztály nélküli személynek nem volna tárolási helye. A részleges lefedést a csak alosztálytáblák nem őriznék meg.

3. gyakorlófeladat: metszet vagy unió?

A ROBOTIKAI_MENTOR személy egyszerre MENTOR és ROBOTIKAI_SZAKEMBER. A TAMOGATO lehet személy vagy vállalkozás. A forrástípusok különböző egyedeket jelentenek.

  1. Melyik konstrukció megosztott alosztály, és melyik kategória?
  2. Írd fel a halmazviszonyokat!
  3. Tervezz kulcsokat és hivatkozásokat!
  4. Miért hibás két külön forrásegyedet egy TAMOGATO sorba összevonni?
Részletes mintamegoldás és indoklás
  1. ROBOTIKAI_MENTOR megosztott alosztály; TAMOGATO kategória.
  2. ROBOTIKAI_MENTOR ⊆ MENTOR ∩ ROBOTIKAI_SZAKEMBER. TAMOGATO ⊆ SZEMELY ∪ VALLALKOZAS.
  3. ROBOTIKAI_MENTOR id-je mindkét szereptáblára hivatkozik, közös személyazonossággal. TAMOGATO saját id-t kap, és pontosan egy megfelelő forráshivatkozással személyt vagy vállalkozást képvisel.
  4. A kategóriatag egy forrásegyed közös szerepét jelenti a megadott példában. Két külön egyed összevonása az azonosságot és a támogatási kapcsolatok jelentését rontaná el.

4. gyakorlófeladat: találd meg az integritási hiányokat!

Egy tervben SZEMELY és két alosztálytábla van. Az alosztályok id-je a SZEMELY-re hivatkozik. A tervező szerint ettől automatikusan teljes és diszjunkt a specializáció.

  1. Adj példát a teljesség megsértésére!
  2. Adj példát a diszjunkt szabály megsértésére!
  3. Mit biztosítanak ténylegesen az idegen kulcsok?
  4. Milyen további ellenőrzés szükséges?
Részletes mintamegoldás és indoklás
  1. SZEMELY-ben id 20 létezik, de egyik alosztálytáblában sincs. Az FK-k ezt nem tiltják.
  2. Id 17 mindkét alosztálytáblában szerepel, és SZEMELY-ben is létezik. A két külön FK így is érvényes.
  3. Azt, hogy minden alosztálysor létező főosztályegyet képvisel. A főosztály lefedését és az alosztályok kizárását nem.
  4. A teljességhez minden főosztálytag legalább egy szerepben szerepeljen; a diszjunktsághoz ugyanaz az id legfeljebb egy kizáró szereptáblában legyen. A megvalósítást a rendszer támogatott megszorításaival és összehangolt tranzakciós műveleteivel kell biztosítani.

A modellt a jelentése, a példarekordok és az integritási szabályok együtt igazolják. Ellenőrizd mindhármat a saját terveiden is!