Informatika | Adatbázisok » Az adatmodellezés alapfogalmai

Alapadatok

Év, oldalszám:2004, 46 oldal

Nyelv:magyar

Letöltések száma:202

Feltöltve:2012. május 05.

Méret:550 KB

Intézmény:
-

Megjegyzés:

Csatolmány:-

Letöltés PDF-ben:Kérlek jelentkezz be!



Értékelések

Nincs még értékelés. Legyél Te az első!


Tartalmi kivonat

Adatmodellezés alapfogalmai: információ: aminek van hírértéke, pl: sivatagban esik; alapegysége: bit pl: pénzfeldobás: fej vagy írás? ez 1 biten eltárolható – ehhez köthető bináris számrendszer, a gépek nyelve (feszültség megléte vagy nemléte). 1 bit 1 infó, 2 bit 4 infó 8 bit 256 adat: információ leírt, rögzített változata, szgépen: tárolt infók (valós világ modellezése) adatmodell: olyan koncepciók gyűjteménye, amelyek egy adatbázis szerkezetét egyértelműen leírják. Szerkezeten az adatbázis típusát, adatok kapcsolatát, adatok bevitelét, módosítását, törlését, lekérdezését értjük. adatbázis: egy megvalóstott adatmodell, amely tartalmazza az adatok típusát, kapcsolatokat leíró, ún. metaadatokat Ehhez van szükség: • DDL-re (Data Definition Language): adatszerkezet leíró nyelvre • SDL-re (Storage Descriptions Language): fizikai szerkezetet leíró nyelvre • DML-re (Data Manipulation Language): tárolt adatok

visszakeresését támogató nyelvre Egy adott szakterület jellemző adatait tárolja az adatbázis valamiféle rendezőelv szerint (visszakeresés miatt). Adattárolás során 1re többen táblázatos formában gondolkodnak Pl: ALKALMAZOTT azonosító név cím fkód foglalkozás 17211 Hapci B. Erdő fasor 3 bm bányamérnök 17012 Kuka K. Bánya köz 11 va vájár 16780 Vidor B. Kőomlás tér 1 va vájár 27407 Hófehér T. Boszorka dűlő 2 bm bányamérnök Fölösleges ismétlődés: redundancia – fölösleges (redundáns) tároláshoz vezet. Emellett bővítési, módosítási és törlési anomáliát is okozhat. PL: bővítési anomália: azonosító név cím fkód foglalkozás 17211 Hapci B. Erdő fasor 3 bm bányamérnök 17012 Kuka K. Bánya köz 11 va vájár 16780 Vidor B. Kőomlás tér 1 va vájár ? ? ? ke kőellenőrző 27407 Hófehér T. Boszorka dűlő 2 bm bányamérnök Mező mindaddig üres marad, amíg ilyen foglalkozású dolgozót fel nem vesznek.

Törlési anomália: Ha Kuka K. és Vidor B kilép, megszűnnek vájár foglalkozásra vonatkozó adatok. Módosítási anomália: ha a vájárt vájárfőnökre módosítom, akkor foglalkozás oszlopban több helyen is meg kéne változtatni értéket. Megoldás: szétbontás 2 táblázatra, így a redundancia csökken, mivel foglalkozásneveket csak 1 szer kell tárolni, és a két tábla kapcsolatban marad FKÓD oszloppal. (RAJZ) Emellett bővítési, törlési és módosítási anomáliák is megszűnnek. Feldolgozáskor azonban a táblázatokat össze kell rakni! Adatmodellezés szintjei: • külső szint: leírja, hogyan látják az egyes felhasználók az adatbázist • középső vagy koncepcionális szint: teljes adatbázis szerkezetét leírja (kapcsolatokat is) • belső vagy fizikai szint: leírja az adatok fizikai elhelyezését és elérési módjait Adatbázis-tervezés fázisai: 1. fázis: igények összegyűjtése és elemzése 2. fázis: koncepcionális terv

elkészítése (ab.kezelő rsz független) (=DBMS) Adatigények Műveletigények Koncepcionális séma Tranzakciók leírása (pszeudokód) (magas szintű modell) 3. fázis: DBMS típusának kiválasztása 4. fázis: leképezés (DBMS függő) logikai séma (alacsony szintű modell) 5. fázis: fizikai tervezés belső séma (fizikai szerkezetek, hozzáférési módok) 6. fázis: megvalósítás DDL és SDL nyelvi leírás (konkrét DBMS) Tranzakciók kódja 2.: adatokat igények szt csoportosítjuk, egyes csop-ok között feltárjuk összefüggéseket – kialakítjuk ab. magas szintű modelljét 5: igények + konkrét ab-kezelő szoftver ismeretében megtervezzük adattárolási szerkezeteket és hozzáférési módokat (faszerk, indexelt) + előre tervezhető ab-kezelő műveletek (lekérdezés, tranzakció) sémáit 6: létrehoz, felhasználóbaráttá tesz, feltölt adatokkal Az adatmodellezés elemei: magas szintű modell: ER-modell (Entity-Relationship Model),

EER-modell (Enchanced ER) koncepcionális modell – fonots szerep abtervezésben koncepcionális sémák magukban foglalják: az egyes adattípusokat, azok jellemzőit, köztük fennálló kapcsolatokat és korlátozásokat; szemléletes formában, ábrákkal mutatják be a létrehozandó adatbázis logikai felépítését úgy, hogy nélkülözik a konkrét megvalósítás során felhasználandó speciális eszközöket. ER-modell: egyszerű, szemléletes ábrával mutatja be a valóság azon kis darabját, amit modellezni akarunk. Mielőtt részletesebben megnéznénk milyen elemekből épül fel ERmodell, nézzünk egy példát: 2 anyagkód anyagnév ALAPANYAG M 1 főre mennyiség -BÓL KÉSZÜL AZ ételnév ételkód N 2 főre fehérje energia összidő ÉTEL szénhidrát zsír M készítési részidő lépés KELL HOZZÁ lépésszám eszközkód N eszköznév ESZKÖZ ER-modell felépítését tekintve egyedtípusokból, a köztük lévő kapcsolatokból és

az egyes egyedtípusokhoz tartozó attribútumokból épül fel. Egy bizonyos egyedtípushoz tartozó konkrét egyedeket egyedelőfordulásoknak nevezzük. Tervező feladata modellalkotás során, hogy felhasználó által támasztott igényeket figyelembe véve, az egyedtípusok kialakítása és megfelelő attribútumokkal való ellátása, valamint a köztük lévő kapcsolatok pontos feltérképezése – modell rajzolása. Magas szintű modellből alacsony szintű modellt kül. leképezési szabályokkal készíthetünk, amely szabályok ezt a folyamatot szinte automatikussá teszik, később megismerkedünk ezekkel. EGYEDTÍPUS: világ 1 kis darabját szeretnénk modellezni, és az ebben előforduló adatokat tárolni. Az egyedtípusok ennek az elméleti modellnek az építőkövei Ezeknek az elemeknek megvannak a saját, jellemző tulajdonságaik (attribútumok). Ezek közül lényeges eldöntése: mire akarjuk ab-t használni. Elemeket egymás mellé rakjuk és kapcsolatba

hozzuk őket Az egyedtípusok a modellezni kívánt világ 1-1 közös tulajdonságokkal jellemezhető és egymástól egyértelműen elkülöníthető kisebb csoportjai (halmazai), melyek tartalmazzák a valós előfordulásokat (egyedeket). 1-1- halmazba tartozik: meghatározott feltételnek eleget tesz egyedtípus lehet: élő, élettelen, tárgyi, fogalmi jellegű; beszédes nevű, ált. 1 szóból áll, egyes számú főnevek ált. SPORTOLÓ, VERSENYSZÁM, SZPONZOR, HELYSZÍN, IDŐPONT 3 ATTRIBÚTUM: egyes egyedtípusokat jellemző tulajdonságok (HÁZ: alapterület, emeletek száma, típusa, színe, miből készült) egyszavas, beszédes nevek Meghatározott értékeket vehetnek fel – értelmezési tartományuk mindig adott (alapter:pozitív) Adott attribútumhoz értéket véges vagy végtelen lehetőségek közül választhatunk (alapter:végtelen sokféle, emelet: max. 200, lehet kétértékű attrib is) csoportosítás: • egyszerű: kisebb 1ségre nem osztható

(magasság) összetett: további kisebb 1ségekre osztható (lakcím) • egyértékű: egyetlen értéket vehet fel (magasság) többértékű: egy egyed esetében több értéket vehet fel • forrás: azok, melyek ahhoz szükségesek, hogy a származtatott attribot kiszámoljunk származtatott: amit forrásból ki lehet számítani (hotelben hány napot tölt vki) kulcs-attribútum: egyedtípus létrehozásakor fontos meghatározása: egyértelműen azonosítja az egyedet, vagyis 1 konkrét egyedet különböztet meg a többitől (személyi szám). Fontos ennek kiválasztása. Ha nincs olyan attrib, ami 1értelműen azonosít és több attrib kombinálásával sem áll elő, akkor tervezőnek kell létrehozni ilyen mezőt (azonosító), lehet összetett kulcs is Pl: SZPONZOR: cégnév, cégjelleg +törzsszám v. telephely cégnévhez SPORTOLÓ: név, szigszám, életkor, magasság, súly, érmak, egyesület HELYSZÍN: város IDŐPONT: időpont VERSENYSZÁM: versenyszámnév,

magyarcsúcs, világcsúcs, eurocsúcs, olimpiacsúcs eredmény: SPORTOLÓ+HELYSZÍN+IDŐPONT összeg: SZPONZOR+SPORTOLÓ Kulcs+állapítás!!! attribútum lehetne egyedtípus, csak akkor áttekinthetetlen lenne ER-modell! HELYSZÍN+IDŐPONT miért kell? ha attrib lenne, nem lett vne olyan egyedtípus, ill. egyedtípusok kapcsolata, amelyhez az eredmény attribútumot rendelhettük vna GYENGE EGYEDTÍPUS egyedtípus spec. változata: nincs olyan attribja, amelyet kulcsként hazsnálhatnánk + létezik egy vele kapcsolatban lévő egyedtípusok közül legalább 1, amellyel való kapcsolata révén a gyenge egyedtípus egyedeit azonosítani lehet, (lehet több egyedtípussal való kapcsolat is azonosító) gyenge egyed azonosítását biztosító egyedtípusokat a gyenge egyedtípus szülő egyedtípusának is nevezhetjük, a szülő és gyenge egyedtípus között fennálló kapcsolatot pedig azonosító kapcsolatnak van parciális kulcsa, amely szülőn belül azonosítja gyenge

egyedet 1értelmű azonosítás: 1 vagy több szülő kulcsattribja + gyenge egyed parciális kulcsa PL: akvárium, amiben több személy hala van, feltétel: több hal is lehet azonos nevű, ha gazdája más, de tulajok között nincs azonos nevű: TULAJDONOS tulajnév HAL halnév KAPCSOLATTÍPUSOK Akkor mondjuk, hogy 2 vagy több egyed kapcsolatban van egymással, ha létezik egy olyan, a feladat szempontjából fontos rendezőelv, mely az egyedtípusok egyedeit egymáshoz rendeli. Nem szükséges 1 egyedtípusnak összes többivel kapcsolatban lennie, előfordulhat azonban, hogy két egyedtípus között több, kül. típusú kapcs fedezhető fel Pl: SPORTOLÓ–SZPONZOR: Ki támogatja? SPORTOLÓ–VERSENYSZÁM: Milyen versenyszámban versenyez? SPORTOLÓ+HELYSZÍN+IDŐPONT közti kapcsolat adja meg egy sportló adott versenyszámban valamely időpontban és helyszínen elért eredményét Mely adatok közt áll fenn kapcs? ezt felhasználói (adat- és feldolgozási) igények

szablyák meg. 4 kapcsolat azonosítása: névvel, ált. 1 szóból (ige) állnak, kapcs kialakításának alapjára utalnak (S-SZ KI TÁMOGATJA, S-VSZ MIBEN, S-H-I VERSENYEZ) Fontos jellemzője: kapcsolat fokszáma – pozitív egész szám, amely megadja, hogy a kapcsolatban hány egyedtípus vesz részt (KI TÁMOGATJA, MIBEN = 2 biner, VERSENYEZ=3 terner) 2nél magasabb fokszámú kapcsolatot N-ágú kapcsolatnak hívjuk. szemléltetés: ún. „tojásdiagranmmokkal”, 1 kapcs=1 különálló diagram ábrázoláshoz ellipszist használnak, amelyek száma a kapcs. fokszámánál eggyel több Ez azért van, mert egyedtípus és kapcsolat is ellipszissel van jelölve! Egyedtípushoz tartozó egyedeket teljesség igénye nélkül a megfelelő ellipszisbe írjuk a kapcsolatot vonallal jelöljük, amely áthalad a kapcsolatot jelképező ellipszisen. Ellipszis fölé kapcsolat ill egyedtípus nevét írjuk. PL: (emberek házhoz való viszonya) HÁZ LAKIK EMBER h1 h2 h3 l1

