Adatbázis-kezelés · Fák, előfordulások és virtuális kapcsolatok

A hierarchikus adatmodell

A hierarchikus modellben a rekordok gyökérből induló fákba rendeződnek. Megvizsgáljuk a szülő–gyerek kapcsolatok szabályait, a preorder bejárást, a sok-sok kapcsolatok nehézségét és a virtuális kapcsolatokkal készített leképezést.

Gyökér és PCRPreorder bejárásVirtuális kapcsolatok16 önellenőrző feladat

1. rész

A hierarchikus modell alapgondolata

AlapfogalomA hierarchikus adatmodell a rekordokat gyökérből induló, szülő–gyerek kapcsolatokat tartalmazó fastruktúrába szervezi.

A hierarchia egymás alá rendelt elemek rendszerét fejezi ki. Egy intézményhez programok, egy programhoz műhelyek, egy műhelyhez feladatok tartozhatnak. A modellt akkor értjük meg könnyen, ha először azt kérdezzük: mi a kiinduló elem, és mely elemek tartoznak közvetlenül alá?

A klasszikus fa nem általános háló. A gyökérnek nincs szülője, minden további csomópontnak pontosan egy közvetlen szülője van. Egy csomópontnak ugyanakkor több gyereke is lehet. Az útvonalak ezért egyértelmű, felülről lefelé követhető láncokba rendeződnek.

A hierarchikus alárendelés nem öröklést jelent. Ha az INTEZMENY alatt MUHELY található, a műhely nem az intézmény egy speciális fajtája. Két külön dolog között fennálló szerkezeti kapcsolatot tárolunk. Ezt később az EER-modell főosztály–alosztály viszonyától is meg kell különböztetni.

A természetes fa jó kiindulópont lehet olyan nyilvántartásoknál, ahol az adatok egyértelmű tulajdonosi vagy összetartozási útvonalat követnek. Nehézség akkor jelentkezik, ha ugyanaz az önálló adat több ághoz kapcsolódik, vagy több szülőt igényel. Ilyenkor a modellválasztást és az esetleges kiterjesztést tudatosan kell mérlegelni.

Mit jelent a hierarchia?
ÁllításJelentés
Egy műhely egy program alá tartozik.Szülő–gyerek kapcsolat.
Egy műhely több feladatot tartalmaz.Egy-több szerkezet.
Egy mentor egyben résztvevő is.Nem egyszerű szülő–gyerek kapcsolat; szerep vagy alosztály kérdése.
Ugyanaz az eszköz két műhelyhez kell.Több szülő igénye; a tiszta fa korlátjába ütközhet.

2. rész

Rekord és szülő–gyerek kapcsolat: PCR

AlapfogalomA PCR (Parent–Child Relationship) két rekordtípus közötti szülő–gyerek kapcsolat; egy előfordulásában egy szülőrekordhoz nulla vagy több gyerekrekord tartozik.

A rekord egy konkrét nyilvántartott elem adatait tartalmazza, a rekordtípus annak szerkezetét írja le. Az INTEZMENY rekordtípus mezői intezmeny_id és nev; a MUHELY-é muhely_id, cim és kezdes lehetnek. A típusok kapcsolata nem azonos a konkrét intézmény és konkrét műhely kapcsolatával.

Az INTEZMENY–MUHELY PCR-ben az intézmény a szülő, a műhely a gyerek. Egy intézményhez több műhely tartozhat; egy adott műhelynek ebben a klasszikus szerkezetben egy közvetlen intézményi szülője van. A szülő nulla gyerekkel is megmaradhat, ha a követelmények ezt megengedik.

A PCR típust a részt vevő rekordtípusok és a szerepek azonosítják. A bemutatott hierarchikus jelölés nem ad külön SET-nevet az élnek úgy, mint a hálós modell. Az ábrán ezért a nyíl és a mezős dobozok szerepe a lényeg: szülőből vezet a gyerekhez.

Egy rekord egyszerre lehet gyerek és szülő. A MUHELY gyereke az INTEZMENY-nek, és szülője a FELADAT-nak. Ettől nem sérül az egyetlen közvetlen szülő szabálya: a rekord fölötti és alatti kapcsolatok más szerepet töltenek be.

Rekordtípusok hierarchiája
Rekordtípusok hierarchiájaAz INTEZMENY a gyökértípus. A MUHELY és SZERVEZETI_EGYSEG gyerekek; a MUHELY alatt FELADAT és IDOPONT található.INTEZMENYintezmeny_id, nevMUHELYmuhely_id, cimSZERVEZETI_EGYSEGegyseg_id, nevFELADATsorszam, szovegIDOPONTdatum, idotartam

Az INTEZMENY a gyökértípus. A MUHELY és SZERVEZETI_EGYSEG gyerekek; a MUHELY alatt FELADAT és IDOPONT található.

