900 likes | 1.01k Views
Adatbázisrendszerek megvalósítása. Vegera József. Adatbázis fogalma.
E N D
Adatbázisrendszerek megvalósítása Vegera József
Adatbázis fogalma • Adatbázison köznapi értelemben valamely rendezett, valamilyen szisztéma szerint tárolt adatokat értünk, melyek nem feltétlenül számítógépen kerülnek tárolásra. Az adathalmaz csak akkor válik adatbázissá, ha az valamilyen rend szerint épül fel, mely lehetővé teszi az adatok értelmes kezelését. Természetesen ugyanazon adathalmazból többféle rendszerezés alapján alakíthatunk ki adatbázist.
Adatbáziskezelő rendszer • Az adatbázisok mellé egy adatbáziskezelő rendszer (DBMS) is járul, mely az adatbázis vagy adatbázisok üzemeltetését biztosítja. Hagyományos adatbázis esetén ez a kezelő személyzet intelligenciájának része, elektronikus adatbázisok esetén pedig valamilyen szoftver. Példák?
Az adatbáziskezelők feladatköre • Függetlenség az aktuális hardver konfigurációtól • Függetlenség az adatelérés módjától • Függetlenség az adatstruktúráktól
Adatbázis modellek • Hierarchikus adatbázis modellCsak 1:n típusú kapcsolatok képezhetők le segítségével. • Hálós adatbázis modellEbben a modellben n:m típusú adatkapcsolatok is leírhatók. Az adat visszakeresése csak a tárolt kapcsolatok segítségével bejárható.
Adatbázis modellek • Relációs adatbázis modellAz adatokat táblázatok soraiban képezzük le. • Objektum-orientált modellAz egyes adatbázis elemek (objektumok) "tudják", hogy kik ők, mire használhatók, s miként kapcsolódnak a többi adatbázis-elemhez.
Személyi szám Név Város Foglalkozás 1 650410 1256 Kiss lászló Győr kőműves 2 781117 0131 Nagy Ágnes Szeged tanuló 1 610105 1167 Kiss László Budapest lakatos Relációk • A reláció nem más mint egy táblázat, a táblázat soraiban tárolt adatokkal együtt. Személy Az előző relációból a személyi szám oszlopot elhagyva relációnak tekinthető-e a táblázat? Mivel nem zárható ki, hogy két azonos nevű és szakmájú személy éljen egy településen belül a személyi szám nélkül két azonos sor is szerepelhetne, mely a relációban nem megengedett.
Funkcionális kapcsolat • Egy vagy több adat konkrét értékéből más adatok egyértelműen következnek. Például a személyi szám és a név között funkcionális kapcsolat áll fenn, mivel minden embernek különböző személyi száma van. Ezt a SZEMÉLYI_SZÁM -> NÉV kifejezéssel jelölhetjük.
Funkcionális függőség • A funkcionális függőség bal oldalát a függőség meghatározójának nevezzük.A NÉV -> SZÜLETÉSI_ÉV állítás nem igaz, mert több személynek lehet azonos neve, akik különböző időpontokban születtek.
Függőség több attribútumnál • A funkcionális függőség jobb oldalán több attribútum is állhat. Például az AUTÓ_RENDSZÁM -> TIPUS, TULAJDONOS funkcionális függőség azt fejezi ki, hogy az autó rendszámából következik a típusa és a tulajdonos neve, mivel minden autónak különböző a rendszáma, minden autónak egy tulajdonosa és típusa van.
Kölcsönös függőség • például a házastársak esetén FÉRJ_SZEM_SZÁMA -> FELESÉG_SZEM_SZÁMA, illetve FELESÉG_SZEM_SZÁMA <- FÉRJ_SZEM_SZÁMA. Mindkét funkcionális kapcsolat igaz és ezt a FÉRJ_SZEM_SZÁMA <-> FELESÉG_SZEM_SZÁMA jelöléssel fejezzük ki.(Többnejűség..)
Teljes funkcionális függőség • A meghatározó oldalon nincsen felesleges attribútum. A RENDSZÁM, TÍPUS -> SZÍN funkcionális függőség nem teljes funkcionális függőség, mivel a rendszám már egyértelműen meghatározza a kocsi színét, ehhez nincs szükség a típusra is.
Relációk leírása • reláció_név=({attribútumok}, {funkcionális függőségek listája}) • Pl: SZEMÉLYEK=({SZEMÉLYI_SZÁM,NÉV, MUNKAHELY}, {SZEMÉLYI_SZÁM -> NÉV, SZEMÉLYI_SZÁM -> MUNKAHELY})
Többértékű függőség • Az egyik attribútumhoz egy másik attribútum csoportja, halmaza kapcsolódik. • Például minden embernek lehet több szakmája. Jelölése: SZEMÉLYI_SZÁM ->> SZAKMAEgy attribútum értékéből egynél több további attribútum értéke is következhet: SZEMÉLYI_SZÁM ->> SZAKMA, OKLEVÉL_KELTE
Reláció kulcs A reláció kulcs a reláció egy sorát azonosítja egyértelműen. A reláció - definíció szerint- nem tartalmazhat két azonos sort, ezért minden relációban létezik kulcs. Jellemzői: • az attribútumok egy olyan csoportja, melyek csak egy sort azonosítanak (egyértelműség) • a kulcsban szereplő attribútumok egyetlen részhalmaza sem alkot kulcsot • a kulcsban szereplő attribútumok értéke nem lehet definiálatlan (NULL)
Összetett kulcsok, idegen kulcsok • A kulcs több attribútum érték összekapcsolásával állítható elő. • A relációban külső kulcsot vagy kulcsokat is megkülönböztethetünk. Ezek az attribútumok nem az adott relációban, hanem az adatbázis másik relációjában alkotnak kulcsot.
Redundancia • Ha valamely tényt vagy a többi adatból levezethető mennyiséget ismételten (többszörösen) tároljuk az adatbázisban. Könnyen az adatbázis inkonzisztenciáját okozhatja, a felesleges terület lefoglalásán túl.
Elsődleges attribútum • Azokat az attribútumok, melyek legalább egy reláció kulcsban szerepelnek. A többi attribútumot nem elsődlegesnek (másodlagosnak) nevezzük.
Első normál forma (1NF) • Egy reláció első normál formában van, ha minden attribútuma egyszerű, nem összetett adat. • Annak eldöntése, hogy egy attribútumot egyszerűnek vagy összetettnek tekintünk nem mindig egyértelmű, az adatok felhasználásától is függ.
Terem Időpont Előadás Férőhely B 10:00 Mitológia 250 A 8:30 Irodalom 130 B 11:30 Szinház 250 A 11:00 Festészet 130 A 13:15 Régészet 130 Második normál forma (2NF) • A reláció első normál formában van • A reláció minden nem elsődleges attribútuma teljes funkcionális függőségben van az összes reláció kulccsal
Szakkör Tanár Születési év Képzőművész Sár Izodor 1943 Iparművész Sár Izodor 1943 Karate Erős János 1972 Harmadik normál forma (3NF) • A reláció második normál formában van. • A reláció nem tartalmaz funkcionális függőséget a nem elsődleges attribútumok között. Szakkörök
Boyce/Codd normál forma (BCNF) • Több kulccsal rendelkező relációk esetén minden elsődleges attribútum teljes funkcionális függőségben van azokkal a kulcsokkal, melyeknek nem része.
Tanár Időpont Tantárgy Félév Diák_szám Kiss Pál 93/1 Adatbázis 1 17 Jó Péter 93/1 Unix 1 21 Kiss Pál 93/2 Adatbázis 2 32 Jó Péter 93/1 Unix 2 19 KissPál 93/1 Adatbázis 3 25 Példa BCNF szükségességére Tantárgyak A relációnak két kulcsa van, a (Tanár, Időpont, Félév) és a (Tantárgy, Időpont, Félév). A tanár attribútum az őt nem tartalmazó reláció kulcs (Tantárgy, Időpont, Félév) csak egy részétől (Tantárgy, Félév) függ.
Negyedik normál forma (4NF) A többértékű függőségekből adódó redundancia kiszűrését szolgálja. • Harmadik normál formában van. • Egy X->>Y többértékű függőséget tartalmazó relációban csak az X és Y-ban megtalálható attribútumokat tartalmazza.
Személy Barát Hobbi Nagy József Elek Attila foci Nagy József Varga Attila foci Kiss Péter Kiss Pál sakk Kiss Péter Kiss Pál video Példa 4NF szükségességére Barátok-hobbik • Az eredeti reláció kulcsa valamennyi attribútumot tartalmazza, mégis tartalmaz redundanciát, ugyanaz a személy-barát illetve személy-hobby kapcsolat többször is szerepelhet.
Tanár Tanfolyam Helyszín Nagy Éva Adatbázis I. Szeged Kiss Pál Adatbázis I. Győr Nagy Éva Adatbázis II. Pécs Kiss Pál Adatbázis I. Pécs Ötödik normál forma (5NF) Tanár-Tanfolyam-Helyszín • A többértékű függőségek külön relációkban tárolásával információt veszthetünk.Tanár->>Tanfolyam, Tanfolyam->>Helyszín
Tanár Tanfolyam Nagy Éva Adatbázis I. Kiss Pál Adatbázis I. Nagy Éva Adatbázis II. Tanfolyam Helyszín Adatbázis I. Szeged Adatbázis I. Győr Adatbázis II. Pécs Adatbázis I. Pécs Példa 5NF szükségességére Tanfolyam-Helyszín • Előzőek szerinti felbontás után információt vesztünk. Hol? Megoldás? Tanár_Tanfolyam
Indexek fogalma és felépítése • A relációkhoz kapcsolt indexek segítségével az index kulcs ismeretében közvetlenül megkaphatjuk a kulcsot tartalmazó sor fizikai helyét az adatbázisban. Az indexek képzésére két módszer terjedt el, a hash kódok és a bináris fák.
Hash kód • egy számítási algoritmus alapján magából az index kulcsból alakul ki a hash kód, mely alapján egy táblázatból kiolvasható a keresett értéket tartalmazó sor fizikai címe. A hash kód számítási algoritmusa nem mindig ad különböző értékeket az index kulcsokra. Az azonos kódot adó kulcsokat összeláncolják egy listában.
Bináris fák • Ehhez az index kulcsokat növekvő vagy csökkenő sorrendbe kell rendezni. A keresés mindig a gyökértől kezdődik, a megfelelő ág felé folytatódik, és akkor ér véget, ha egy levélhez érünk. Ha a levélben tárolt index kulcs azonos a keresettel, akkor megtaláltuk a keresett értéket, ellenkező esetben sikertelen volt a keresés.
Bináris fák • Felépítésénél arra törekszenek, hogy a fa valamennyi ága azonos hosszúságú legyen (kiegyensúlyozott fa). • A gyakorlati megoldásokban a hatékonyság kedvéért a csomópontokban nem csak egy index kulcs értéket tárolnak, hanem a háttértár tárolási egység (blokk) méretének megfelelő számút. • A reláció sorait az index kulcs szerinti növekvő vagy csökkenő sorrendben is végigjárhatjuk.
Relációs algebra műveletei • Szelekció • Projekció • Descartes szorzat • Összekapcsolás • Halmaz műveletek (unió, metszet, különbség)
Az SQL lekérdező nyelv • adatdefiníciós nyelv, DDL • adatmanipulációs nyelv, • lekérdező nyelv • adatvezérlő nyelv
Az SQL lekérdező nyelv • adatdefiníciós nyelv, DDL • adatmanipulációs nyelv, DML • lekérdező nyelv, QL • adatvezérlő nyelv, DCL Az SQL halmaz orientált nyelv, mely a relációkon dolgozik. Nem kell definiálni a művelet végrehajtásának lépéseit. A művelet végrehajtásához optimális megoldás megtalálása a nyelvi processzor feladata, nem a programozóé. (Elvileg..)
Az adatdefiniciós nyelv • Segítségével hozhatjuk létre (CREATE), illetve szüntethetjük meg (DROP) a relációkat, az indexeket illetve a nézet táblázatokat. • Pl: CREATE TABLE Tanarok (Tanar_azonosito NUMERIC (4) PRIMARY KEY, Nev CHAR (30) NOT NULL, Cim CHAR (40) NOT NULL, Telefon CHAR (15));
CREATE TABLE általános alakja • CREATE TABLE reláció_név(attribútum_név adattípus [(szélesség)] [CONSTRAINT megszorítás_név] [oszlop_megszorítás],.. ) [CONSTRAINT megszorítás_név] [tábla_megszorítás];
Oszlop megszorítás • NULL az attribútum definíciójában arra utal, hogy az adat megadása nem kötelező (alapértelmezett). • NOT NULL az attribútum definíciójában arra utal, hogy az adat megadása kötelező, azaz nem vihető be olyan sor a relációban, ahol az így definiált adat nincs kitöltve. • PRIMARY KEY ez az oszlop a tábla elsődleges kulcsa. • UNIQUE ez az oszlop a tábla kulcsa. • CHECK(feltétel) csak feltételt kielégítő értékek kerülhetnek be az oszlopba. • [FOREIGN KEY] REFERENCES tábla [ (oszlop) ], ez az oszlop külső kulcs.
Tábla megszorítás A tábla megszorításban több oszlopra vonatkozó korlátozásokat adhatunk meg. • PRIMARY KEY(oszlop1[, oszlop2, ...]) ezek az oszlopok együtt alkotják az elsődleges kulcsot. • UNIQUE(oszlop1[, osylop2, ...]) ezek az oszlopok együtt kulcsot alkotnak. • CHECK(feltétel) csak feltételt kielégítő sorok kerülhetnek be a táblába. • FOREIGN KEY (oszlop1[, oszlop2, ...]) REFERENCES tábla(oszlop1[, oszlop2, ...]), az oszlopok külső kulcsot alkotnak a megadott tábla oszlopaihoz.
Reláció módosítása • ALTER paranccsal • ALTER TABLE reláció_név ADD (bővítés) • ALTER TABLE reláció_név MODIFY (változtatás) • ALTER TABLE reláció_név DROP (szűkítés) • Pl: ALTER TABLE Diakok MODIFY nev CHAR (40) NOT NULL;
Az adatmanipulációs nyelv • A relációk feltöltését (INSERT), az attribútumok módosítását (UPDATE) és a sorok törlését (DELETE) biztosítja. • Pl: INSERT INTO Diakok (Diak_azonosito, Nev, Cim, Osztaly)VALUES (435, 'Nagy Istvan', 'Budapest O utca 3.', '3.b');
Általános szintaktikájuk • INSERT INTO reláció [(attribútum_név, attribútum_név, ...)]VALUES (érték, érték, ...); • UPDATE reláció_névSET attribútum_név = érték, attribútum_név = érték, ...[WHERE feltétel]; • DELETE FROM reláció_név[WHERE feltétel];
A lekérdező nyelv • Projekció:SELECT [DISTINCT]attribútum_név, attribútum_név, ... FROM reláció_név; • Szelekció: SELECT attribútum_név, attribútum_név, ... FROM reláció_névWHERE feltétel; • Pl: SELECT idopont, tantargy FROM orarend WHERE osztaly = '3/b';
Operátor Operátor Értelmezés Értelmezés = NOT egyenlő Logikai tagadás != <> ^= AND Logikai és nem egyenlő OR > nagyobb Logikai vagy >= nagyobb egyenlő "<" kisebb "<=" kisebb egyenlő SELECT operátorai Összehasonlító operátorok Logikai operátorok
Operátor Értelmezés BETWEEN x AND y adott értékek közé esik IN (a, b, c, ...) az értékek között található LIKE minta hasonlít a mintára SELECT operátorai Összehasonlító operátorok halmazokra SELECT Diak_azonosito FROM Osztalyzatok WHERE Osztalyzat BETWEEN 3 AND 5 AND tantargy = 'matematika';
Lekérdezések csoportosítása • A lekérdezés eredményét csoportosíthatjuk és a csoportok között is további szelekciót alkalmazhatunk a GROUP BY és HAVING alparancsokkal. • SELECT attribútumok FROM reláció[WHERE feltétel]GROUP BY attribútum[HAVING csoport_feltétel];
Csoportfüggvények • AVG (attribútum) • COUNT (attribútum) • COUNT (*) • MAX (attribútum) • MIN (attribútum) • SUM (attribútum) • STDDEV(attribútum)
Példa csoportfüggvényre • SELECT Osztály, COUNT (*) FROM Diakok GROUP BY OsztalyHAVING COUNT (*) > 5
Konverziós függvények • Karakteres (LENGTH, UPPER, SUBSTR..) • Numerikus (ROUND, TRUNC, SQRT..) • Dátum (TO_CHAR, MONTH_BETWEEN)
Összekapcsolások • Belső (INNER JOIN) • Külső (OUTER JOIN) • LEFT JOIN • RIGHT JOIN
Unió Metszet Különbség SELECT ....UNIONSELECT ... SELECT ...INTERSECTSELECT ... SELECT ... MINUSSELECT ... Halmazműveletek A MINUS kulcsszó helyett az EXCEPT használandó néhány adatbáziskezelőben