l2 l3 l4 l5 l6 e1 e2 e3 e4 e5 e6 biner kapcs., EGYEDTÍPUS: ház, lakik, KAPCSOLAT: lakik, h1,h2,h3 Ház egyedtípus egyedeit jelölik egyedtípusokat összekötő kapcsolatokat különböző szempontok alapján lehet csoportosítani: • egyed kapcsolatban veló részvétele alapján: o teljes: egy kapcsban lévő egyedtípus minden egyede valóban részt vesz a kapcsolatban, azaz minden egyed kapcsolatban van legalább egy másik egyeddel o részleges: vmely egyedtípus előfordulása nem létesít kapcsolatot egyetlen másik egyeddel sem (minden gazdinak van kutyája (teljes), de nem minden kutyának van gazdija (részleges)) • egy adott egyedtípushoz tartozó egyed alapján (azaz egy egyed hány másik egyedtípushoz tartozó egyeddel van kapcsolatban): o 1:1 kapcsolat: ha a kapcsolatban résztvevő egyedek legfeljebb 1 másik egyedtípusbeli egyeddel létesítenek kapcsolatot (versenyző, kap rajtszám) o 1:N kapcs: az egyik oldal egyedei legfeljebb egy

másik oldalbeli egyeddel létesítenek kapcsolatot, míg a másik oldal előfordulásai között biztosan van legalább 1 olyan egyed, amely több előző oldalbeli egyeddel van kapcsolatban (festő, alkotta, mű – tojásdiagrammal is) o M:N: mindkét oldal tartalmaz legalább 1 olyan egyedet, amely több másik oldalbeli előfordulással van kapcsolatban (zenekar, játszik, zenész) 5 Logikai (implemetációs) adatmodellek: 1. Hierarchikus adatmodell: azért hozták létre, hogy könnyebben és szemléletesebben tudják bemutatni a valóságban előforduló kül. rendszerek szerkezeti felépítését Közvetlen és természetes módon ábrázolja a hierarchikus szerkezetek egymással alá és fölé rendezettségi viszonyban lévő elemeit. Adatokat faszerkezetben tárolja, a különböző szinteken lévő csomópontok között szülőgyerek kapcsolat van, adatfeldolgozási műveletek=fa-struktúrák bejárása, az adatstruktúra elemei (rekordok) mutatókon keresztül vannak

fizikai kapcsolatban A hierarchikus modell használatához nélkülözhetetlen a rekord, valamint a szülő-gyerek (Parent-Child Relationship) fogalmának ismerete. Rekord: egy egyedhez tartozó mezők értékeinek összességét tartalmazza. Az azonos típusú rekordok csoportját rekordtípusnak nevezzük, ennek azonosító nevet kell adni. A rekordok szerkezetét a benne lévő mezők adják meg. PCR: két rekord között fennálló 1:N kapcsolat. Az 1-oldal a szülő rekordtípus, az N-oldal pedig a gyerek rekordtípus, ezeknek nincs nevük. Hierarchikus modell ábrázolása: Bachmann-diagrammal vagy faszerkezettel Bachmann-diagramm: rekordtípusok=téglalap, aminek a felső része a rekordtípus neve, alsó részében pedig a mezőnevek vannak, PCR kapcsolat nyíllal jelölve: ISKOLA név, cím, igazgató TANÁR név, szsz, szül, cím TANTÁRGY név, tanterem ISKOLA Faszerkezet: név, cím, igazgató TANÁR név, szsz, szül, cím TANTÁRGY név, tanterem A hierarchikus

modell lényegében egy faszerkezet, csak itt rekordtípusról és PCR típusról beszélünk, csomópontokról és ágak helyett. Különbség: ágak nem kapcsolódnak össze Előfordulási diagramm: Minden hierarchia-diagramm ún. hierarchikus előfordulásból áll, amelyet előfordulási fával ábrázolnak. Minden csomópont megfeleltethető egy rekord előfordulásnak, és minden ág egy PCR kapcsolatot jelképez. Az előfordulási fa áll: egy gyökérből, annak gyerekeiből, valamint a gyerekek gyerekeiből. (Tárolási struktúra: rekordok lineáris elrendezése a fa preorder bejárása szerint.) Hierarchikus modell tulajdonságai: Kizárólag 1:1 és 1:N kapcsolat megvalósítását engedélyezi ez a modell. Továbbá: a gyökér nem vehet részt gyerekként PCR típusban, minden rekordtípus – kivéve gyökér – gyerekként pontosan 1 PCR típusban vehet részt, bármely rekordtípus szülőként tetszőleges számú típusban vehet részt, ha 1 rekordtípus

szülőként több PCR típusban vesz részt, akkor a gyerekei balról jobbra rendezettek. 6 M:N kapcsolat nehezen kivitelezhető, lehetséges megoldás: gyerek rekordok ismétlődő előfordulása: TANTÁRGY MATEK MAGYAR KI TANÍTJA Fekete Kovácsné Kovácsné Torma Virtuális szülő-gyerek kapcsolat (VPCR): Bevezetésének okai: M:N kapcsolat; 1 rekordtípus több, mint 1 PCR típusban szerepel gyerekként; N-ágú kapcsolatok. Alapgondolat: több hierarchia szint létrehozása, a kapcsolatot mutatókkal valósítják meg az adatbázisban. A virtuális (vagy mutató) rekordtípus tartalmaz 1 mutatót, ami 1 másik szinten lévő rekordra mutat. A mutatót tartalmazó rekordtípust virtuális gyereknek, amire mutat, azt pedig virtuális szülőnek nevezzük. A kapcsolatot virtuális PCR-nek hívjuk 1. hierarchia szint 2. hierarchia szint TANTÁRGY TANÁR TANÁRMUTATÓ ajánlott könyv Minden VPCR 1:N kapcsolatnak felel meg: tetszőleges számú virtuális gyerek mutathat a

virtuális szülő 1 rekordelőfordulására. (1 tanár több tantárgyat taníthat) hierarchikus adatbázis-kezelés integritási szabályai: – gyökér kivételével egyetlen rekordelőfordulás sem létezhet hozzá tartozó gyerek nélkül: gyerekrekordot csak szülőhöz kapcsolva szúr6unk be; gyerekrekordot szülőtől függetlenül törölhetünk, szülőt viszont csak leszármazottal (kaszkádolt törlés); virtuális szülő és gyerek rekordra ezek nem vonatoznak: szülőt csak akkor törölhetünk, ha nem mutat rá gyerek – ha 1 gyerek rekordnak 2 vagy több ugyanolyan típusú szülő rekordja van, akkor gyerekrekordot meg kell kettőzni, h. minden szülőhöz külön tartozzon – ha 1 gyerek rekordnak 2 vagy több ugyanolyan típusú szülő rekordja van, akkor ezek közül legfeljebb 1 lehet igazi szülő, a többi virtuális szülőként szerepelhet 2. Hálós adatmodell: Rekord: egymással szoros kapcsolatban lévő adatok. Bizonyos szempont szerint összerakható

rekordok 1 rekordtípusba tartoznak. Minden rekordtípusnak van neve, és adatelemeit nevükkel és típusukkal azonosítjuk: HÁZIÁLLAT rekordtípus NÉV Vezetéknév neve Keresztnév Nem Ár adatelemek csoport elemei Az összetett attribútumoknak a hálós modellben a csoport felel meg. Ez a modell többértékú attribútumot is megenged. 7 HALMAZTÍPUS: A modellben két rekordtípus között fennálló kapcsolatot halmaztípus írja le. Bachmann-diagrammon a SET típust nyíllal jelöljük, három eleme van: a set típus azonosítója, egy tulajdonos rekordtípus, egy tag rekordtípus: TANTÁRGY tulajdonos (owner) tantárgynév szaktanár SET név TANÁR tantárgynév tag (member) A tulajdonosokból és tagokból álló halmazoknak annyi előfordulása van, amennyi a tulajdonosok száma. Az adatbázisban a SET rekordjait mutatókkal kapcsolják össze fizikailag is körbe kapcsolt listává. Ez a mutatókon alapuló fizikai szerkezet lehetővé teszi, hogy a

tulajból kiindulva megkeressük bármely tagrekordot, adott tagrekordból kiindulva az előzőt vagy a következőt, közvetlenül a tagrekordot. A hálós modell minden halmazában van egy megkülönböztetett elem, ami a tulajdonosrekord, rendezett rekordok vannak, a rekordok rendezettsége adott mezőn alapul, vagy a rendszer belső ügye a rendezési szempont SYSTEM tárgyak SET TANTÁRGY A hálós modell halmazainak speciális típusa: rendszertulajdonos halmaz: a tulaj ismeretlen rekurzív halmaz: a tulajdonosrekord és a tagrekord ugyanabból a rekordtípusból származik 3. relációs adatmodell: népszerű, mert táblázatok (relációk) rendszeréből áll. A táblázatosan tárolt adatokból ún. relációs műveletek segítségével kereshetjük vissza a kívánt adatokat (lekérdezés). Alapfogalmak: rekord: táblázat 1-1 sora, az első sor kitüntetett (fejléc), amely az oszlopok nevét tartalmazza. Az oszlopnevek az egyedtulajdonságokra utaló azonosítók. Más

néven attribútumoknak vagy mezőknek nevezzük. Az oszlopokban lévő adatok az egyedek tulajdonságait hordozzák Az oszlopok számát a táblázat fokszámának nevezik, a sorok számát pedig kardinalitásnak. A táblázatnak olyan nevet kell adni, ami megkülönbözteti a többi táblázattól. ÁLLAT a táblázat neve Név lakcím hobbi főétel kutya kutyaól macskakergetés csont macska lábtörlő futás egér attribútumok rekordok A relációs adatmodell egyik fontos fogalma a kulcs, pontosabban az elsődleges kulcs és az idegen kulcs. Az elsődleges kulcs a táblázat sorainak egyértelmű azonosítására való Ált reláció vmely attribútuma. Előfordul6, h két vagy több oszlop kombinációjára van szükség az egyértelmű azonosításhoz. Ez az összetett elsődleges kulcs Ha több oszlop is szóba jöhet, akkor szabadon kiválaszthatjuk, hogy melyik legyen elsődleges kulcs. A többi lehetséges kombinációt alternáló kulcsnak nevezzük. 8 Elsődleges

kulcs kiválasztásakor ügyelni kell arra, hogy a kulcsban szereplő oszlopok száma minimális legyen. Vagyis, ha elhagyunk egy oszlopot, akkor maradék nem határozna meg egyértelműen rekordot. Aláhúzással különböztetjük meg Idegen kulcs: ezzel tudunk hivatkozni egy másik, a hivatkozó táblázattal logikai kapcsolatban lévő táblázatra. Az idegen kulcsnak megfelelő érték abban a táblázatban, smelyiknek a rekordjára mutat, elsődleges kulcs. Pl: ÁLLAT Név lakcím hobbikód főétel kutya kutyaól mk csont macska lábtörlő fu egér egér lyuk fu sajt HOBBI hobbikód mk fu a nyíl a hivatkozás irányát jelöli hobbinév macskakergetés futás Ha a rekordelőfordulások feltüntetéséről eltekintünk, akkor a relációs adatmodell egyik elterjedt ábrázolását kapjuk. ÁLLAT Név lakcím hobbikód főétel HOBBI hobbikód hobbinév Másik ábrázolási módszer: ÁLLAT(név, lakcím, hobbikód, főétel) HOBBI(hobbikód, hobbinév) Kapcsolat típusát

és részvételt is ábrázol: ÁLLAT(név, lakcím, hobbikód, főétel) HOBBI(hobbikód, hobbinév) függőség, funkcionális függőség: minden relációban van olyan attribútum, amitől a többi attribútum értéke függ (kulcs). Az elsődleges kulcstól funkcionálisan függ a többi attribútum értéke. név lakcím hobbikód főétel A funkcionáli függés felismerése fontos a táblázatszétbontó eljárásban! 9 Normalizálás: Adatbázis-tervezés: felmérjük, milyen adatokra van szükségünk (káosz), majd ezen adatokból meghatározott lépésekkel jól áttekinthető csoportokat készítünk (pl: relációs modell). Erre 1 módszer a normalizálás, amikor az eredményt általában 3 (max. 4) lépésben kapjuk A normalizálás lényegében táblázatszétbontó relációs műveletek sorozata. Haszna:  adatok tárolási igénye csökken (redundancia csökken)  logikailag áttekinthetőbb lesz az adatbázis  megszűnnek a törlési, beszúrási,

módosítási anomáliák Függőség: bármely relációban az egyes attribútumok értékei függenek más attribútum(ok) értékeitől. Pl: elsődleges kulcstól (K) függ a többi mező (A,B,C) értéke, azaz ebben a relációban A,B és C funkcionálisan függ K-tól: (K)(A,B,C) vagy R.KRA,RB,RC Egy táblázat (reláció) adatai első normál formában (1NF) vannak, ha teljesülnek rá, hogy:  minden sor különbözik  az attribútumok sorrendje minden sorban ugyanaz  nincsenek ismétlődő mezők  minden oszlop egy és csak egy attribútumot jelent  minden sorhoz tartozik legalább 1 egyedi kulcs, amelytől az összes többi attrib. funkcionálisan függ Minden adatbázis-kezelő rendszer előírja az 1NF kritériumot. A normalizálás első lépése 1NF táblázat(ok) létrehozása. PL: OSZT p01 p01 p01 p01 u01 b01 b01 b01 OSZTNEV pénzügy pénzügy pénzügy pénzügy ürügy bonyolító bonyolító bonyolító VNEV Záp Tojás Mohácsi Basa Lógó Kavics