Kidolgozott példa · Szülő és gyerek szerep

A Robotépítés műhely az Innovációs központ egyik műhelye.

  1. Az Innovációs központ intézményrekord szülő.
  2. A Robotépítés műhelyrekord gyerek.
  3. A Robotépítéshez tartozó Szenzorvizsgálat feladatrekord még egy szinttel lejjebb található.
  4. A műhely a feladat felől nézve szülő, az intézmény felől nézve gyerek.

3. rész

Hierarchiadiagram és előfordulási fa

AlapfogalomA hierarchiadiagram a rekordtípusokat és megengedett kapcsolataikat mutatja. Az előfordulási fa egy konkrét gyökérrekord és konkrét leszármazottai együttese.

Egyetlen típusdiagramhoz több előfordulási fa tartozhat. Az I1 intézmény fája tartalmazhat két műhelyt, az I2 intézményé csak egyet. A gyökértípus azonos, de a gyökérrekordok különböznek. A rekordértékek és a gyerekek darabszáma előfordulásonként változhat.

A konkrét példafán I1 Innovációs központ gyerekei M101 Robotépítés, M103 3D-prototípus és S1 Laborcsoport. M101 alatt F1 Szenzorvizsgálat és F2 Hibakeresés, M103 alatt F3 Modelltervezés szerepel. Ebben a tanulási példában minden gyereknek pontosan egy tényleges szülője van.

A részfa egy kiválasztott csomópontból és valamennyi leszármazottjából áll. Az M101 részfája M101, F1 és F2 rekordot tartalmaz. Az I1 részfája a teljes előfordulási fa. A részfa fogalma fontos a bejárás és a törlési következmények megértéséhez.

A típusdiagramon egy FELADAT doboz jelenik meg, az előfordulási fán viszont több feladatrekord. A konkrét értékek nem új rekordtípusok. Ugyanígy egy második intézmény új gyökérelőfordulás, nem feltétlenül új típus.

Egy konkrét előfordulási fa
Egy konkrét előfordulási faA sorrend ebben a példában balról jobbra értelmezett: előbb M101 részfája, utána M103 részfája, végül S1.I1 · Innovációs központM101 · RobotépítésM103 · 3D-prototípusS1 · LaborcsoportF1 · SzenzorvizsgálatF2 · HibakeresésF3 · Modelltervezés

A sorrend ebben a példában balról jobbra értelmezett: előbb M101 részfája, utána M103 részfája, végül S1.

Típus és előfordulás
TípusdiagramKonkrét előfordulás
INTEZMENYI1: Innovációs központ
MUHELYM101: Robotépítés; M103: 3D-prototípus
FELADATF1: Szenzorvizsgálat; F2: Hibakeresés; F3: Modelltervezés
SZERVEZETI_EGYSEGS1: Laborcsoport

4. rész

Preorder bejárás és hierarchikus sorozat

AlapfogalomPreorder bejárásnál először az adott csomópontot dolgozzuk fel, majd gyerekeinek részfáit a rögzített sorrendben, ugyanezzel a szabállyal.

A fát lineáris sorozatként is felsorolhatjuk, ha egyértelmű bejárási rendet választunk. Preorder esetben előbb a szülő kerül sorra, és csak utána a leszármazottai. Minden gyerek teljes részfáját bejárjuk, mielőtt a következő testvérre térnénk.

A példafán a sorozat I1, M101, F1, F2, M103, F3, S1. Nem I1, M101, M103, S1, F1, F2, F3: az utóbbi szintenkénti felsorolás volna. A két eljárás ugyanazokat a csomópontokat, de más sorrendben járja be.

A sorozat értelmezéséhez szükséges a rekordtípus és a hierarchia szerkezeti leírása. Az önmagában felsorolt értékekből nem mindig állapítható meg egyértelműen, melyik csomópontnak ki a szülője. A típusjelzés, szint vagy más szerkezeti információ a rekordok jelentését is megőrzi.

A hierarchikus rekord fogalmát egyes rendszerek a gyökérből és alatta lévő szegmensekből álló teljes összetartozó egységre is használják. A tárolási vagy feldolgozási sorozat logikai magyarázat; nem állítjuk, hogy minden DBMS minden rekordot pontosan ilyen, egymás utáni fizikai bájtsorozatban tárol.

Próbáld ki a preorder bejárást!

A bejárás aktuális csomópontja
A bejárás aktuális csomópontjaA sárga csomópontot dolgozzuk fel. Minden csomópont után gyerekei teljes részfáit járjuk be sorban.I1 · Innovációs központM101 · RobotépítésM103 · 3D-prototípusS1 · LaborcsoportF1 · SzenzorvizsgálatF2 · HibakeresésF3 · Modelltervezés

A sárga csomópontot dolgozzuk fel. Minden csomópont után gyerekei teljes részfáit járjuk be sorban.

Még nem kezdtük el a bejárást.

A következő lépés a gyökérhez vezet.

Eddigi sorozat: —

Preorder – általános pszeudokód
bejár(csúcs):
  feldolgoz(csúcs)
  minden gyerekre a meghatározott sorrendben:
    bejár(gyerek)

5. rész

A klasszikus hierarchia szerkezeti szabályai

AlapfogalomKlasszikus hierarchiában a gyökér nem gyerek, minden más rekordtípusnak egy szülői típusa, minden nem gyökér előfordulásnak egy tényleges szülője van.

A gyökértípusból indul a hierarchia. Nem lehet ugyanennek a fának másik rekordtípusa alatt gyerekként megjeleníteni, mert ezzel megszűnne a gyökér szerepe vagy kör keletkezne. A leszármazási kapcsolatok nem térhetnek vissza saját ősükhöz.

Minden további rekordtípus gyerekként egyetlen PCR típushoz tartozik a klasszikus sémában. Ha FELADAT egyszerre MUHELY és OKTATO valódi gyereke volna, a típusdiagram már nem tiszta fa. Az, hogy egy feladatnak üzletileg felelőse is van, nem indokolja automatikusan két valódi szülő megrajzolását.

Egy szülőnek többféle gyerektípusa lehet: a műhelyhez feladatok és időpontok is kapcsolódhatnak. A gyerektípusok és előfordulások rendezett feldolgozási sorrendje a bejárást is meghatározza. A több gyerek önmagában nem teszi hálóssá a modellt.

A fa fő előnye az egyértelmű útvonal és az összetartozó adatok természetes csoportosítása. A korlát az, hogy önállóan tárolt adatot nem rendelhetünk két valódi szülőhöz ugyanabban a klasszikus fában. Ha ilyen igény van, más szerkezetet vagy kiterjesztést kell választani.

Szerkezeti ellenőrzőlista
KérdésTiszta fában elvárt válasz
Van gyökér?Igen; nincs fölötte szülő.
Hány valódi szülője van a nem gyökér csomópontnak?Pontosan egy.
Lehet több gyereke egy rekordnak?Igen.
Lehet saját őse egy rekord?Nem.
Lehet ugyanaz a konkrét rekord két ág közös valódi gyereke?Nem, a klasszikus fában ez több szülőt jelentene.

6. rész

M:N kapcsolat ismétléssel: a probléma és az ára

AlapfogalomHa ugyanazt az önálló adatot több szülő alatt külön példányokban tároljuk, a fa szerkezeti korlátját ismétléssel kerüljük meg, de redundanciát hozunk létre.

A M101 Robotépítés és M103 3D-prototípus is használ E1 multimétert. Ha a műhely alatt teljes ESZKOZ gyerekrekordot tárolunk, az E1 azonosítójú eszköz adatai mindkét ágban megjelennek. Két tárolt példány egyetlen valós eszközfajtát ír le.

Az ismétlés megőrzi a tiszta fát: minden tárolt példánynak egyetlen szülője van. Ugyanakkor a gyártó, megnevezés vagy karbantartási adat javítását több helyen kell elvégezni. Ha csak az egyik példányt módosítjuk, az adatbázis két eltérő leírást tartalmaz ugyanarról a dologról.

Az ismétlődő gyerek lehet a kapcsolat előfordulása is. Ha csak eszközazonosítót és használati darabszámot tárolunk, akkor nem a teljes eszközadatot másoljuk. Az eszköz részletes adatainak eléréséhez azonban továbbra is kell másik nyilvántartás vagy támogatott kapcsolat. Az azonosítót tartalmazó rekord és a teljes önálló eszközrekord nem ugyanaz.

A hierarchia megfordítása nem oldja meg az M:N jelentést általában. ESZKOZ gyökér alatt a műhelyek adatai ismétlődnének. A redundancia másik oldalra kerülhet, de nem tűnik el automatikusan. A hozzáférési igény és a központi törzsadatkezelés alapján kell dönteni.

Teljes eszközadatok másolásának következménye
ÁgTárolt névMódosítás után
M101 alatt E1Digitális multiméterÚj név: Precíziós multiméter
M103 alatt E1Digitális multiméterRégi név marad, ha nem frissítjük
KövetkezményUgyanaz az azonosító két névvelMódosítási anomália

7. rész

Virtuális szülő–gyerek kapcsolat: VPCR

AlapfogalomA VPCR egy mutatóval létrehozott virtuális kapcsolat. A virtuális gyereknek van valódi szülője a saját fájában, és egy másik rekordra mutat mint virtuális szülőre.

Az M:N igényre több hierarchia közötti kapcsolatot használhatunk, ha a DBMS ezt támogatja. Az egyik fában MUHELY alatt ESZKOZMUTATO rekordok vannak, egy másikban az ESZKOZ rekordok önálló gyökerek vagy saját hierarchia elemei. Az ESZKOZMUTATO az eszközrekordra mutat.