Szerb Vigécz KNEV Béla Tóbiás Anna Tas Ödön Virág Kata Jenő TKOD b1, o2 u2 b1, e1 t2 be t2 e1 u2, be b01 bonyolító Vigécz Jenő u2, be TEMA bér, oktatás utazás bér, ellenőrzés tervezés beszerzés tervezés ellenőrzés utazás, beszerzés utazás, beszerzés MUNKA 40 100 30 100 100 100 100 20 SZEV 1939 1937 1978 1937 1966 1971 1966 1970 FONOK 91526 91526 91526 91526 99998 69690 69690 69690 20 1970 69690 Ez nincs normál formában, mert: vannak több attribútumú mezők (b1, e1); vannak azonos sorok; nincs egyedi kulcs. ALKALMAZOTTAK első normál formában: OSZT p01 p01 p01 p01 p01 p01 u01 b01 b01 b01 b01 OSZTNEV pénzügy pénzügy pénzügy pénzügy pénzügy pénzügy ürügy bonyolító bonyolító bonyolító bonyolító SZIGSZAM 11111 11111 11211 12110 12110 91526 99998 01526 69690 01492 01492 VNEV Záp Záp Tojás Mohácsi Mohácsi Basa Lógó Kavics Szerb Vigécz Vigécz KNEV Béla Béla Tóbiás Anna Anna Tas Ödön Virág Kata Jenő

Jenő Elsődleges kulcs: SZIGSZAM+TKOD 10 TKOD b1 o2 u2 b1 e1 t2 be t2 e1 u2 be TEMA bér oktatás utazás bér ellenőrzés tervezés beszerzés tervezés ellenőrzés utazás beszerzés MUNKA 40 60 100 30 70 100 100 100 100 20 80 SZEV 1939 1939 1937 1978 1978 1937 1966 1971 1966 1970 1970 FONOK 91526 91526 91526 91526 91526 91526 99998 69690 69690 69690 69690 Az előbbi táblázat sok redundanciát tartalmaz, ami módosítási, törlési ill. bővítési anomáliához vezet. A második normalizálási lépéshez vizsgáljuk meg, hogy melyek azok az attribútumok, amelyek az egyes összetevőktől egyértelműen függenek és melyek azok, amelyeket az összetett kulcs határoz meg. Ezután hozzunk létre olyan táblázatokat, amelyekben az összes nem kulcs attribútum teljesen függ az elsődleges kulcstól. A teljesen azt jelenti, hogy az összetevők száma nem csökkenthető, vagyis a kulcs minimális (ha kulcs egyszerű, akkor teljes függés=funkcionális függés):

TÉMA TKÓD OSZT OSZTNÉV összetett elsődleges kulcs VNÉV SZIGSZAM FŐNÖK KNÉV M SZÉV Tehát ALKALMAZOTTAK 1NF-relációt 3 kapcsolódó relációra (táblázatra) bonthatjuk: ALKALMAZOTT(OSZT,OSZTNEV,SZIGSZAM,VNEV,KNEV,SZEV,FONOK) MITCSINAL(SZIGSZAM,TKOD,M) TEMAK(TKOD,TEMA) ahol az aláhúzott attribútumok az elsődleges kulcsokat jelölik, amelyektől a reláció többi attribútuma teljesen függ. A MITCSINAL relációban a SZIGSZAM és a TKOD idegen kulcsok (foreign key), a SZIGSZAM az ALKALMAZOTT relációra, a TKOD pedig a TEMAK relációra hivatkozik. ALKALMAZOTT(OSZT,OSZTNEV,SZIGSZAM,VNEV,KNEV,SZEV,FONOK) OSZT p01 p01 p01 p01 p01 p01 u01 b01 b01 b01 b01 OSZTNEV pénzügy pénzügy pénzügy pénzügy pénzügy pénzügy ürügy bonyolító bonyolító bonyolító bonyolító SZIGSZAM 11111 11111 11211 12110 12110 91526 99998 01526 69690 01492 01492 VNEV Záp Záp Tojás Mohácsi Mohácsi Basa Lógó Kavics Szerb Vigécz Vigécz KNEV Béla Béla Tóbiás Anna Anna

Tas Ödön Virág Kata Jenő Jenő SZEV 1939 1939 1937 1978 1978 1937 1966 1971 1966 1970 1970 TEMAK(TKOD,TEMA) TKOD b1 o2 u2 b1 e1 t2 be t2 e1 u2 be TEMA bér oktatás utazás bér ellenőrzés tervezés beszerzés tervezés ellenőrzés utazás beszerzés Elsődleges kulcs: TKOD 11 FONOK 91526 91526 91526 91526 91526 91526 99998 69690 69690 69690 69690 Elsődleges kulcs: SZIGSZAM MITCSINAL(SZIGSZAM,TKOD,MUNKA) SZIGSZAM 11111 11111 11211 12110 12110 91526 99998 01526 69690 01492 01492 TKOD b1 o2 u2 b1 e1 t2 be t2 e1 u2 be MUNKA 40 60 100 30 70 100 100 100 100 20 80 Elsődleges kulcsok: SZIGSZAM+TKOD Idegen kulcsok: SZIGSZAM, hivatkozik ALKALMAZOTT táblára TKOD, hivatkozik TEMAK tablara A 3 reláció második normál formában (2NF) van, mert  1NF-ban van  összes nem kulcs attribútum funkcionálisan teljesen függ az elsődleges kulcstól A harmadik normál forma (3NF): Az ALKALMAZOTT(OSZT,OSZTNEV,SZIGSZAM,VNEV,KNEV,SZEV,FONOK) relációban még sok az