Az ESZKOZMUTATO valódi szülője a MUHELY. Virtuális szülője az a konkrét ESZKOZ, amelyre a mutatója irányul. A virtuális nyíl nem teszi az eszközt a műhelyfa második valódi szülőjévé. A valódi fa és a kiegészítő kapcsolati réteg együtt értelmezendő.

Több ESZKOZMUTATO utalhat ugyanarra az E1 rekordra, ezért az eszköz törzsadatait nem kell műhelyenként ismételni. M101 és M103 saját használati rekordjai különböznek, de mindkettőből ugyanahhoz az E1-hez jutunk. A használat darabszáma a mutatórekord saját adata lehet.

A virtuális kapcsolat külön támogatott mechanizmus, nem a klasszikus modell alapszabályainak elfelejtése. Egyes rendszerek logikai szülő és logikai gyerek terminológiát használnak. A jelentésnél azt kell követni, ki a fizikai vagy valódi szülő, és melyik rekordra vezet a kiegészítő kapcsolat.

Valódi PCR és virtuális VPCR
Valódi PCR és virtuális VPCRA folytonos nyíl MUHELY valódi szülőből ESZKOZMUTATO gyerekhez vezet. A szaggatott nyíl a gyerekből a hivatkozott ESZKOZ virtuális szülőre mutat.MUHELYmuhely_id, cimESZKOZMUTATOmutato E1-redarabszamESZKOZeszkoz_id, nevvalódi PCRVPCR: mutató az eszközre

A folytonos nyíl MUHELY valódi szülőből ESZKOZMUTATO gyerekhez vezet. A szaggatott nyíl a gyerekből a hivatkozott ESZKOZ virtuális szülőre mutat.

Kidolgozott példa · E1 egyszer tárolva

X1 az M101, X3 az M103 műhely gyereke; mindkettő E1-re mutat.

  1. X1 adata: mutató E1-re; darabszám 6.
  2. X3 adata: mutató E1-re; darabszám 2.
  3. E1 megnevezése egy központi eszközrekordban szerepel.
  4. A két darabszám nem redundáns másolat: két külön használat adata.

8. rész

Visszamutatók és virtuális testvérlánc

AlapfogalomA virtuális kapcsolatok visszirányú bejárását külön mutatók vagy más hozzáférési szerkezetek segíthetik; ez a kiterjesztés fizikai megvalósításának kérdése.

Az ESZKOZMUTATO → ESZKOZ irány a konkrét használatból gyors eszközelérést kínál. Fordított kérdés azonban az, hogy melyik műhelyek használják az E1 eszközt. Ehhez E1 felől a rá hivatkozó virtuális gyerekeket kell elérnünk.

Egy megoldásban az eszközrekord az első hivatkozó gyerekre mutat, a virtuális gyerekek pedig egymást összekapcsoló láncot alkotnak. A virtuális gyerekmutató az első elemre, a virtuális testvérmutató a következő elemre vezet. Ez a hálós fizikai láncolással rokon megvalósítási ötlet.

A visszamutató nem új üzleti kapcsolat: ugyanannak az eszközhasználatnak a másik irányú elérését támogatja. Ha a hivatkozó rekordot töröljük vagy átirányítjuk, a lánc összhangját is fenn kell tartani. Ennek kezelése rendszerfeladat vagy támogatott műveletsor.

Nem minden hierarchikus rendszer ugyanígy valósítja meg a virtuális kapcsolatok visszakeresését. A modell magyarázata ezért a szerepeket különíti el: a valódi fa szerkezete, az előre hivatkozás és az esetleges visszirányú elérés három egymáshoz kapcsolódó, de eltérő fogalom.

E1 használatainak fogalmi visszakeresése
ESZKOZ E1
→ első rá hivatkozó virtuális gyerek: X1
→ X1 valódi szülője: MUHELY M101
→ következő virtuális testvér: X3
→ X3 valódi szülője: MUHELY M103
→ nincs több hivatkozó gyerek

9. rész

Létezési és törlési integritás

AlapfogalomA hierarchikus integritás biztosítja, hogy a nem gyökér rekordokhoz érvényes szülő tartozzon, és a törlés ne hagyjon következetlen leszármazási vagy virtuális hivatkozásokat.

A klasszikus hierarchiában a gyerek nem létezhet valódi szülője nélkül. Új FELADAT rekordot ezért egy létező MUHELY alá szúrunk be. A gyökér létrehozása más helyzet: annak nem kell fölötte álló szülőrekord.

A valódi szülő törlése a bemutatott modellben a teljes alárendelt részfa törlésével jár. M101 törlése F1 és F2 feladatot is érinti. Egy gyerek önálló törlése nem törli automatikusan a szülőjét vagy testvéreit. A konkrét rendszer API-jának törlési szabályait ettől még ismerni kell.