anomália (pl: Lógó Ödön kilépésével (törlés) az ürügy osztályra vonatkozó infók törlődnének (törlési anomália); ha p01 osztálynak új főnőke lesz, akkor több sorban is módosítani kell (módosítási anomália); nem tudunk új dolgozót felvenni, amíg legalább egy dolgozót fel nem vesznek (beszúrási anomália). Függőségi diagramm: OSZT FONOK SZIGSZAM OSZTNEV VNEV KNEV SZEV Megállapítások: A VNEV,KNEV,SZEV csak az elsődleges kulcstól függenek; az OSZT,OSZTNEV és FONOK (egyik sem elsődleges kulcs) között funkcionális függések fedezhetők fel: OSZT OSZTNEV FONOK Megoldás: OSZTALYOK(OSZT,OSZTNEV,FONOK) reláció létrehozása!!! Eredmény: ALKALMAZ(OSZT,SZIGSZAM,VNEV,KNEV,SZEV) 3NF OSZT p01 p01 p01 p01 p01 p01 u01 b01 b01 b01 b01 SZIGSZAM 11111 11111 11211 12110 12110 91526 99998 01526 69690 01492 01492 VNEV Záp Záp Tojás Mohácsi Mohácsi Basa Lógó Kavics Szerb Vigécz Vigécz KNEV Béla Béla Tóbiás Anna Anna Tas Ödön

Virág Kata Jenő Jenő SZEV 1939 1939 1937 1978 1978 1937 1966 1971 1966 1970 1970 Elsődleges kulcs: SZIGSZAM Idegen kulcs: OSZT, hivatkozás OSZTALYOKra 12 TEMAK(TKOD,TEMA)3NF TKOD b1 o2 u2 e1 t2 be TEMA bér oktatás utazás ellenőrzés tervezés beszerzés Elsődleges kulcs: TKOD Alternatív kulcs: TÉMA MITCSINAL(SZIGSZAM,TKOD,MUNKA) 3NF SZIGSZAM 11111 11111 11211 12110 12110 91526 99998 01526 69690 01492 01492 TKOD b1 o2 u2 b1 e1 t2 be t2 e1 u2 be MUNKA 40 60 100 30 70 100 100 100 100 20 80 Elsődleges kulcsok: SZIGSZAM+TKOD Idegen kulcsok: SZIGSZAM, hivatkozik ALKALMAZ-ra TKOD, hivatkozik TEMAK-ra OSZTALYOK(OSZT,OSZTNEV,FONOK) 3NF OSZT p01 u01 b01 OSZTNEV pénzügy ürügy bonyolító FONOK 91526 99998 69690 Elsődleges kulcs: SZIGSZAM Idegen kulcs: FONOK, hivatkozik ALKALMAZ-ra Ez a 4 reláció harmadik normál formában van, mert:  2NF-ban van  elsődleges kulcshoz tartozó attribútumok csak az elsődleges kulcstól függenek, azaz: funkcionális

függés csak az elsődleges (vagy alternatív) kulcsból indul ki. NORMALIZÁLÁS formális megfogalmazása: 1NF2NF eljárás: Ha R(A,B,C,D); elsődleges kulcs (A,B); R.ARD, akkor R 1 (A,D) elsődleges kulcs (A) és R 2 (A,B,C) elsődleges kulcs(A,B), idegen kulcs (A), hivatkozik R 1 -re 2NF3NF eljárás: Ha R(A,B,C,D) elsődleges kulcs (A), R.BRC, akkor R 1 (B,C) elsődleges kulcs (B) és R 2 (A,B,D) elsődleges kulcs (A) idegen kulcs (B), hivatkozik R 1 -re. 13 A táblázatok kapcsolatai: ALKALMAZOTT 1 OSZT SZIGSZAM 11111 p01 p01 11111 p01 11211 p01 12110 p01 12110 p01 91526 u01 99998 b01 01526 VNEV Záp KNEV Béla SZEV 1939 Záp Tojás Mohácsi Mohácsi Basa Lógó Kavics Béla Tóbiás Anna Anna Tas Ödön Virág 1939 1937 1978 1978 1937 1966 1971 b01 b01 b01 Szerb Vigécz Vigécz Kata Jenő Jenő 1966 1970 1970 69690 01492 01492 M N OSZTALYOK OSZT p01 u01 b01 OSZTNEV pénzügy ürügy bonyolító FONOK 91526 99998 69690 1 MITCSINAL N SZIGSZAM 11111 11111

11211 TKOD b1 o2 u2 MUNKA 40 60 100 12110 12110 91526 99998 01526 69690 01492 01492 b1 e1 t2 be t2 e1 u2 be 30 70 100 100 100 100 20 80 M 1 TEMAK TKOD b1 o2 u2 e1 t2 be M EGYEDEK KAPCSOLATA típus példa 1:1 1:N M:N TEMA bér oktatás utazás ellenőrzés tervezés beszerzés Megvalósítás (általában) 1 közös táblázat (OSZTALYOK) OSZTALY:ALKALMAZOTT 1 idegen kulcs (OSZT) 1 kapcsoló táblázat 2 idegen ALKALMAZOTT:TÉMA kulccsal (MITCSINAL) FONOK:OSZTALY 14 Normál formák összefoglalva: NF 1NF 1. feltétel      2NF 3NF ne legyen két egy-forma oszlop ne legyen két egy-forma sor ne legyen többértékű attribútum rögzített legyen az oszlopszám és azok sorrendje egyedi kulcs meg-határozása 1NF 2. feltétel 3. feltétel Lehetnek olyan attribútumok, amelyek a kulcs összetevőitől függnek teljesen és lehetnek olyanok, amelyek az összetett kulcstól függenek teljesen. Lehetnek olyan attribútumok, amelyek nemcsak az

elsődleges vagy alternatív kulcstól függenek (a tranzitív függés engedélyezett). Az összes nem kulcs (nem elsődleges és nem alternatív) attribútum funkcionálisan teljesen függjön az elsődleges kulcstól! (Az összetett kulcstól és az összetevőktől funkcionálisan teljesen függő attribútumokkal és a megfelelő kulccsal új relációt hozunk létre.) Lehetnek olyan attribútumok, amik nemcsak az elsődleges vagy alternatív kulcstól függnek (a közvetett – tranzitív – függés engedélyezett). 2NF A nem kulcs attribútumok (nem elsődleges és nem alternatív) csak az elsődleges kulcstól függjenek, azaz tranzitív függés ne legyen! (A tranzitív függésben lévő attribútumokkal új relációt hozunk létre.) 1NF Alapkövetelmény: Minden relációs adatbázis-kezelő rendszer (DBMS) megköveteli, hogy az adatok legalább 1NF normalizálási szinten legyenek. A tárolási redundancia és ezzel a törlési, beszúrási, módosítási

anomáliák csökkentése érdekében magasabb fok (2NF, 3NF) elérése kívánatos. NORMALIZÁLÁS: elméletileg is megalapozott dekompozíciós eljárás, amely a funkcionális függések figyelembe vételével 2NF 3NF (4NF) normál formájú, egymással kapcsolatban lévő relációkra bontja az 1NF relációkat. Ha a 3NF kevés, akkor 4NF-át kell kialakítani, pl: TANÁR-OKTATÓ-KÖNYV (TOK) TANTÁRGY OKTATÓ Számítástechnika Kovács Miklós Tóth Péter Fizika Molnár Lajos Algebra Tömör Vince Kovács Miklós Pintér Bertalan 15 KÖNYV Mit kell tudni a PC-ről? WORD feladatok kezdőknek Fizika alapok Elektron a rengetegben Atomfizika a javából Matematikáról diszkréten Lineáris algebra Mire jó a matematika TOK 1NF-ban: TANTÁRGY Számítástechnika Számítástechnika Számítástechnika Számítástechnika Fizika Fizika Fizika Algebra Algebra Algebra Algebra Algebra Algebra Algebra Algebra Algebra OKTATÓ Kovács Miklós Kovács Miklós Tóth Péter Tóth

Péter Molnár Lajos Molnár Lajos Molnár Lajos Tömör Vince Tömör Vince Tömör Vince Kovács Miklós Kovács Miklós Kovács Miklós Pintér Bertalan Pintér Bertalan Pintér Bertalan KÖNYV Mit kell tudni a PC-ről? WORD feladatok kezdőknek Mit kell tudni a PC-ről? WORD feladatok kezdőknek Fizika alapok Elektron a rengetegben Atomfizika a javából Matematikáról diszkréten Lineáris algebra Mire jó a matematika Matematikáról diszkréten Lineáris algebra Mire jó a matematika Matematikáról diszkréten Lineáris algebra Mire jó a matematika Elsődleges kulcs: TANTÁRGY+OKTATÓ+KÖNYV TOK(TANTARGY,OKTATO,KONYV) reláció csak elsődleges kulcsból áll, tehát 3NF-ban is van viszont: TANTARGY OKTATO és TANTARGY KONYV többértékű funkcionális függésben van! Megoldás: szétbontás a többértékű függések szerint: TO(TANTARGY,OKTATO) TANTÁRGY OKTATÓ Számítástechnika Kovács Miklós Számítástechnika Tóth Péter Fizika Molnár Lajos Algebra Tömör

Vince Algebra Kovács Miklós Algebra Pintér Bertalan TK(TANTARGY,KONYV) TANTÁRGY KÖNYV Számítástechnika Mit kell tudni a PC-ről? Számítástechnika WORD feladatok kezdőknek Fizika Fizika alapok Fizika Elektron a rengetegben Fizika Atomfizika a javából Algebra Mire jó a matematika Algebra Matematikáról diszkréten Algebra Lineáris algebra Algebra Mire jó a matematika Egy reláció 4NF, ha 3NF és legfeljebb 1 többértékű függés van benne Formalizmussal: R akkor és csak akkor 4NF, ha 3NF és ha van benne többértékű funkcionális függés, pl: R.A RB, akkor az összes többi attribútum funkcionálisan függ A-tól, azaz R.ARC, RARD, (Autósboltos napi adatais feladat!!!) 16 Relációs műveletek: Ahhoz, hogy a normalizációval szétszedett, sok táblából álló relációs adatbázisunkban keresni tudjunk (vagyis adatbázist lekérdezni), szükségünk van megfelelő műveletekre. Ezeket nevezzük relációs műveleteknek. Két fajtája van: relációs

kalkulus és relációs algebra A relációs kalkulus csak a művelet deklarálását várja el (mit akarunk), a relációs algebrában a hogyan-t is ismernünk kell, vagyis a műveletek sorrendje a fontos. Az itt bemutatott relációs műveletek a relációs algebrához állnak közel: • Rename (átnevezés): a relációs algebra legegyszerűbb művelete. Formája: RENAME(oszlop1,oszlo2) végrehajtás után az oszlop1 nevű oszlop neve az oszlop2 lesz • Restrict (korlátozás): relációnk azon sorát kapjuk eredményként, amelyek megfelelnek a megadott feltételnek, Pl: OSZTALYOK OSZT p01 u01 b01 OSZTNEV pénzügy ürügy bonyolító FONOK 91526 99998 69690 Kérdés: Melyik osztálynak főnöke a ’99998’? osztfonok=RESTRICT osztalyok WHERE fonok=’99998’ (egész sort ad vissza) Eredmény: OSZTFONOK OSZT OSZTNEV FONOK u01 ürügy 99998 TULAJDONSÁGOK: fokszám: változatlan; kardinalitás: a feltételtől függ; elsődleges kulcs: változatlan. • PROJECT

(vetület): Tegyük fel, hogy a TEMAK relációból csak a téma nevére van szükségünk, kódjára nem. Ekkor új táblázatot kell létrehoznunk, amiből kihagyjuk TKOD-ot, vagyis az eredeti tábla azon vetületét vesszük, mely csak a témák nevét tartalmazza: CsakTemaNev=Temak PROJECT (temanev) Eredmény: CSAKTEMANEV TEMA bér oktatás utazás ellenőrzés tervezés beszerzés A táblázatból a zárójelben megadott oszlopok maradnak meg. Figyelnünk kell arra, hogy keletkeznek-e azonos sorok, ha igen, törölni kell. Elsődleges kulcsot változtatni kell, ha nincs benn eredményben, tehát: TULAJDONSÁGOK: fokszám: megmaradó oszlopok száma; kardinalitás: változhat (azonos sorok törlése); elsődleges kulcs: ált. újra meg kell változtatni • TIMES (keresztszorzat): két relációhoz kapcsolódó művelet Pl: egy osztályba fiúk és lányok járnak, tegyük fel, hogy nincs azonos nevű gyerek, így elsődleges kulcsnak megfelel a név. Az osztályban játékot

szerveznek, amelyhez fiú-lány párok kellenek, és bárki lehet bárkinek a párja: FIÚ LÁNY LNEV Kati Anita Klári FNEV FHAJSZIN Laci szőke Sanyi barna Balázs barna Párok=Fiú TIMES Lány 17 LHAJSZIN szőke vörös szőke Eredmény: PÁROK FNEV FHAJSZIN Laci szőke Laci szőke Laci szőke Sanyi barna Sanyi barna Sanyi barna Balázs barna Balázs barna Balázs barna LNEV LHAJSZIN Kati szőke Anita vörös Klári szőke Kati szőke Anita vörös Klári szőke Kati szőke Anita vörös Klári szőke Az első reláció minden sorához hozzáírtuk a második reláció minden sorát. TULAJDONSÁGOK: fokszám: kiinduló relációk fokszámának összege; kardinalitás: kiinduló relációk kardinalitásának szorzata; elsődleges kulcs: két eredeti elsődleges kulcs kombinációja. Ha azonos a két kulcsoszlop neve, akkor RENAME-t kell használni! • UNIO (unió): mivel az eredmény a kiinduló relációk sorainak összességét tartalmazza, ezért csak akkor hajtható

végre, ha kiinduló relációk oszlopai ugyanazok; ha azonos oszlopszám, átnevezéssel lehet manipulálni. Előző példa: FNEV+LNEV helyett NEV, FHAJSZIN+LHAJSZIN helyett HAJSZIN Vegyes=Fiú UNION Lány Eredmény: VEGYES NEV HAJSZIN TULAJDONSÁGOK: fokszám: változatlan; Laci szőke kardinalitás: változhat (ha vannak azonos sorok Sanyi barna relációban, azokból csak egyet tartunk meg), a két Balázs barna reláció sorainak összege–közös sorok; elsődleges kulcs: Kati szőke eredeti relációk elsődleges kulcsa Anita vörös Klári szőke • INTERSECTION (metszet): csak akkor hajtható végre, ha teljesülnek rá az uniónál már felsorolt feltételek. Itt az új relációban azok a sorok szerepelnek, melyek mindkét relációban megtalálhatók, tehát azonosak. Pl: tanárnők tudni szeretnék, hogy két párhuzamos osztályban kik azok, akiknek egy napon van név- és szülinapjuk: 6.a 6.b NEV SZDATUM NEV SZDATUM Gábor 1975.0718 Edit 1975.0305 Anett 1974.1231

Attila 1974.1107 Edit 1975.0305 Eszter 1975.0812 Péter 1975.0121 Gábor 1975.0718 Egynapon=6.a INTERSECTION 6b Eredmény: EGYNAPON NEV SZDATUM TULAJDONSÁGOK: fokszám: változatlan; kardinalitás: két reláció azonos sorainak száma; Gábor 1975.0718 elsődleges kulcs: eredeti relációk elsődleges kulcsa Edit 1975.0305 18 • JOIN (egyesítés): legfontosabb, és leggyakrabban használt két relációt használó művelet. Azon lekérdezésekhez nélkülözhetetlen, ahol egynél több táblázatból kell adatokat összegyűjteni. Összerakjuk segítségével azt, amit a normalizálással szétszedtünk Eredménye olyan reláció, ahol az egyik reláció soraihoz hozzáírjuk a másik reláció minden olyan sorát, amelyben a megadott közös mező(k) – Join mező(k) – értéke azonos. Pl: ALKALMAZ OSZTALYOK SZIGSZAM 11111 99998 01526 VNEV Záp Lógó Kavics KNEV Béla Ödön Virág SZEV 1939 1966 1971 OSZT p01 u01 b01 OSZT p01 u01 b01 OSZTNEV pénzügy ürügy

bonyolító FONOK 91526 99998 69690 Hol Alkalmaz=alkalmaz JOIN osztalyok(oszt) Eredmény: Hol Alkalmaz SZIGSZAM VNEV KNEV SZEV OSZT OSZTNEV FONOK 11111 99998 01526 Záp Lógó Kavics Béla Ödön Virág 1939 1966 1971 p01 u01 b01 pénzügy ürügy bonyolító 91526 99998 69690 TULAJDONSÁGOK: fokszám: két kiinduló reláció oszlopszámának összege, mínusz a közös oszlopok száma (közös oszlop 1szer szerepel); kardinalitás: konkrét értékektől függ; elsődleges kulcs: attól függ, hogy kapcsolómező(k) vmelyik kiinduló relációban részei-e az elsődleges kulcsnak. Ha igen: másik reláció elsődleges kulcsa lesz az új elsődleges kulcs (mint itt), különben a két reláció elsődleges kulcsainak kombinációja. Elemi műveletként használjuk, de összetett művelet, felépítése: TIMES, majd kiválogatjuk azonos mezőket RESTRICT-el, majd elhagyjuk a felesleges kapcsolómezőt (PROJECT).  Ujrelacio1=Alkalmaz TIMES Osztalyok  Ujrelacio2=RESTRICT

Ujrelacio1 WHERE (Alkalmaz.oszt=Osztalyokoszt)  Hol Alkalmaz=Ujrelacio2 PROJECT (Szigszam,Vnev,Knev,Szev,Alkalmaz.oszt,Osztnev,Fonok) Leképezések (ER-modellből relációs modell) Az adatbáziskezelő-rendszerek nem képesek koncepcionális sémával dolgozni (ER-modell), hanem implementációs (logikai) sémára van szükségünk. Többféleképpen juthatunk el az implementációs modellig: az egyik módszer a normalizálás, a másik lehetőség pedig, ha ERmodellből kiindulva készítünk relációs modellt, ún. leképezési szabályokat alkalmazva egyedtípusokra, kapcsolattípusokra és attribútumokra. Ezen szabályok ismeretében a leképezés automatikussá válik, így ez a folyamat algoritmizálható (CASE TOOL eszközök). Leképezési szabályok: • Minden egyedtípusnak (kivéve gyenge egyed) relációt feleltetünk meg, amelyek mezői az egyes egyedek attribútumai lesznek. A kulcsattribútumok alkotják az elsődleges kulcsokat (primary key). Az összetett

attribútumokat komponenseikre kell felbontani név id település cím utca ösztöndíj HALLGATÓ HALLGATÓ id, név, település, utca, ösztöndíj 19 • Gyenge egyedtípusnak olyan relációt feleltetünk meg, amelynek elsődleges kulcsa az azonosító (szülő) egyedből képzett reláció elsődleges kulcsából és a gyenge egyed parciális kulcsából (ha van) áll. Az azonosító reláció elsődleges kulcsából kapott kulcsösszetevő egyben idegen kulcs is, amivel hivatkozunk a „szülő” relációra. A gyenge egyed azonosításában több egyed is részt vehet, ekkor az összetett kulcs képzésében mindegyik elsődleges kulcs részt vesz. id név születési idő CSALÁDFŐ 1 keresztnév CSALÁDFŐÉ CSALÁDFŐ N születési idő GYEREK GYEREK id, keresztnév, születési év id, név, születési idő • Többértékű attribútum esetén az eredeti relációban megszüntetjük a többértékű attribútumot, új relációt hozunk létre,

amelynek összetett elsődleges kulcsa a többértékű mezőből és az eredeti reláció elsődleges kulcsából áll. Ha az eredeti egyedtípus attribútuma összetett volt, akkor minden komponenséből mező lesz az új relációban és közülük választjuk ki az összetett kulcs másik komponensét. cím szerző KÖNYV KÖNYV kiadó cím, {szerző}, kiadó KÖNYV SZERZŐ cím, szerző cím, kiadó 20 • 1:1 kapcsolattípus leképezése: a kapcsolattípuson belül több esetet különböztethetünk meg, amelyek leképezése eltérő. Három eset lehetséges: ha az egyik egyed totálisan, a másik részlegesen vesz részt a kapcsolatban; ha mindkét egyed totálisan, illetve ha mindkét egyed parciálisan vesz részt a kapcsolatban. mindkét oldal totális részvétele: » Feladat: egy vállalatnál a házasságban élő dolgozók személyi adatainak nyilvántartása. FÉRFI és NŐ egyedek 1:1 kapcsolatát kell ábrázolni. A TÁRSA kapcsolatban minden nő és

férfi részt vesz. azon név HÁZAS FÉRFI azon 1 TÁRSA előző név HÁZAS NŐ 1 új név HÁZAS FÉRFI ÉS NŐ azon, név, feleség új neve, előző név Tehát az 1:1 kapcsolattípus és mindkét oldal totális részvétele esetén célszerű az egyedtípusokból kapott relációkat egyetlen relációvá alakítani, az összes attribútum felhasználásával. Ha a kulcs különböző, akkor valamelyik reláció elsődleges kulcsa lesz az „összevont” reláció elsődleges kulcsa. (Ha vmelyik egyed más kapcsolatban is részt vesz, akkor érdemes meghagyni a két relációt úgy, hogy valamelyiket kiegészítjük a másik elsődleges kulcsával, mint idegen kulccsal.) = egyetlen reláció » egyik egyed totális, másik parciális részvétele Az előző feladat módosítva: Egy közösségen belüli családi adatokat kell nyilvántartani. A CSALÁDFŐ és a HÁZASTÁRS egyedtípusok 1:1 kapcsolatban vannak egymással, a CSALÁDFŐ parciális és a HÁZASTÁRS

totális részvételével a TÁRSA kapcsolatban. Azaz: minden házastárshoz tartozik egy családfő, de van olyan családfő, akinek nincs férje vagy felesége. 21 azon név CSALÁDFŐ azon TÁRSA 1 előző név HÁZASTÁRS 1 CSALÁDFŐ új név HÁZASTÁRS azon, név azon, előző név, új név Leképezési szabály: 1:1 kapcsolattípus és az egyik oldal parciális részvétele esetén célszerű a totális részvételű oldal egyedtípusának megfelelő reláció attribútumait kiegészíteni a parciális oldalon lévő reláció elsődleges kulcsával, mint idegen kulccsal = totálisban idegen kulcs. » mindkét oldal parciális részvétele A feladat hasonló az eddigiekhez, csak most egyetemi hallgatók (fiúk és lányok) egymás közötti házassági adatainak nyilvántartását oldjuk meg, a házasságra nem lépők személyi adatait is nyilvántartva. A fiúk és lányok között többen lesznek, akik egyetemi éveik alatt nem házasodnak, vagy nem

egymás között akarnak házasodni. azon1 időpont név FIÚ TÁRSA 1 azon2 név LÁNY 1 új név FIÚ LÁNY azon1, név azon2, előző név PÁR azon1, azon2, feleség új neve, időpont Leképezési szabály: 1:1 kapcsolattípus és mindkét oldal parciális részvétele esetén célszerű a kapcsolattípusból új relációt létrehozni. Az új reláció kulcsa vmelyik résztvevő egyedreláció elsődleges kulcsa, ami egyben idegen kulcs is. A másik egyedreláció kulcsával, mint idegen kulccsal is ki kell egészíteni az új relációt. A kapcsolattípus attribútumai az új reláció attribútumaivá válnak. = új reláció 22 • 1:N kapcsolattípus leképezése: Ez a fajta kapcsolattípus a leggyakoribb. A kapcsolattípuson belül itt is több esetet különböztetünk meg, mint az 1:1 kapcsolattípus esetében. Kétféle eset lehetséges: az egyik, ha az N-oldal totálisan, a másik pedig, amikor az N-oldal parciálisan vesz részt a kapcsolatban. »

totális N-oldal Az egyetem oktatóiból és a tanszékekből álló OKTATÓ ill. TANSZÉK egyedtípusok 1:N kapcsolatban vannak (1 tanszéken N oktatót alkalmaznak, de 1 oktató csak 1 tanszéken dolgozik). id név tkód OKTATÓ DOLGOZIK N tanszék neve TANSZÉK 1 fejére eső hallgatószám OKTATÓ TANSZÉK id, név, fejére eső hallagtószám, tkód tkód, tanszék neve Leképezési szabály: Az N-oldali reláció attribútumait kiegészítjük az 1-oldal elsőleges kulcsával, mint idegen kulccsal. Ha a kapcsolatnak van(nak) attribútuma(i), akkor az(ok) az N-oldali relációba kerülnek. » parciális N-oldal Az előző példát módosítjuk úgy, hogy az oktatók helyett az intézmény összes dolgozóját figyelembe vesszük. Így lesznek olyan (nem oktató) dolgozók, akik nem tartoznak egyik tanszékhez sem, a DOLGOZÓ részvétele tehát parciális. id fejére eső hallgatószám név DOLGOZÓ N OKTAT DOLGOZÓ tkód tanszék neve TANSZÉK 1

TANSZÉK id, név tkód, tanszék neve OKTAT id, tkód, fejére eső hallgatószám 23 Leképezési szabály: A kapcsolattípusnak új relációt feleltetünk meg. A reláció elsődleges kulcsa az N-oldal elsődleges kulcsa lesz, amely egyben idegen kulcsként hivatkozik az Noldali reláció rekordjaira. Az 1-oldali reláció elsődleges kulcsa pedig a másik idegen kulcsot alkotja, amely biztosítja az 1-oldalra való hivatkozást. • M:N kapcsolattípus leképezése: A leképezési szabály egyszerű, az M:N kapcsolat felismerése azonban nem. Ugyanazok az egyedtípusok, amelyek 1:N kapcsolatban voltak az előző példánál, lehetnek M:N kapcsolatban is. Ha a dolgozók helyett a HALLGATÓ-kat tartjuk nyilván, akkor egy hallgató több tanszék órájára jár, és egy tanszék több hallgatónak tart órát. id hány órát kap név HALLGATÓ fejére eső oktatószám M ÓRÁT KAP tkód tanszék neve TANSZÉK N összkredit HALLGATÓ TANSZÉK id, név, fejére

eső hallagtószám tkód, tanszék neve ÓRÁT KAP id, tkód, hány órát kap, összkredit Leképezési szabály: A kapcsolattípusnak új relációt feleltetünk meg, amelynek elsődleges kulcsa a résztvevő relációk elsődleges kulcsaiból álló összetett kulcs. Az összetett kulcs komponensei idegen kulcsokként hivatkoznak a résztvevő relációk rekordjaira. A kapcsolat attribútumai az új relációba kerülnek. • Többágú M:N kapcsolat leképezése: Ez a típus csak annyiban tér el az M:N kapcsolattól, hogy nem két egyedtípus, hanem három vagy több vesz részt benne. Az ERmodell kapcsolattípusainak kialakításakor azt a legnehezebb eldönteni, hogy M:N kapcsolatokkal helyettesíthetjük-e a többágú M:N kapcsolatokat. Ha van olyan attribútum, amely egyik biner M:N kapcsolathoz sem rendelhető hozzá, akkor biztos, hogy terner kapcsolattal van dolgunk. Legyen a terner kapcsolat a HALLGATÓ, OKTATÓ és TANTÁRGY. Egy hallgató több tantárgyat vehet

fel és egy tantárgyat több hallgató is felveheti. Egy oktató több hallgatót taníthat és egy hallgató több oktatónál is hallgathat tárgyat. Egy oktató több tárgyat taníthat és egy tantárgyat több oktató is oktathatja. Ezekből akkor lesz terner kapcsolat, ha tudni szeretnénk, hogy ki kitől mit tanul, hány órában. Ezek egyik egyedtípushoz sem rendelhetők hozzá. Leképezési szabály: azonos az M:N kapcsolat szabályával: A kapcsolattípusnak új relációt feleltetünk meg, amelynek elsődleges kulcsa a résztvevő relációk elsődleges kulcsaiból álló összetett kulcs. Az összetett kulcs komponensei idegen kulcsokként hivatkoznak a résztvevő relációk rekordjaira. A kapcsolat attribútumai az új relációba kerülnek 24 id heti óraszám név HALLGATÓ tkód FELVESZ M fejére eső oktatószám N TANTÁRGY összkredit L OKTATÓ okód tantárgy neve név TANTÁRGY HALLGATÓ tkód, tantárgy neve id, név, fejére eső

oktatószám FELVESZ id, okód, tkód, heti óraszám, összkredit OKTATÓ okód, név • Rekurzív kapcsolatok leképezése: Rekurzív kapcsolatokról akkor beszélünk, ha egy egyedtípuson belül van kapcsolat az egyedek között. Az egyedelőfordulások kettős szerepét fejezi ki a kapcsolat. Például egy ALKALMAZOTT egyed lehet valaki(k)nek a főnöke és valaki(k)nek a beosztottja. Kétféle eset lehetséges rekurzív kapcsolatoknál: 1:N illetve M:N kapcsolat. » rekurzív 1:N kapcsolat Példaként nézzük meg az előbb említett ALKALMAZOTT-as példát: azon 1 név ALKALMAZOTT N IRÁNYÍT vezetett vezet ALKALMAZOTT azon, név, ki vezeti 25 Leképezési szabály: rekurzív 1:N kapcsolat esetén az egyedtípusból kapott relációt kiegészítjük a reláció elsődleges kulcsának megfelelő, de attól eltérő nevű idegen kulccsal = relációban idegen kulcs. » rekurzív M:N kapcsolat Erre a kapcsolatra példa lehet a kémiaórán végzett kísérlet,

ahol az anyagok kölcsönhatásba lépnek egymással. A kölcsönhatás paraméterei a kapcsolattípushoz rendelhetők Mindegyik anyag előfordulhat első és második szerepben. A részvétel legtöbbször mindegyik oldalon parciális. azon név M 1. paraméter első N ANYAG 2. paraméter KÖLCSÖN HATÁS második ANYAG azon, név KÖLCSÖNHATÁS azon1, azon2, paraméter1, paraméter2 Leképezési szabály: rekurzív M:N kapcsolat esetén új relációt hozunk létre a kapcsolatban résztvevő reláció elsődleges kulcsaiból összerakott elsődleges kulccsal. A kulcs összetevői – más néven – idegen kulcsok lesznek. A kapcsolattípus attribútumai az új reláció mezőit alkotják = új reláció. A leképezési szabályokat következetesen és megfelelő sorrendben alkalmazva általában kevés tárolási redundanciát és anomáliát tartalmazó relációs sémához jutunk. A 3NF általában minden relációra biztosított. A funkcionális függések

vizsgálatával, és további normalizálással finomíthatjuk a kapott relációs modellt. A számítógépes tervező szoftverek (CASE TOOL) az ER-modell automatikus felállításán és ezt követő leképezésén alapulnak. A leképezési szabályok táblázatos formában összefoglalva: Az ER-modellben A relációs modellben egyedtípus egyedelőfordulás attribútum összetett attribútum kulcsattribútum kapcsolattípus (egyed)reláció rekord (sor) mező (oszlop) minden komponensből külön mező elsődleges kulcs reláció kiegészítése idegen kulccsal VAGY kapcsolatreláció kapcsolattípus attribútuma egyedreláció mezője VAGY kapcsolatreláció mezője 26 Az ER-modellben A relációs modellben 1:1 kapcsolattípus relációk egyesítése VAGY reláció kiegészítése idegen kulccsal VAGY kapcsolatreláció reláció kiegészítése idegen kulccsal VAGY kapcsolatreláció kapcsolatreláció a résztvevők elsődleges kulcsából képzett összetett kulccsal

kapcsolatreláció összetett kulccsal és kapcsolatmezővel (ha van) reláció, az azonosító reláció elsődleges kulcsából és a gyenge egyed parciális kulcsából (ha van) képzett összetett kulccsal új reláció a többértékű attribútumból és az azt tartalmazó (egyed)reláció elsődleges kulcsából képzett összetett kulccsal; az eredeti relációban megszűnik a többértékű mező 1:N kapcsolattípus M:N kapcsolattípus N-ágú kapcsolattípus gyenge egyedtípus többértékű attribútum Feladat: Egy kórházi adatbázis létrehozása, melyben tároljuk a beteg adatait: nevét, születési adatai, anyja nevét, lakcímét. Emellett nyilvántartjuk a betegségek nevét és fő tünetét, valamint, hogy melyik osztályon kezelik az adott betegséget, melyik osztályhoz hány szoba tartozik és ki az adott osztályon a főorvos, és melyik betegnek milyen betegségre milyen gyógyszert adnak, és azt hogyan adagolják. Megoldás: azon név dátum születési

adatok betegségnév hely főtünet KI MIRE M BETEG N BETEGSÉG N lakcím L anyja neve GYÓGYSZER gynév KEZELIK adag 1 oazon onév OSZTÁLY szobaszám főorvos 27 Leképezés eredménye: BETEG azon, név, szüldat, szülhely, anyja neve, lakcím KI MIRE MIT SZED azon, betegségnév, gynév, adag OSZTÁLY BETEGSÉG oazon, onév, szobaszám, főorvos betegségnév, főtünet, oazon 28 Belső szint Az adatbázis adatait fizikailag alkalmasan választott adathordozókon tároljuk. Az adathordozók közül a mágneslemez az egyik legelterjedtebb. A mágneslemezen tárolt adatok struktúrájával és a legfontosabb hozzáférési módokkal foglalkozunk. Az adatbázis-tervezés belső szintjéhez kötődő fogalmak (pl: indexelés) ismerete a konkrét adatbázis-kezelő rendszer kiválasztása után válik igazán fontossá. Adatszerkezet és elérési mód A mágneslemezen tárolt adatok file-ok rekordjait alkotják. Az egyes rekordok egy-egy egyed jellemző

adatait tartalmazzák. A rekordoknak úgy kell elhelyezkedniük a lemezen, hogy könnyen és gyorsan elérhtőek legyenek. Egy adatbázis-kezelő rendszer rendszerint többféle lehetőséget kínál az adatok tárolási szerkezetére. Az adatok mágneslemezen való fizikai elhelyezésére használt, legfontosabb szervezési technikák:  rendezetlen file, amelyben a rekordok sorrendje nincs megkötve  rendezett file, amelyben a rekordok vmely rendezési mező növekvő vagy csökkenő értéke szerint követik egymást A rendezett file általában fizikai rendezettséget is jelent, ami kevés fejmozgással járó, gyors hozzáférést tesz lehetővé. Ha a mágneslemezes tárolóegység felépítését figyelembe vesszük, akkor láthatóvá válik, hogy azok az adatok érhetőek el gyorsabban, amelyek azonos cilinderen vannak. Egy lemezegység több lemezből áll Az egyes lemezeken az adatokat keskeny koncentrikus körök mentén helyezik el. Egy ilyen kört sávnak (track)

nevezünk A lemezegység ugyanolyan sugarú sávjai egy-egy cilindert alkotnak. Mágneslemezes tároló Író/olvasó fejek lemezek Mozgató egység Író/olvasó fejek lemezek cilinder 29 A sávok információtartalma meglehetősen nagy, ezért a sávokat kisebb egységekre, ún. szektorokra vagy blokkokra osztják. Ezt a felosztást az oprendszer végzi el a lemez formázásakor. A központi memória és a lemezegység közötti infóátadás egysége a blokk A blokk hardvercíme a lemezfelület, a sávszám és blokkszám kombinációja. Olvasási művelet során a kívánt blokk a megfelelő pufferbe kerül, íráskor pedig a puffer tartalma kerül a blokkba. A blokkok rekordokból állnak Az adatelérés folyamata több lépésből áll: 1. 2. 3. 4. fejmozgatás: a megfelelő cilinderre állnak a fejek (lassú) fejkiválasztás: a keresett lemezfelülethez tartozó fej (gyors) forgatási idő: a keresett rekord a fejhez kerül (közepes) adatátvitel: elektronikus

(leggyorsabb művelet Az 1. és 3 lépés a leghosszabb idejű művelet Amennyiben vmely mező szerint növekvő vagy csökkenő sorrendben következő rekordok fizikailag különböző cilinderen vannak, vagy ugyanazon cilinderen belül más-más blokkban, vagy ugyanazon cilinderen belül más-más, de nem egymás után következő blokkban helyezkednek el, a hozzáférés ideje jelentősen megnőhet. Az adatbázis-kezelő rendszerek általában lehetővé teszik a rekordok fizikai rendezettségét is. Technikailag gyakori megoldás az, hogy a sávon belül üres helyek maradnak a blokkokban a később beszúrandó rekordok számára azért, hogy a fizikai rendezettség később is megmaradjon. A rendezetlen file egyik tipikus esete a mágnesszalagos adattárolás. Általában adatbázisok mentésére használják. Ebben az esetben a rekordok sorrendje nem meghatározó Az adatszervezés meghatározza a hozzáférési módot. A rendezetlen file-ok rekordjaihoz csak szekvenciálisan

lehet hozzáférni, azaz a keresett rekord eléréséhez be kell olvasni az összes előtte lévő rekordot. Mivel a file rendezetlen, a keresési módszer is csak lineáris lehet A rendezett, mágneslemezes file-ok a szekvenciális elérés (a lemez felépítéséből adódóan) mellett közvetlen elérést is lehetővé tesznek a blokk fizikai címének ismeretében. Ha a fizikai cím nem ismert, akkor bináris keresést alkalmazhatunk a blokkokra: a szóba jöhető blokkok vizsgálata után felezi a blokkok számát. A keresés lehetséges kimenetei:  nincs olyan blokk, amelyben a keresett rekord előfordulhat (nincs meg)  van olyan blokk, amelyben a keresett rekord előfordulhat; szekvenciálisan, rekordrólrekordra végig kell nézni a blokkban lévő rekordokat, az összehasonlítás eredménye: megvan vagy nincs meg Az adatbázis-kezelő rendszerek file-jai rendszerint rendezett szerkezetűek, mégpedig általában az elsődleges kulcs (primary key) szerint. Egy ilyen

file sematikus rajza: 30 Név (elsődleges kulcs) Szak Hajszín Hobbi Aida Amálka Arnold Opera Fizika manager Lila Sárga kopasz könyv Tanulás telefon Ágnes Áron Számtech katona Szőke Barna Angol Rézágyú Vazul Vilmos Vuk Ének Lövészet vadász Zsanett Zsófia Zsuzsa Balett Nyelv könyvtár . . . 1. BLOKK 2. BLOKK Üres hely későbbi bővítésre Fekete Fekete Vörös Ólmozás Sport Tyúk Barna Szőke Barna Nincs Futás Kert (n-1). BLOKK n. BLOKK INDEXELÉS: A keresés még gyorsabb, ha az elsődleges file helyett a rövidebb rekordokból álló index-fileban keresünk bináris módszerrel. Az indexelés lényegében külön file-ként tárolt hozzáférési szerkezet, amely jelentősen meggyorsítja a rekordok elérését az elsődleges file-on. Rendezett file-ok esetén a rendezés alapját képző mezőértékből (indexing field) és a hozzátartozó blokk címéből épül fel egy rekord az index file-ban. Amennyiben a rendezési kulcs

egyben egyértelmű (uniqe) elsődleges kulcs is, akkor elsődleges indexről (primary key) beszélünk. A file-ok sematikus szerkezetét és az index-szekvenciális hozzáférést szemlélteti a következő sematikus rajz: 31 INDEX FILE Elsődleges kulcs (K) Ágnes Barbara . . . . . Vilmos . . ELSŐDLEGES FILE Blokk cím (P) Név (elsődleges kulcs) • • • Foglal kozás Ágnes Áron Gondnok Virágos Barbara Bodri őrmester házőrzés Vilmos Veronika Lövész Énekes Az indexrekord szerkezete: <K(1)=(Ágnes), P(1)=1. blokk címe> <K(2)=(Barbara), P(1)=2. blokk címe> <K(n)=(Vilmos), P(n)=n. blokk címe> Másodlagos index (secondary index) is létrehozható olyan mezőt tekintve kulcsmezőnek, amely szerint az elsődleges file rekordjai nincsenek rendezve. Ebben az esetben az indexrekord tartalma az elsődleges file vmelyik, a rendező mezőtől eltérő mezője (másodlagos kulcs) és a megfelelő blokkra vagy rekordra mutató cím. Egy

elsődleges file-hoz több másodlagos index file is tartozhat. Ha a másodlagos kulcs is egyedi, akkor elegendő, ha a mutató a rekordot tartalmazó blokkra mutat: 32 INDEX FILE Másodlagos kulcs Fodrász Íjász Orvos Primadonna Tanuló Vadász Zsonglőr . . . . . ELSŐDLEGES FILE Blokk cím Név (elsődleges kulcs) • • • • • • • Foglalkozás (másodlagos kulcs) Ágnes tanuló Barbara Béla Fodrász íjász Vilmos Veronika Vuk . . . Zsonglőr Orvos Vadász . . . Zsanett primadonna . . . Ha a másodlagos kulcs nem egyedi, vagyis több azonos kulcsérték is előfordulhat (ez a gyakoribb eset), akkor többféle technikai megoldás kínálkozik a másodlagos indexelésre: • ugyanarra a kulcsértékre annyi indexrekordot hozunk létre, ahányszor előfordul az érték • változó hosszúságú indexrekordokkal dolgozunk (kulcs és változó számú mutató) • fix hosszúságú indexrekordok mellett a rekordra mutató címeket külön szinten hozzuk

létre A legutóbbi megoldás a legelterjedtebb. Az előző példát módosítsuk úgy, hogy több személynek is legyen ugyanolyan foglalkozása. 33 INDEX FILE Másodlagos kulcs (nem egyedi) ELSŐDLEGES FILE rekord mutatók Név elsődleges kulcs Foglalkozás • • • Ágnes Tanuló • • Barbara Béla Bulcsu Fodrász Tanuló fodrász Fodrász • Íjász . • Primadonna . Vilmos Íjász Tanuló • • Veronika Tanuló Vadász • Vuk Íjász . • . Ha egy file rekordjai olyan mező szerint vannak fizikailag rendezve, amely nem egyedi kulcs, akkor ún. csoportos-indexelést valósíthatunk meg Az index file a csoport azonosító mezőn kívül annak a blokknak a címét tartalmazza, amelyben az azonos csoportértékű rekordok helyezkednek el (1:N kapcsolatban levő relációk esetén alkalmazható hasonló szerkezet). INDEX FILE Másodlagos kulcs Fodrász Íjász Orvos Primadonna Tanuló Vadász Zsonglőr . . . . . ELSŐDLEGES FILE Blokk cím Név • •

• • • • • Ágnes Béla Fodrász Fodrász Vilmos Vuk Íjász íjász Amália Dénes Veronika . . . . . . Zsanett 34 Foglalkozás csop. azon mező . . . Orvos Orvos Orvos primadonna Az egyéb adatszervezési és elérési módok közül a B+ fa szerkezet és a többszintű indexelés terjedt el. A B+ fa szerkezet indexelterülete két részből áll: • többszintű fa indexek területéből, amely gyors elérést tesz lehetővé • a szekvenciális indexek területéből, amelyek az egyes adatrekordok kulcsait és címeit (kapcsolt listaszerkezetben) tartalmazzák (a kulcsértékek rendezettek) A sematikus ábra egy ilyen adatszervezési és elérési módot szemléltet: Hugó Dénes Lilla Hugó Fa index szerkezet Józsi Lilla Szekvenciális indexek Amál Béla Dénes Béla tanár Erika Hugó István Józsi Kata Laca Lilla VE Erika hallgató adatrekordok VE Laca kártyás VE Másik lehetőség rekordok tárolására a

hozzáférés gyorsításával a hashing (rekeszelési technika). 35 Hashing (rekeszelési technika): Lényege: a kulcsmezőkből alkalmasan választott függvénnyel címet képzünk, amely cím a rekord blokkjának fizikai helyét jelenti: cím1=H(kulcs1) cím2=H(kulcs2) Így a hashing néven elterjedt szervezési-hozzáférési módszer közvetlen hozzáférést biztosít, amennyiben a hashing függvénnyel nyert címérték egyedi. Ez azt jelenti, hogy nincs két olyan kulcsérték, amelyre a leképezés ugyanazt a címértéket adja. A H leképező függvény elterjedt alakja: H(K)=K MOD M ahol a K a kulcsnak megfelelő egész típusú szám, M pedig a tervezett blokkok számához legközelebb eső prímszám. Fontos követelmény, hogy a H függvénnyel meghatározott blokkok egyenletesem töltsék ki az M által meghatározott tárterületet, azaz ne maradjanak üres vagy alig kitöltött helyek. Ennél is fontosabb, hogy ne legyen két érték, amelyre ugyanazt a H

értéket kapjuk, azaz teljesüljön: H(K 1 ) ≠ H(K 2 ) feltétel. Azaz ne legyen ütközés! Sajnos a legtöbb leképző algoritmus sem tesz eleget ennek a követelménynek. A hashing módszerek – a H függvényen kívül – elsősorban az ütközések kezelésében különböznek egymástól: A hashing technika alapfeladata tehát: » alkalmas hashing függvény kialakítása » ütközések hatékony kezelése Akkor mondhatjuk, hogy megfelelő a leképző algoritmus, ha » kevés az ütközés és » a tárolási terület (hash table) egyenletesen van kitöltve Legjobbnak tartják a fenti maradékképző függvényt, mert aránylag egyenletesen tölti ki a tárterületet és kevés az ütközés is. Az ütközések kezelésére a legmegfelelőbbek a dinamikus szerkezetek. Ilyen például a kapcsolt lista, vagy a következő faszerkezet: 36 H(Hugó)=101, H(Zsolt), H(Béla)=101 1. szint 2. szint 1 0 1 1 0 0 1 1 0 1 0 0 1 0 levelek H=100 H=101 blokkok

Hugó Zsolt Béla István Benedek László A bináris faszerkezet az indexeléshez hasonló szerepet tölt be. A fa levelei a H függvénnyel meghatározott blokkok címeit tartalmazzák. A csomópontok pedig a H(K) bináris érték soron következő bitjének 1 vagy 0 értéke szerinti elágazást jelentenek. Ha a blokk megtelt, akkor a hozzátartozó levél csomóponttá alakul. Az új csomópont egyik mutatója a megtelt blokkra, a másik pedig egy új blokkra mutat (dinamikus bővülés). Amíg a relációs adatbázis-kezelésben általában a hashing ritkán fordul elő, addig a hierarchikus és hálós adatbázisokban jelentős szerepet kap. SQL és a relációs adatbázis-kezelők A relációs adatbázis-kezelő rendszerek elterjedt és szabványosított szoftverkomponense az SQL nyelv. Jelentése (Structured Query Language) alapján lekérdező nyelv, de valójában adatséma leíró, adatfelvivő, módosító és törlő feladatokat is elvégez. Így magába foglalja az

adatbázis kezelő rendszerek legfontosabb komponenseit, nevezetesen a DDL (Data Definition Language), az SDL (Storage Definition Language) és a DML (Data Manipulation Language) komponenseket. Az SQL könnyen megtanulható nyelv, csak azt kell megfogalmazni, hogy mit akarunk a megoldás hogyanját rábízhatjuk az optimalizáló adatbázis-kezelő egységre. Az optimalizálás lényege, olyan módszer alkalmazása, amely a lekérdezés nagy tárigényű, Join műveletének elvégzése előtt, ha lehet, elvégzi a méretcsökkentést eredményező projekciós és restrikciós relációs műveleteket. 37 Néhány SQL parancs: A fontosabb SQL parancsok szemléltetése előtt induljunk ki egy 1:N illetve 1:1 kapcsolatban lévő OSZTÁLY és ALKALMAZOTT egyedtípusokból álló, egyszerű ER-modellből nyert relációs sémából: szemszám ALKALMAZOTT fizetés munkakör név N dolgozik magasság 1 1 osztkód 1 vezet osztnév OSZTÁLY vezetéskezdet ALKALMAZOTT szemszám,

név, munkakör, magasság, fizetés, osztkód OSZTÁLY osztkód, osztnév, vezetőkód, vezetéskezdet Táblázat létrehozása a CREATE TABLE paranccsal történik (DDL) – hosszabb mezőnevek rövidítésével (adatdefiniáló lekérdezés): adattípus CREATE TABLE alkalmazott (szemszam char(5) NOT NULL, nev varchar(20), mkor char(20), mag smallint, hivatkozás az OSZTÁLY fizetes decimal(7,2), táblázatra osztkod char(2), primary key (szemszam), foreign key (osztk) REFERENCES osztaly(okod)) CREATE TABLE osztaly (okod char(2) NOT NULL, osztnev varchar(20), vszam char(5), kdat date, primary key (okod) foreign key (vszam) REFERENCES alkalmazott(szemszam)) A személyi szám NOT NULL paramétere azt jelenti, hogy az adatbevitel során ennek a mezőnek értéket kell adni. A VREATE TABLE eredménye lényegében a táblázatok fejléce, a parancsban megadott adattípusokkal és kapcsolatokkal együtt (metaadatok). 38 Táblázat feltöltése: INSERT paranccsal történik

(hozzáfűző lekérdezés) INSERT INTO alkalmazott VALUES(’22225’,’Zoltán’,’távlevelező’,181,49000,’20’) INSERT INTO osztaly VALUES(’38’,’Szabadidő-vadászat’,’22255’,1993-03-10) Hasonlóan vihetjük be a többi rekordot is. Ezzel a paranccsal egyszerre csak 1 rekordot vihetünk fel. Legyenek a következő adatok a táblázatunkban: ALKALMAZOTT SZEMSZAM NEV MKOR MAG FIZETES OSZTKOD 00000 Anna képtároló 165 30000 38 00001 Helga demonstrátor 170 40000 20 11111 Enikő hallgató 162 32000 25 22221 Csaba fődemonstrátor 180 51000 20 22225 Zoltán távlevelező 181 49000 20 22255 Ágnes fővadász 175 81000 38 33332 Márta csendes társ 181 92000 15 33339 Melinda nyomozó 185 77000 15 44444 Laura nagyfőnök 160 100000 15 55555 Norbert éjjeliőr 185 60000 38 OSZTALY OKOD OSZTNEV VSZAM KDAT 15 Laura-Nyugija Kft 44444 1994.1103 20 Posta-Bank Csoport 22221 1993.1012 25 OTP Csoport 11111 1993.0907 38 Szabadidő-vadászat 22255 1993.0310 Tegyük fel, hogy az

OSZTALY táblában a Posta-Bank Csoportot Erste Bankra szeretnénk átírni. Ez az UPDATE paranccsal történik: (frissítő lekérdezés) UPDATE osztaly SET osztnev=’Erste Bank’ WHERE okod=’20’ Eredmény: OSZTALY OKOD OSZTNEV VSZAM KDAT 15 Laura-Nyugija Kft 44444 1994.1103 20 Erste Bank 22221 1993.1012 25 OTP Csoport 11111 1993.0907 38 Szabadidő-vadászat 22255 1993.0310 Ha a későbbiekben ez a bank csődbe megy, akkor törölnünk kell a DELETE paranccsal. Előtte azonban törölni kell az ALKALMAZOTT táblából az összes olyan rekordot, amelyben hivatkozás van erre a bankra (hivatkozás integritási szabály) (törlő lekérdezés). DELETE FROM alkalmazott WHERE osztkod=’20’ DELETE FROM osztaly WHERE OKOD=’20’ Ezzel a felesleges rekordok eltűntek az adatbázisból. Az INSERT, UPDATE és DELETE műveletek összefoglaló néven adatkarbantartó műveletek. Az SQL strukturált lekérdező nyelvet jelent, eddig azonban csak rejtve fordult elő lekérdezés: meg

kellett keresni a módosítandó és törlendő rekordokat a WHERE kulcsszóval befejezett feltétel szerint. Lekérdezések: Először csak egy tábla adataira leszünk kíváncsiak, majd pedig megnézzük, hogyan tudunk olyan kérdésekre válaszolni, ahol a két táblázat egyesítésére van szükségünk. 39 Kiindulásként az ALKALMAZOTT és OSZTALY táblánkban szerepeljenek az előzőleg kitörölt rekordok is! A lekérdezés parancsa a SELECT, amellyel egyszerű és összetett relációs műveleteket egyaránt elvégezhetünk: 1. példa: Keressük meg az ALKALMAZOTT táblában a 15-ös osztálykódú osztályon dolgozók nevét, munkakörét és osztálykódjait. Megoldás: SELECT nev, mkor, oszkod FROM alkalmazott WHERE osztkod=’15’ (ACCESS: SELECT nev, mkor, osztkod FROM Alkalmazott WHERE osztkod=15;) A SELECT parancsba elrejtett projekció és restrikció eredménye: nev mkor osztkod Márta csendes társ 15 Melinda nyomozó 15 Laura nagyfőnök 15 2. példa: Ha az

osztálykódhoz tartozó osztálynevekre vagyunk kiváncsiak, akkor az OSZTÁLY táblázatot kérdezzük le hasonló módon. Mivel az összes rekordot szeretnénk megjeleníteni, ezért nincs szükség a WHERE feltételre (csak projekciót hajtunk végre). Megoldás: SELECT okod, osztnev FROM osztaly (ACCESS: SELECT okod, osztnev FROM Osztaly;) A projekció eredménye: okod 15 20 25 38 osztnev Laura-Nyugija Kft Posta-Bank Csoport OTP Csoport Szabadidő-vadászat 3. példa: oszlopot meg szeretnénk jelentetni, akkor lehetőségünk van a projekció elhagyására: SELECT * FROM alkalmazott WHERE mag<162 Eredmény: szemszam nev mkor mag fizetes osztkod 44444 Laura nagyfőnök 160 100000 15 5. példa: összetett korlátozás használata: az ALKALMAZOTT táblából írassuk ki azokat az alkalmazottakat nevét, magasságát és fizetését, akiknek a fizetése meghaladja az 50000Ftot és ugyanakkor a magasságuk 180 és 190 cm közé esik! Megoldás: SELECT név, mag, fizetes FROM

alkalmazott WHERE (fizetes>50000) AND (mag>180 AND mag<190) (ACCESS: SELECT nev, mag, fizetes FROM Alkalmazott WHERE (mag>= 180 And mag<=190) AND (fizetes>50000); nev Csaba Márta Melinda Norbert mag 180 181 185 185 fizetes 51000 92000 77000 60000 6. példa: az 5 példa azzal a változtatással, hogy fizetés szerint növekvő sorrendben legyenek ugyanezek az adatok. (+csökkenő) Megoldás: SELECT név, mag, fizetes FROM alkalmazott WHERE (fizetes>50000) AND (mag>180 AND mag<190) ORDER BY fizetes (DESC) 7. példa: Írjuk ki minden olyan alkalmazott nevét és fizetését, akinek a neve M betűvel kezdődik. Megoldás: SELECT nev, fizetes FROM Alkalmazott WHERE nev LIKE M*; 40 8. példa: Írassuk ki azoknak a dolgozóknak a nevét, fizetését és osztályának a nevét, akiknek a fizetése meghaladja az 50000 Ft-ot és magasságuk 180 és 190 cm közé esik. Ehhez a két táblát össze kell kapcsolnunk, amit a JOIN művelettel tehetünk meg, ebben

az esetben a WHERE feltétel után kell megadnunk a JOIN feltételt, azaz, hogy mi alapján kapcsolódik a két táblázat. Megoldás: SELECT nev, fizetes, osztnev FROM Alkalmazott, Osztaly WHERE (Alkalmazott.osztkod=Osztalyokod) And (fizetes>50000) And (mag Between 180 And 190); Vannak olyan SQL nyelvjárások is (Pl. ACCESS), ahol a JOIN-t külön kell jelölni (Pl: INNER JOIN) és az egyesítés feltételére is külön kulcsszó létezik (Pl.: ON) Eredmény: nev Csaba Márta Melinda Norbert fizetes 51000 92000 77000 60000 osztnev Posta-Bank Csoport Laura-Nyugija Kft Laura-Nyugija Kft Szabadidő-vadászat 9. példa: Mivel a két reláció között még egy vezetésre vonatkozó 1:1 kapcsolat is létezik, megtudhatjuk az osztályvezetők nevét is. Megoldás: SELECT osztnev, nev FROM Osztaly, Alkalmazott WHERE (Osztaly.vszam=Alkalmazottszemszam); Táblaazonosítók itt elvileg elhagyhatóak lennének, mivel a két mező neve nem egyforma. 10. feladat: Adjunk képzeletben

fizetésemelést azoknak a dolgozóknak, akiknek a neve M betűvel kezdődik. Az elképzelt új fizetés mellett írassuk ki a dolgozók nevét, és osztályuk nevét, a fizetés szerint csökkenő sorremdben. Megoldás: SELECT nev, fizetes+3000, osztnev FROM Alkalmazott, Osztaly WHERE (Alkalmazott.osztkod=Osztalyokod) And (nev Like M*) ORDER BY fizetes DESC; Eredmény: nev Expr1001 osztnev Márta 95000 Laura-Nyugija Kft Melinda 80000 Laura-Nyugija Kft 10. példa: Szeretnénk megtudni a nagyfőnök vagy a fővadász munkakört betöltő vezetők nevét és az általuk vezetett osztály nevét. Megoldás: SELECT osztnev, nev FROM Osztaly, Alkalmazott WHERE (Osztaly.okod=Alkalmazottosztkod) AND (mkor=nagyfőnök OR mkor=fővadász); Nézetek: létrehozása a CREATE VIEW paranccsal és a SELECT parancs segítségével történik: CREATE VIEW csak magasság (nev, mag) AS SELECT nev, mag FROM Alkalmazott (ACCESSben nem kivitelezhető) Indexelés is lészíthető: (adatdefiniáló

lekérdezés) CREATE INDEX nevindex ON Alkalmazott(nev); Az SQL nyelv számos magasszintű programnyelvbe beépíthető. PL: COBOL, PASCAL, C, dBase) Egy szoftver adatbázis-kezelő rendszernek minősíthető, ha » biztosítja az adatoknak programtól való fizikai és logikai függetlenségét » rendelkezik felhasználóbarát szolgáltatásokkal (űrlap, lekérdezés, jelentésgenerátor) 41 Relációs adatbázis-kezelő rendszer esetén ezen követelmények még legalább három taggal kibővülnek: » a relációban az oszlopokat nevükkel lehessen azonosítani és a sorok sorrendje tetszőleges lehessen » a relációs műveletek eredménye is reláció legyen » az alapvető relációs műveletek között szerepeljen az egyesítés (bár léteznek olyan adatbázis-kezelő rendszernek tartott szoftverek, amelyek a JOIN műveletet nem teszik lehetővé) {A táblakészítés SQL parancsa ACCESSben: CREATE TABLE Alkalmazott (szemszam text, nev text, mag smallint, fizetes

integer, osztkod text, CONSTRAINT index1 PRIMARY KEY (szemszam)) A táblakészítés és az index létrehozása adatdefiniáló lekérdezéssel történik, a sorok beszúrása hozzáfűző lekérdezés, a módosítás UPDATE-tel frissítő lekérdezés, a törlés pedig törlő lekérdezés.} Az SQL kulcsszavak táblázatos összefoglalása: Angol kulcsszó Jelentése CREATE UPDATE DELETE FROM SELECT FROM WHERE létrehoz módosít töröl kiválaszt -ból, -ből ahol ASC DESC ORDER BY LIKE INDEX növekvő csökkenő rendezze hasonló indexelés VIEW nézet Utána mit kell írni? a létrehozandó táblázat azonosítója (neve) a módosítandó rekordokat tartalmazó táblázat neve a törlendő rekordokat tartalmazó táblázat azonosítója (neve) a kiíratandó mezők nevei a felhasznált (egyesítendő) táblázatok neve(i) a korlátozás és/vagy egyesítés (join) feltétele (egynél több táblázat esetén) a rendezendő mező neve amihez hasonlót keresünk a

táblázat(ok)ban a létrehozandó indexfile neve, majd ON és hogy melyik tábla melyik oszlopából készítjük az indexfilet SELECT szerkezet 42 Tranzakciók (műveletek) és egyidejűség Egy tranzakció alatt általában olyan adatbázis-elérési, illetve adatbázis-módosító műveletek csoportját értjük, melyeket atomian kell végrehajtani, azaz: vagy a csoportba tartozó minden műveletet végre kell hajtani, vagy ha ez vmilyen oknál fogva nem lehetséges, akkor egyet sem szabad közülük végrehajtani. A legtöbb adatbázis-kezelő rendszer az SQL nyelv miatt szigorúan megköveteli a tranzakciók sorbarendezhetőségét, bár van 1-2 olyan adatbázis-kezelő rendszer is, amely nem ragaszkodik szigorúan a sorbarendezhetőséghez. Ez azért is fontos, mivel a tranzakcióknak olyan összetett műveleteknek kell lenniük, amelyek teljesen és hibátlanul végrehajtódnak. A sorbarendezhetőség azt sugallja, hogy ezek az összetett műveletek egymás után fognak

végrehajtódni. Probléma akkor van, ha a művelet során az adatbázis összeomlik (pl: van két bankszámlánk, az egyikből vmennyi pénzt ki akarunk venni, a másikra pedig ugyanennyit rá szeretnénk tenni. Probléma akkor áll fenn, ha levonni már sikerült, de mielőtt rátennénk a másikra a pénzt, a rendszer összeomlik. Így veszélybe kerülne a tranzakció, mint logikai egység. Ennek elkerülésére vezették be a COMMIT illetve a ROLLBACK eljárást Tranzakciók felépítése: A tranzakció egy adatbázist vagy annak sémáját lekérdező vagy módosító SQL paranccsal kezdődik, a befejeződésekor pedig közölnünk kell az adatbázis-kezelő rendszerrel a befejeződését, ennek módja a COMMIT vagy ROLLBACK eljárások meghívása. A COMMIT utasítással egy tranzakció sikeres befejeződését jelezzük. Ha a tranzakció sikeres volt, akkor a tranzakció kezdete óta végrehajtott módosításokat véglegesíteni lehet. A COMMIT utasítás végrehajtása előtt

a módosítások nem véglegesítődtek, az általuk okozott adatmódosítások, illetve adatbázis-módosítások a párhuzamosan futó tranzakciók elől akár el is lehet takarva (azaz csak akkor láthatjuk ezeket a módosításokat, ha már véglegesítettük azokat). A ROLLBACK utasítással egy tranzakció sikertelen befejezését jelezzük. Egy így befejezett tranzakció SQL utasítása által végrehajtott módosításokat az SQL rendszer meg nem történtté teszi, azok nem jelennek meg többé az adatbázisban. (Más szóval a tranzakció abortál, módosításai visszagörgetésre kerülnek. Azért, hogy az eredeti állapot visszaállítható legyen, a rendszer „naplózza” a hozzáféréseket. A napló (journal) file-okban tárolódik a tranzakció, hozzáférési módja (write, read, azaz írható vagy olvasható), az adatazonosító, a régi érték és az új érték. A csak olvasható (read only) tranzakciók nem módosíthatják az adatbázis tartalmát. Minden

tranzakciónak külön azonosítója van egy a rendszerben. A naplózás a felsorolt adatokon kívül egy-egy tranzakció kezdő és befejező időpontját, valamint a befejezés módját (commit, abort) is tárolja. Többfelhasználós rendszerekben megjelenik az egyidejűség kezelésének kérdése. Az adatbázis-egyidejűség azt jelenti, hogy a relációkhoz, sorokhoz, attribútumokhoz, nézetekhez számos felhasználó és alkalmazás egyidejűleg tud hozzáférni. Ennek célja, hogy a tranzakciókat párhuzamosan dolgozhassuk fel, vagyis a rendszer kiszolgálja az egyik tranzakciót képző műveleteket, ezzel párhuzamosan pedig egy másik tranzakcióhoz szükséges műveleteket is. Ez a számítógépes erőforrások sokkal hatékonyabb felhasználását teszi lehetővé, az adatbázis teljesítményének növekedését eredményezi. Példa: Képzeljük el, hogy jegyet szeretnénk foglaltatni egy repülőjáratra. A helyfoglalás tranzakciója (T1) ebben az esetben egy

lekérdezésből és (van-e hely) és egy módosításból (update) áll. Tegyük fel, hogy velünk egy időben valaki ugyanezt teszi (T2) Továbbá tegyük fel, hogy a párhuzamosságot úgy oldja meg a rendszer, hogy felváltva, mindegyik műveletsorból elvégez egy picit. Ha az idő függvényében tekintjük ezt a két műveletsort, 43 akkor előfordulhat a következő eset: A T1-ben megnézzük van-e hely és lefoglalunk egyet, majd T2-ben is ugyanezt tesszük. Ebben az esetben, a T2-ben is ugyanannyi hely lesz kezdetben, mint T1-ben, mivel T1 módosítását még nem véglegesítettük. Így a T1 rendelés elveszik. Hogyan lehet ezt megoldani? Egy lehetséges megoldás, hogy előbb be kell teljesen fejezni vmelyik tranzakciót. Ez az ún soros ütemezés Elképzelhető azonban más, nem soros ütemezés is. Egy konkrét példa a COMMIT és ROLLBACK használatára pszeudo-kóddal (mondatszerkezeti leírással), magyarázat [ ] zárójelben, dőlt betűvel. A példa egy

automatából történő pénzkivételt modellez: Begin transaction kivonás(forrásszámla, mennyiség) [kivonás a tranzakció neve, a két paramétert pedig a tranzakció elején megadjuk, vagyis a számlaszámot=forrásszámlaszám, és azt, hogy mennyit akarunk kivenni=mennyiség] ON ERROR GOTO CRASH [ugrás a CRASH címkéjű programrészre, ha valami hiba baj a rendszerrel, szoftver vagy hardver hiba esetén] SELECT ennyi van most FROM számla WHERE számlaszám=forrásszámlaszám [lekérdezzük, mennyi pénz van a számlánkon] IF <hiba> THEN [logikai hiba, nem volt sikeres a lekérdezés: nem találta a számlát] Üzenet: ’nincs ilyen számla’ ROLLBACK [régi állapot visszaállítása] End IF [IF - End IF egy elágazás, ha nincs számla csinálja azt, ami az IF és End IF között található, ha nincs hiba hagyja ezt a részt ki és lépjen az end if utáni első sorra] UPDATE számla SET ennyi van most=ennyi van most-mennyiség WHERE

számlaszám=forrásszámlaszám [Módosítjuk a számlánkat: kivonjuk a számlán lévő összegből azt a mennyiséget, amit ki akarunk venni] IF ennyi van most<0 then [logikai hiba, ha nincs annyi pénz a számlánkon, amennyit ki akarunk venni] Üzenet: ’nincs elég pénz a számlán’ ROLLBACK [visszaállítja a régi állapotot – lekérdezés előttit] End IF Üzenet: mennyiség ’levonva’ COMMIT [ha semmilyen szoftver, vagy hardver hiba nem volt, megtalálta a rendszer a számlánkat és le is tudott róla venni annyit, amennyit szerettünk volna, akkor a művelet hibátlan volt, a módosítások véglegesíthetőek] CRASH: ROLLBACK [ez a CRASH címkéjű programrész, ha az elejéről ide ugrunk, akkor a régi állapot lesz visszaállítva a ROLLBACK paranccsal] Adatvédelem Az adatbázisok használata közben gondolni kell az adatok biztonságára is. Hiszen ha illetéktelenek férnek hozzá adatbázisokhoz, annak súlyos következményei lehetnek, nem beszélve

arról, ha illetéktelen személyek módosítják az adatbázist. Ennek megakadályozására az egyik leggyakoribb módszer a jelszavazás. Jelszót állíthatunk be az ACCESS-ben is az adatbázisunkra. Ezt az Eszközök menü Adatvédelem pontjának Adatbázisjelszó beállítása alpontjában tehetjük meg. Ez csak akkor működik, ha az adatbázist megnyitáskor kizárólagos módban nyitottuk meg (File menü Megnyitás menüpont, majd a megnyitás gomb melletti nyílra kattintva kiválasztjuk a Kizárólagos megnyitást). Ha ezek után szeretnénk megnyitni az adatbázist, akkor a megnyitás előtt megkérdezi a jelszót. Ha 44 meg akarjuk változtatni a jelszót, akkor előbb a régit törölnünk kell! (Törlés is csak kizárólagos módban!!) Ennél finomabb módszer az adatok felhasználó szintű védelme. Ekkor a felhasználónak már az Access-be való belépéskor azonosítania kell magát, és a későbbiekben a beállított jogosultság alapján férhet hozzá az

adatbázishoz. Ezt akkor érdemes használni, ha több felhasználó egyenrangú hálózati kapcsolatban áll egymással, néhányan közülük adatbevitellel, néhányan csak lekérdezéssel stb. foglalkoznak Ezt az Eszközök menü Adatvédelem pontjának Felhasználók és csoportok fiókjai (vagy Munkacsoport-adminisztrátor) alpontjával kivitelezhető. Itt lehet új nevet felvinni a Felhasználók fülnél abba a csoportba, ami éppen ki van jelölve, valamint a személyi kódját is meg kell adni az illetőnek. A jelszó módosítása fülre kattintva adhatjuk meg/módosíthatjuk az egyes felhasználók jelszavát. A csoportok fülben lehet új csoportot létrehozni és a Jelszó fülben pedig a jelszót módosítani. A Felhasználói és csoportengedélyek alpontban állíthatjuk be az egyes felhasználók/csoportok jogait az egyes objektumtípusokra (tábla, lekérdezés, űrlap, adatbázis, jelentés, makró), illetve megváltoztathatjuk az adatbázis tulajdonosát (ami

alapból a rendszergazda, akinek mindenhez joga van). Ha beállítottuk az új felhasználókat/csoportokat, adtunk nekik jelszót és jogokat, akkor az Access indításakor a beállított munkacsoporthoz csak a bejelentkezési párbeszédablak kitöltésével lehet kapcsolódni. Ezután tudjuk beállítani a felhasználókat és csoportokat, amelyben a Felhasználószintű adatvédelmi varázsló alpont segíthet. Dokumentáció Ha elkészítünk egy adatbázist gondos tervezés után, akkor azt az adatbázist dokumentálnunk is kell. A dokumentációt érdemes a feladat elkészítésének körülményeivel kezdeni (megbízás esetén milyen megbízás stb.), de ez el is maradhat A feladat specifikációjának azonban mindenképpen szerepelnie kell, azaz az összegyűjtött adatok alapján milyen adatokat fogunk tárolni az adatbázisunkban, és azok milyen kapcsolatban vannak egymással. Pl: Újságokat és azokat forgalmazó cég adatainak tárolásánál már itt eldönteni, és a

dokumentációba leírni, hogy egy újságot több cég is foraglmazhat-e, stb. A koncepcinális (magas szintű, ER-modell) modell is jelenjen meg a dokumentációban. Így meg tudjuk jeleníteni az egyes adattípusokat és az azok közötti kapcsolat fajtáit (1:1, 1:N, M:N, teljes vagy részleges). Érdemes egy Fogalomszótárt készíteni az ER-modellhez, az első látásra megfejthetetlen attribútumrövidítések felfedéséhez. Meg kell említeni, hogy az ER-modellt milyen típusú adatbázis-kezelő rendszerrel fogjuk megvalósítani (ez általában vmilyen relációs adatbázis). A dokumentáció mindenképpen tartalmazza a magas szintű modell leképezését, azaz relációs adatmodell esetén a relációkat, mezőket, elsődleges és idegen kulcsokat és a relációk közötti kapcsolatokat (adott reláció idegen kulcsa melyik reláció melyik mezőjére mutat). Érdemes az idegen és elsődleges kulcsok jelölésének módját külön leírni. (Pl: az elsődleges kulcsokat

folytonos vonallal húztam alá, az idegen kulcsokat pedig szaggatott vonallal.) És végül a fizikai tervezés dokumentálása: Az egyes relációk egyes mezőit hogyan valósítom meg: milyen típusú mező (szöveg, dátum stb.), hány karakter lehet maximum, kötelező kitöltésű vagy nem, indexelt-e vagy sem (ha egy mező – általában elsődleges kulcs – szerint indexelünk, akkor annak a mezőnek kötelező kitöltésűnek kell lennie), elsődleges kulcs-e, vagy idegen kulcs (összetett kulcsot külön le kell írni, melyik mezőkből képeztük), illetve ha használunk beviteli maszkot, az miből áll. Pl: beviteli maszk telefonszámnál olyan, hogy a telefonszám mindig a körzetszámmal kezdődik, majd perjel és a többi szám: 96/654321. 45 Vannak olyan adatbázis-kezelő rendszerek (pl. ORACLE 9), amelyek képesek jelentést készíteni adatbázisaikról, azaz a táblákról és kapcsolataikról, valamint a tárolásról, ez felfogható egy kezdetleges

dokumentációnak, segítségnek, amit kiegészítve készíthetünk egy részletes dokumentációt. Jól megvizsgálva a dokumentációt arra a következtetésre juthatunk, hogy gyakorlatilag az adatbázis-tervezés lépésein végighaladva írtuk le, dokumentáltuk, hogy mit csináltunk, azaz, hogy hogyan jutottunk el a konkrét adatbázisunkig. 46