A virtuális szülő törlése más kérdés. E1 központi eszközrekordot nem törölhetjük úgy, hogy X1 és X3 továbbra is érvénytelen mutatót tartalmazzon. Lehetséges szabály a törlés tiltása addig, amíg hivatkozó virtuális gyerek létezik, vagy a hivatkozások támogatott rendezése a törlés előtt.

Ha M101 törlése X1 virtuális gyereket is törli, az E1 eszköz ettől még megmarad: nem M101 valódi leszármazottja. A két törlési hatást külön kell követni. A hierarchikus életciklus és a virtuális kapcsolatok integritása együtt ad következetes adatállapotot.

Mi történik törléskor a példában?
Törölt elemÉrintett elemekElvárt következmény
M101 műhelyF1, F2, X1 valódi leszármazottakA részfa kezelése a hierarchikus törlési szabály szerint.
F1 feladatCsak F1 saját részfájaM101 és F2 megmarad.
X1 használati mutatóM101–E1 kapcsolat ezen előfordulásaE1 megmarad; visszamutató láncot rendezni kell.
E1 eszközX1 és X3 hivatkozásokNe maradjanak érvénytelen virtuális mutatók.

10. rész

ER–hierarchikus leképezés: az első fázis

AlapfogalomA leképezés első fázisa az ER-modell kapcsolatait rekordtípusokra és kapcsolat-előfordulásokra bontja; ez átmenetileg több szülőt igénylő szerkezetet eredményezhet.

Először minden egyedtípushoz rekordtípust rendelünk. Az 1:N kapcsolatból szülő–gyerek kapcsolat képezhető, az 1 oldal szülőként szerepel. Az 1:1 kapcsolathoz megfelelő szülőválasztás és a legfeljebb egy gyerek korlát megőrzése szükséges.

Az M:N kapcsolatból köztes kapcsolórekordot készítünk. A MUHELY és ESZKOZ közötti HASZNALAT mindkét résztvevőhöz kapcsolódik. Ebben az átmeneti lépésben a kapcsolórekordnak két lehetséges szülője van, tehát a szerkezet még nem érvényes klasszikus fa.

Többágú kapcsolatnál a köztes rekord minden résztvevőhöz kapcsolódik. A raktári kiadásnak műhely-, anyag- és raktárszerepe van. Az első fázis célja, hogy a kapcsolat jelentése és attribútumai ne vesszenek el; a fa korlátjához igazítást ezután végezzük.

A rekordtípusok átnevezése vagy az egyik nyíl elhagyása nem megfelelő javítás, ha az eredeti kapcsolat jelentése eltűnik. Az átmeneti szerkezetet úgy alakítjuk át, hogy a másik szereplő elérhetősége és a kapcsolat saját adatai is megmaradjanak.

Első fázis
ER-elemÁtmeneti rekordstruktúra
EgyedtípusRekordtípus.
1:N kapcsolatSzülő–gyerek szerkezet, 1 oldali szülővel.
1:1 kapcsolatSzülő–gyerek szerkezet külön maximumkorláttal.
M:N kapcsolatKapcsolórekord két résztvevőhöz kapcsolva.
Többágú kapcsolatKapcsolórekord az összes résztvevőhöz kapcsolva.

11. rész

A második fázis: valódi és virtuális szülő kijelölése

AlapfogalomA második fázisban a több szülőt igénylő köztes rekordnál egy valódi szülőt választunk, a többi kapcsolatot támogatott virtuális hivatkozásként őrizzük meg.

A HASZNALAT köztes rekordnál a műhelyt választjuk valódi szülőnek. A rekord neve lehet ESZKOZMUTATO, és a MUHELY alatt tároljuk. Az eszköz külön hierarchiában marad; a köztes rekord rá mutat. Ezzel a műhelyfa minden elemének egyetlen valódi szülője van.

A választást a gyakori hozzáférési feladatok is befolyásolják. Ha többnyire egy műhely teljes eszközlistáját olvassuk, természetes a műhelyből lefelé haladás. Ha az eszközök terhelése az elsődleges feladat, fordított szervezés vagy megfelelő visszirányú elérés is szükséges lehet.

A köztes rekord nemcsak mutatót, hanem a kapcsolat saját adatait is tartalmazza: darabszámot, időszakot vagy megjegyzést. Ezek a valódi és virtuális szülő együttese által meghatározott kapcsolat-előfordulás adatai, nem kizárólag egyik szülőé.

A második fázis végén ellenőrizzük a valódi fák szabályait és az összes virtuális hivatkozást. Minden köztes rekordnak legyen valódi szülője, minden kötelező mutató érvényes célra vezessen, és az eredeti kapcsolatokhoz tartozó attribútumok megfelelő helyen maradjanak.

Kidolgozott példa · A köztes HASZNALAT átalakítása

MUHELY és ESZKOZ egyaránt kapcsolódik HASZNALAT-hoz.

  1. MUHELY lesz a valódi szülő.
  2. HASZNALAT-ból ESZKOZMUTATO gyerekrekordot készítünk.
  3. Az ESZKOZ rekord önálló hierarchiában marad.
  4. Az ESZKOZMUTATO mutatója az ESZKOZ-ra vezet; a darabszám a mutatórekordban marad.
  5. A valódi MUHELY-fa és a virtuális hivatkozás együtt őrzi az eredeti M:N kapcsolatot.

12. rész

Többágú kapcsolatok: a közös előfordulás megőrzése

AlapfogalomTöbbágú kapcsolat hierarchikus leképezésénél az egyetlen valódi szülő alá kerülő kapcsolati előfordulásnak a többi résztvevővel is egyértelműen összekapcsolhatónak kell maradnia.

A KIADAS kapcsolat MUHELY, ANYAG és RAKTAR szereplőket kapcsol össze. A MUHELY alatt tárolt kiadási gyerekrekord hordozhatja a kiadás azonosítóját, dátumát és mennyiségét. Az anyagra és raktárra kiegészítő hivatkozások vezetnek.

Ha a használt virtuális gyerek szerkezet egyetlen virtuális szülőmutatót enged, a többi szereplőhöz tartozó mutatókat külön, alárendelt rekordokkal oldhatjuk meg. A KIADAS alatt ANYAGMUTATO és RAKTARMUTATO gyerek kerülhet, mindkettő saját virtuális szülőre mutat. A kiadási azonosító és a közös valódi ős megőrzi az összetartozást.

Nem lehet a mennyiséget egymástól függetlenül az anyagmutató és raktármutató mellé másolni úgy, hogy később két eltérő érték jöhessen létre. A mennyiség a közös kiadási esemény adata. Az alárendelt mutatók résztvevőket választanak ki, nem külön kiadási eseményeket jelentenek.

A konkrét szerkezet rendszerfüggő; a példában egyértelmű, több szintű megoldást használunk. A fontos ellenőrzés az, hogy a műhely, anyag, raktár és mennyiség egyetlen kiadási előfordulásként rekonstruálható legyen.

Háromszereplős kiadás hierarchikus változata
Háromszereplős kiadás hierarchikus változataMUHELY alatt KIADAS, az alatt két valódi mutatógyerek található. A két szaggatott hivatkozás ANYAG és RAKTAR önálló rekordjára vezet.MUHELYmuhely_idKIADASkiadas_id, datummennyisegANYAGMUTATOmutato A8-raRAKTARMUTATOmutato R2-reANYAGanyag_id, nevRAKTARraktar_id, nevVPCRVPCR

MUHELY alatt KIADAS, az alatt két valódi mutatógyerek található. A két szaggatott hivatkozás ANYAG és RAKTAR önálló rekordjára vezet.

Egy kiadás adattartalma

K41: MUHELY M101 valódi gyereke; dátum és 12 méter mennyiség.

K41 alatt AM41: virtuális hivatkozás A8 anyagra.

K41 alatt RM41: virtuális hivatkozás R2 raktárra.

A két mutató ugyanahhoz a K41 eseményhez tartozik.

13. rész

Összetett példa és ellenőrzési munkamenet

AlapfogalomA hierarchikus terv helyességét a valódi fák és a kiegészítő hivatkozások külön, majd együttes vizsgálatával ellenőrizzük.

Az intézményhez műhelyek tartoznak, a műhelyhez feladatok és eszközhasználatok. A feladatok a műhely saját részei, az eszközök viszont több műhelyben használt törzsadatok. Ezért a FELADAT valódi gyerek, az ESZKOZ pedig külön nyilvántartás, amelyre ESZKOZMUTATO vezet.

A típusdiagramon először csak a valódi éleket vizsgáljuk. A gyökérből minden csomóponthoz egyetlen út vezet; nem lehet két valódi szülő vagy kör. Ezután hozzáadjuk a virtuális nyilakat, és külön megvizsgáljuk a célok létezését és a visszirányú használat igényét.

A konkrét előfordulásokban a műhelyből egyszerűen felsorolhatók a feladatok és használati mutatók. A műhely teljes részfájának törlésekor a mutatók megszűnnek, az önálló eszközadatok azonban megmaradnak. Az eszköz törlése viszont csak a rá mutató rekordok figyelembevételével rendezhető.

A megoldás előnye, hogy a műhelyhez tartozó helyi adatok együtt vannak, miközben a közös törzsadat nem másolódik. Az ára a virtuális kapcsolatok és életciklus-szabályok kezelése. A modell akkor használható jól, ha a tervezett hozzáférési utak és a rendszer képességei összhangban vannak.

Lépésenkénti modellvizsgálat
LépésEllenőrzés
1. Valódi faGyökér, egyetlen szülő, nincs kör.
2. Helyi adatokA feladat a saját műhelyéhez tartozik.
3. Közös törzsadatAz eszköz egyszer tárolt önálló adat.
4. Virtuális kapcsolatMinden használati mutató létező eszközt ér el.
5. TörlésA részfa és a külső hivatkozások hatása rendezett.
6. VisszaállításAz eredeti ER-kapcsolatok és attribútumok rekonstruálhatók.

14. rész

Hierarchikus rendszerek és navigáció

AlapfogalomA hierarchikus DBMS a fa szerkezetét és a támogatott logikai kapcsolatait használja az adatok elérésére; az IMS ilyen rendszerek ismert képviselője.

Az IMS terminológiájában a nyilvántartott elem gyakran szegmens, a gyökérszegmens és leszármazottai pedig egy adatbázisrekord összetartozó részei. A fizikai szülő–gyerek kapcsolat a valódi hierarchiát írja le, a logikai kapcsolat további elérési útvonalat biztosíthat. Ezeket a kifejezéseket mindig az adott rendszer értelmében kell használni.

Az adatbázis definíciója nemcsak logikai szerkezetet, hanem az adott megvalósításhoz szükséges elérési és tárolási leírásokat is tartalmazhat. A gyökérszegmensek elérése történhet külön keresési szerkezetekkel. A gyökér megtalálása után a program a hierarchia mentén navigál.

A GET UNIQUE jellegű művelet meghatározott szegmenst keres, a GET NEXT jellegű művelet a bejárás következő szegmensét éri el. Az INSERT, REPLACE és DELETE létrehozást, módosítást és törlést végezhet. A NEXT általános parancsnál nem egyszerűen mindig „a következő mélyebb szint” értendő: a navigáció típusát és feltételeit a rendszer határozza meg.

A hierarchikus modell jól illeszkedhet természetesen fás adatokhoz és ismert bejárási mintákhoz. Sok M:N kapcsolatnál azonban a többszörös tárolás vagy a kiegészítő logikai kapcsolatok bonyolíthatják a tervet. A modell alkalmasságáról a konkrét szerkezet és terhelés alapján döntünk, nem pusztán történeti életkora miatt.

Fogalmi műveletek
MűveletFeladat
GET UNIQUEA feltételeknek megfelelő meghatározott szegmens elérése.
GET NEXTA rendszer navigációs rendjének megfelelő következő szegmens.
INSERTÚj szegmens beszúrása szabályos helyre.
REPLACEA kiválasztott szegmens módosított adatainak visszaírása.
DELETESzegmens törlése a kapcsolati szabályok figyelembevételével.

Ö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. Mi a klasszikus hierarchia legfontosabb szülőszabálya?

A gyökérnek nincs szülője; minden további konkrét rekordnak egyetlen valódi közvetlen szülője van.

2. Miért nem öröklés az INTEZMENY–MUHELY kapcsolat?

Az intézmény és műhely két külön valós elem. A műhely nem az intézmény egy fajtája, hanem hozzá kapcsolódó gyerekrekord.

3. Mit jelöl a PCR?

A Parent–Child Relationship szülő–gyerek kapcsolatot, amelynek előfordulásában egy szülőhöz nulla vagy több gyerek tartozik.

4. Lehet egy rekord egyszerre szülő és gyerek?

Igen. A MUHELY az intézmény gyereke, a feladatok szülője. Ettől egy közvetlen szülője marad.

5. Mi a különbség a hierarchiadiagram és az előfordulási fa között?

Az első a típusokat és megengedett kapcsolataikat, a második konkrét rekordokat és kapcsolataikat mutatja.

6. Add meg a példafa preorder sorozatát!

I1, M101, F1, F2, M103, F3, S1. Minden csomópont után teljes gyerekrészfáit járjuk be sorban.

7. Miért hibás preorder sorozat az I1, M101, M103, S1, F1, F2, F3?

Ez szintenkénti felsorolás. Preorder esetén M101 után előbb F1 és F2 következik, csak azután a következő testvér M103.

8. Mi az M101 részfája a konkrét példában?

M101 és minden leszármazottja: F1 és F2. A szomszédos M103 ág nem része.

9. Mi a teljes eszközrekord műhelyenkénti másolásának veszélye?

Az önálló eszközadat több helyen szerepel, és a példányok módosításkor eltérhetnek. Redundancia és módosítási anomália keletkezhet.

10. Ki a virtuális gyerek valódi szülője a példában?

Az ESZKOZMUTATO valódi szülője a MUHELY. A mutató által elért ESZKOZ a virtuális szülő.

11. Megmarad-e E1, ha M101 műhely és X1 mutatógyereke törlődik?

A szerkezet szerint igen: E1 külön nyilvántartásban tárolt eszköz, nem M101 valódi leszármazottja. A hivatkozási és visszamutató szerkezetet rendezni kell.

12. Törölhető-e E1 úgy, hogy X1 és X3 érvénytelen mutatóval maradjon?

Nem következetes megoldás. A törlést tiltani kell vagy a hivatkozásokat a támogatott szabály szerint előbb rendezni.

13. Miért kerül a darabszám az ESZKOZMUTATO rekordba?

Mert az adott műhely és eszköz használati kapcsolatának adata; műhelyenként eltérhet ugyanahhoz az eszközhöz.

14. Érvényes kész hierarchia a két valódi szülőjű HASZNALAT rekord?

A klasszikus szabály szerint nem. Ez lehet átmeneti leképezési ábra, amelyet egy valódi és egy virtuális szülőre kell átalakítani.

15. Mit őriz meg a KIADAS közös előfordulása?

Az adott műhely, anyag, raktár és kiadási mennyiség összetartozását. Az egymástól független párkapcsolatok ezt nem feltétlenül adják vissza.

16. Mit jelent a szegmens IMS környezetben?

A hierarchikus adatszerkezet egy elemét. A gyökérszegmens és az alatta lévő szegmensek egy összetartozó adatbázisrekordot alkothatnak.

Összetett gyakorlófeladatok

1. gyakorlófeladat: építs és járj be egy fát!

P1 programhoz M1 és M2 műhely tartozik ebben a sorrendben. M1 feladatai F1 és F2; M2 feladata F3. P1 alatt a műhelyek után egy K1 kapcsolattartó-rekord is szerepel.

  1. Nevezd meg a gyökeret, a szülőket és a leveleket!
  2. Add meg a preorder sorozatot!
  3. Add meg M1 részfáját!
  4. Mondd meg, mi marad meg M1 részfájának törlése után!
Részletes mintamegoldás és indoklás
  1. Gyökér P1. M1 és M2 gyerekek, és egyben feladataik szülői. Levelek F1, F2, F3 és K1.
  2. Preorder: P1, M1, F1, F2, M2, F3, K1.
  3. M1 részfája: M1, F1, F2.
  4. P1, M2, F3 és K1 megmarad. A külső hivatkozásokat külön ellenőrizni kell, ha vannak.

2. gyakorlófeladat: alakíts M:N kapcsolatot VPCR-ré!

M1 és M2 ugyanazt az E7 mérőeszközt használja. M1-nél 4, M2-nél 2 darab a használati igény. Az eszköz nevét egyszer akarjuk tárolni.

  1. Válassz valódi szülőt a használati rekordoknak!
  2. Add meg a két mutatórekordot és a virtuális céljukat!
  3. Helyezd el a neveket és darabszámokat!
  4. Fogalmazd meg az E7 törlését védő szabályt!
Részletes mintamegoldás és indoklás
  1. A használati rekordok valódi szülői a műhelyek. E7 külön eszközhierarchiában szerepel.
  2. X1 M1 gyereke, E7-re mutat. X2 M2 gyereke, szintén E7-re mutat.
  3. E7 neve az ESZKOZ rekordban van. X1 darabszáma 4, X2-é 2; ezek két külön kapcsolat saját adatai.
  4. Ne maradjon E7-re mutató érvénytelen rekord. Törlés előtt tiltással vagy támogatott hivatkozásrendezéssel biztosítsuk az integritást.

3. gyakorlófeladat: ellenőrizd a hibás hierarchiát!

Egy terv szerint FELADAT valódi gyereke MUHELY-nek és MENTOR-nak is. A mentor törlése minden műhelyt is törölne, mert a rajzoló minden kapcsolatot leszármazási élnek tekintett.

  1. Mi a szerkezeti hiba?
  2. Hogyan választható külön az összetartozás és a felelősi kapcsolat?
  3. Miért nem helyes a teljes műhelyállomány törlése?
  4. Milyen ellenőrzéseket végzel a javított terven?
Részletes mintamegoldás és indoklás
  1. A FELADAT két valódi szülőt kap, ami sérti a klasszikus hierarchiát.
  2. FELADAT lehet MUHELY valódi gyereke, a felelős MENTOR felé pedig támogatott virtuális kapcsolat vezethet. A MENTOR külön hierarchiában marad.
  3. A virtuális vagy felelősi kapcsolat nem teszi a műhelyeket a mentor valódi leszármazottaivá. A hivatkozási hatást és a valódi fa szerinti törlést külön kell meghatározni.
  4. Egyetlen valódi szülő minden nem gyökér rekordnál; nincs kör; érvényes mentorhivatkozások; megfelelő részfatörlés; a feladat jelentése és saját adatai megmaradnak.

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!