Adatbázis kezelés Dr. Iszály György Barna
Egy kis történelem –
A 60'-as évek eleje: a programnyelvek képesek állományokat kezelni, de számos probléma merült fel: – –
– –
–
–
Egy adott programban adott szerkezetű állományt kezelhetek. Ha az állomány szerkezete megváltozik, akkor át kell írni a programot. Egyedi alkalmazások vannak. Azaz ha valaki egy adott állományt használni akar, akkor az adott állomány kezelőprogramját kell használnia. Ha állományt akarok kezelni, akkor meg kell tanulnom egy adott programnyelv erre alkalmas eszközrendszerét. Csak minimális automatikus adatvédelem van. (Illetéktelen hozzáférés ellen - jogosultság , és adatsérülés ellen.) Az adatokhoz való konkurens hozzáférést az állománykezelő nem biztosítja.
A 60'-as évek második felében az IBM-nél születik egy megoldás a felmerült problémákra: –
1970 Az első adatbázis-kezelő rendszer az IBM-től: ISM
CODASYL DBTG – – –
1969 Conference On DAta SYstem Language Data Base Task Group – CODASYL DBTG A CODASYL-on belül megalakul egy csoport, a DBTG (Data Base Task Group), ami a felvetett problémákra dolgoz ki elveket. 1971-ben megszületik a CODASYL DBTG jelentés: – Egy adatbázis-kezelő szoftvernek összetett logikai adatrendszereket kell tudni kezelnie. Lehetőleg többet is egyszerre. – Az irányított redundancia fogalmát vallja: tiltja a redundanciát, de a feldolgozás gyorsítása érdekében megengedi akkor, ha kézben lehet tartani. – Redundáns tárolás konzisztencia-problémát okoz. – Ha egy adathalmaz belső ellentmondásos, akkor inkonzisztens, egyébként konzisztens. – Konkurens hozzáférést kell biztosítania az adatbázis-kezelő rendszernek. – Többféle elérési módot kell támogatnia egy időben. – Támogasson többféle programozási nyelvet. – Támogassa az emberi logikát szemben a gépivel. – A jogosultság szempontjából lényeges, hogy egy adatmodell szemléletet valósítson meg nézeteket lehessen kezelni. (Egy felhasználó csoport csak bizonyos adatokhoz férjen hozzá.) – Visszaállítható legyen - ha sérül az adat (inkonzisztens állapotba kerül a rendszer), akkor azt lehessen felismerni, és helyreállítani. – Adat-program függetlenség logikai és fizikai szinten. – Logikai szinten: Ha az adatok szerkezete megváltozik, ne kelljen a program szerkezetét megváltoztatnom. – Fizikai szinten: Egy adott program tudja feldolgozni az adathalmazt függetlenül attól, hogy hol van fizikailag.
Analízis, tervezés, implementálás Valós világ
Analízis, a követelményrendszer felírása Funkcionális követelmények Funkcionális tervezés Magasszintű tranzakciós specifikáció
Adatbázis követelmények Koncepcionális tervezés Koncepcionális (adat)modell Logikai tervezés
Alkalmazói programtervezés Programspecifikáció
Logikai (adat)modell
Tranzakció implementálás
Fizikai tervezés
Alkalmazás
Belső (fizikai) (adat)modell
Az adatmodellezés szintjei –
Az adatmodellezés 3 szinten történik: –
–
–
–
Koncepcionális szint - teljesen absztrakt, számítógép független, azaz nem függ sem a szoftvertől, sem pedig az operációs rendszertől Logikai szint - a logikai tervezésnél kerül be konkrétan az adatbázis kezelő rendszer Fizikai szint - a teljes fizikai megvalósítás
A szaggatott vonalig az adatbázis-kezelés a tervezéssel foglalkozik, ez a rész gépfüggetlen. Az ezt követő rész már hardver- és szoftverfüggő.
Adatmodellezés alapfogalmai Bachmann féle fogalomrendszer –
–
– –
– –
–
Egyed: a valós világ egy eleme, amely a modellezésünk tárgyát képezi pl.: Főiskolai rendszerben HALLGATÓ( NÉV, LAKCÍM, SZÜLETÉSI_HELY, SZAK) Tulajdonság - attributum: az egyed jellemzője, ismérve Tulajdonságtípus: pl. a szemszín Tulajdonság előfordulás: ha megadjuk a konkrét tulajdonságértéket Egyedtípus: egy absztrakció. A tulajdonságtípusok határozzák meg. Egyed-előfordulás: ha az egyedhez tartozó összes tulajdonságértéket megadjuk. – Két egyedtípus akkor különbözik, ha legalább egy tulajdonságtípusuk különbözik – Két egyed előfordulás akkor tartozik egy egyedtípushoz, ha ugyanazon tulajdonságtípusok jellemzik – Két egyed-előfordulás akkor különbözik, ha legalább egy tulajdonság-előfordulásukban különböznek. Azonosítótulajdonság-típus, kulcstulajdonság-típus: Azon tulajdonságok csoportját, amelyek értéke a típus minden előfordulásában különböző, azaz egyedi, az adott egyedtípus azonosító-tulajdonságtípusának, vagy kulcstulajdonságtípusának nevezzük. – Egyszerű kulcs: csak egy azonosítótulajdonság-típus van – Összetett kulcs: több azonosítótulajdonság-típus van
Adatmodellezés alapfogalmai Bachmann féle fogalomrendszer – – –
–
–
Kapcsolat: egyedtípusok közötti viszony leírása. Minimum két egydtípus szükséges hozzá. Kapcsoló tulajdonságtípus: Két egyedtípus kapcsolatban van egymással, ha van közös tulajdonságtípusuk. Kapcsolat előfordulás: a két egyedtípusnak közös értéke van a kapcsoló-tulajdonságtípusnál Leíró tulajdonságtípus: a kapcsolatt írja le. Azok a tulajdonságtípusok, amelyek nem kapcsoló és nem azonosító tulajdonságtípusok Koncepcionális adatmodell: Véges számú egyedtípus, amiket véges számú tulajdonságtípus határoz meg, és közöttük véges számú kapcsolattípus fordul elő.
Attributumok osztályozása –
Az attribútum előfordulás hány értéket vehet fel 1-1 előfordulásnál: –
–
–
Tárolt attribútum –
–
egyszerű (atomi) - csak egy értéket vehet fel pl.: név Összetett vagy halmazértékű – értékek csoportját vehetik fel (strukturált típusok is lehetnek pl.: lakcím) pl.: tantárgyak
Az egyes előfordulások értékei megjelennek a fizikai adatbázisban.
Származtatott –
Értékei nem találhatóak meg a fizikai állományba, más attribútumokból határozhatjuk meg őket.
Nullértékű attribútum –
Nullértékű attribútum : ha egy egyedelőfordulás esetén az adott attribútum értéke ismeretlen a következő értelemben: – –
–
–
Tudjuk, hogy létezik, de csak nem áll a rendelkezésünkre pl.: születési dátum Nem tudjuk, hogy egyáltalán létezik-e az adott érték pl.: telefonszám Az adott előfordulásnál nem is létezhet az érték
A tulajdonságtípusok rendelkeznek értéktartománnyal, ahonnan az értéküket fölvehetik.
Kapcsolat –
Kapcsolat foka: azt adja meg, hogy hány egyedtípus vesz részt a kapcsolatban. –
–
Két egyedtípus esetén: bináris
Kapcsolat számossága: Azt adja meg, hogy a kapcsolat előfordulásában hány egyedelőfordulás vesz részt. Eszerint három kapcsolat létezik.
1:1 kapcsolat –
Ha a kapcsolat előfordulásában pontosan egy-egy előfordulás vesz részt mindkét egyedtípusból.
FÉRFI
1:1 számosság
NŐ
1:N kapcsolat –
Ha az egyik egyedtípusból egy, míg a másik egyedtípusból több előfordulás vesz részt a kapcsolat előfordulásában.
HALLGATÓ
1:N számosság
TANTÁRGYFELVÉTEL
N:M kapcsolat –
Ha az egyik egyedtípusból is, és a másik egyedtípusból is több előfordulás vesz részt a kapcsolat előfordulásában.
TANULÓ
N:M számosság
OKTATÓ
Kapcsolat szorossága –
Kapcsolat szorossága: Azt fejezi ki, hogy a két egyedtípus előfordulásai közül mennyi vesz részt a kapcsolat realizálásában. –
–
–
–
Kötelező: ha mindkét oldalon, minden előfordulásnak részt kell vennie a kapcsolatban. Félig kötelező: ha az egyik oldalon minden előfordulásnak részt kell vennie a kapcsolatban, a másik oldalon viszont nem. Fordítva ez nem igaz. Opcionális: ha mindkét oldalon lehetnek olyan előfordulások, amelyek nem vesznek részt a kapcsolatban.
Rekurzív kapcsolat: Speciális bináris kapcsolat. Az egyedtípus önmagával áll kapcsolatban.
Bachmann féle sémaleíró modell –
– –
–
Ha megalkotunk egy modellt, és formálisan is rögzítjük, akkor keletkezik a séma. A séma egy formalizált modell. Egyedtípus: téglalap, amibe beleírjuk az egyedtípus nevét csupa nagy betűvel Tulajdonságtípus: vagy a téglalapban, vagy a mellett felsoroljuk ezeket. Aláhúzzuk az azonosítókat.
Kapcsoló tulajdonságtípus
1:1 számosság
1:N számosság
N:M számosság
Séma elemek Egyszerű hierarchia
Összetett hierarchia
Tulajdonos egyedtípus
Tag egyedtípus
Rekurzivitás
Háló
Példa az adatbázis sémára HALLGATÓ hallgató_azonosító (azon.) hallgató_név lakcím ( összetett tulajdonságtípus) szak születési_dátum
TANTÁRGY tantárgy_kód (azon.) kredit tantárgy_név elméleti_óraszám gyakorlati_óraszám előfeltétel helyettesítő meghirdetés_féléve
ÓRAREND terem (azon.) időpont (azon.) oktató_azonosító tantárgy_kód előadás v. gyakorlat óraszám maxmimális_létszám
TANTÁRGYFELVÉTEL hallgató_azonosító (azon.) félév tantárgy_kód
OKTATÓ oktató_azonosító (azon.) oktató_név szobaszám telefonszám tanszék_név tanszékvezető_név
Példa az adatbázis sémára
OKTATÓ
TANTÁRGY
ÓRAREND
HALLGATÓ
TANTÁRGYFELVÉTEL
Adatbázisrendszer –
– –
A számítógép, az adatok, a kezelő szoftver és az ember együttese. Adatbázisrendszer felépíthető tetszőleges plattformon. Két része van: – –
–
Fizikai adatbázis: az egyedelőfordulásokat tartalmazza Metaadatbázis vagy adatszótár: a sémát leíró adatok vannak benne.
Az adatbázis mindig összetett fájlszerkezetekkel reprezentáljuk
Adatbáziskezelő rendszer –
– –
Szoftver: Az adatbázis-kezelő rendszer. Konkrét operációs rendszer környezetben fut. Az adatbázis-kezelő rendszernek van egy saját nyelve, amelyen keresztül hozzá lehet férni az adatbázis-kezelő rendszernek szolgáltatásaihoz. Két típusa van: –
Saját nyelvű rendszerek: – – –
–
Az adatbázis-kezelő rendszernek van egy saját nyelve Nem használ magasszintű programozási nyelvet Általában interpreteres
Befogadó nyelvű rendszerek – –
Valamilyen magasszintű programozási nyelvvel lehet programozni: befogadó nyelv Létezik egy előfordító, amely a az adott nyelven írt programot lefordítja.
Három szintű architektúra FELHASZNÁLÓ Alkalmazás
Alkalmazás
Alkalmazás
NÉZET 1
NÉZET 2
NÉZET N
Külső szint Koncepcionális séma
Belső séma
Koncepcionális szint Belső /fizikai/ szint
Szintek –
Belső szint: –
–
Koncepcionális szint: –
–
– –
–
A koncepcionális sémát tartalmazza. (Véges számú egyedtípus, amiket véges számú tulajdonságtípus határoz meg, és közöttük véges számú kapcsolattípus fordul elő.)
Külső szint: –
–
maga a fizikai szint
A felhasználók csak az adatbázis bizonyos részeit láthatják. Ehhez tudni kell alsémákat létrehozni, felbontva a koncepcionális sémát. Az alsémák átfedhetik egymást, de függetlenek egymástól.
A külső és koncepcionális szint szétválasztása biztosítja a logikai adat-program függetlenséget. A koncepcionális és belső szint szétválasztása biztosítja a fizikai adat-program függetlenséget.
Az emberi tényező – – –
–
Elemző Tervező Alkalmazásfejlesztő Adatbázis adminisztrátor (DBA): a legfontosabb személy –
– –
– –
–
Felügyeli az egész adatbázisrendszert Felelős az erőforrások elosztásáért Kiosztja a jogosultságokat neki minden jogosultsága megvan A felhasználókkal tartja a kapcsolatot
Felhasználó –
Eseti felhasználók –
–
Parametrikus (naiv) felhasználók – –
–
Ad-hoc kérdéseket tesznek fel Ők tartják általában karban az adatbázist Kész (jól definiált problémát megoldó) alkalmazásokat futtatnak, melyek parametrizálhatóak
Szakemberek /kutatók/ – –
Valamilyen szakterület embere, de ismeri az adott adatbáziskezelő rendszer szoftverét Alkalmazásokat írnak , vagy már meglévő alkalmazásokat átírnak.
Adatbázis építésének lépései –
1. 2.
3. –
Előtte megtörténik az elemzés, tervezés és modellezés amiből így előáll egy séma.
Adatbázis adminisztrátor definiálja a sémát, feltölti a sémára vonatkozó információt az adatszótárba. Megadja az üres fizikai adatbázis szerkezetét. Fizikai adatbázis feltöltése a szerkezetnek megfelelően. Karbantartás Az adatbáziskezelő-rendszernek rendelkeznie kell olyan nyelvi eszközzel, amely lehetővé teszi ezen lépéseket –
DDL = adatdefiníciós nyelv (Data Definition Language) –
–
DML = adatkezelő nyelv (Data Manipulation Language) –
–
Azon utasítások, melyek a fizikai adatbázist kezelik. (Bővítés, törlés, módosítás, csere, lekérdezés)
DCL = vezérlő nyelv (Data Control Language) –
–
Azon utasítások, amelyekkel a sémát le tudjuk írni, kezelni tudjuk a metaadatbázist.
Tranzakciós és jogosultságokkal kapcsolatos utasítások.
DMCL = eszközvezérlő nyelv –
A fizikai szint közvetlen vezérlését teszi lehetővé.
Relációs adatmodell –
–
1970-ben Codd publikál egy cikket, amely megteremti ennek a modellnek matematikai alapjait Relációs modell: – – –
– – – – –
Az egyedtípusokat a modell táblázatokban képzeli el Tulajdonságtípusok: a táblák oszlopai A tábla absztrakciója maga a reláció A tábla soraiban vannak az egyedelőfordulások A tábla egy sorában elhelyezkedő adategyüttes a rekord A táblázat fejlécében a tulajdonságnevek találhatóak Az attribútumoknak minden sorban van értéke Minden attributumnak van egy jól definiált típusa és egy tartománya, ahonnan az értékeit felveheti
Relációs adatmodell Tartomány –
–
– –
D tartomány : atomi értékek egy halmaza. Minden tartományhoz tartozik egy adattípus, amely definiálja, hogy milyen értékek tartoznak a tartományhoz. Formátum: a tartomány értékei hogyan jelennek meg. Tartomány rendelkezik –
– – –
Névvel Típussal Formátummal Feltétel vagy követelmény: a típusból milyen értékek tartoznak hozzá
Relációs séma – – –
A reláció séma alatt a következőt értjük: R(A1, ... ,An) R a reláció séma neve A1, ... ,An az attributumok. –
–
– –
–
Az attributomok sorrendje fontos! Minden attributum értékeit egy adott tartományból veheti fel. Jele: dom(Ai)
A relációs séma az egyedtípus fogalmának felel meg, míg az attributom az egyedtulajdonság típusnak. A relációsémához tartozó reláció alatt az r(R)-rel jelölt halmazt értjük, ahol r={t1, ... ,tm} aminek minden elemére igaz, hogy az egy olyan n-es, ahol ti =
, vidom(Ai) i=1,..., n , vagy NULL érték. A relációs séma foka az attribútumok száma.
Másik definíció –
–
r(R): az R-t meghatározó attributomok tartományiból alkotott Descartes szorzat egy részhalmaza r(R) (dom(A1) ... dom(An)) Feltételezzük, hogy a tartományok végesek!
Reláció tulajdonságok – –
Egy relációs séma mögött több reláció állhat A reláció elemei a rekordok, melyek a következő tulajdonságokkal rendelkeznek: –
Nincs sorrendjük (halmaz) – –
–
–
Koncepcionális szinten nem értelmezhető sorrend Logikai szinten a táblázatban van sorrend, de a sorok felcserélhetőek (alapértelmezetten a tárolási sorrend) Fizikai szinten kötelező a sorrend (állomány)
Az attributumok sorrendje kötött
Integritási megszorítások Tartomány megszorítás:
– –
–
–
Minden tartomány minden elemének atominak kell lennie. Összetett és többértékű attribútumokat a relációs modell nem tud kezelni. Az értékek típusaira nincs korlátozás.
Integritási megszorítások –
Kulcsmegszorítások : –
–
A relációk elemei halmazt képeznek, ezért nem lehet két olyan rekord, amelyek minden attribútum értékükben megegyeznek. Szuperkulcs: –
– –
–
–
–
– –
Az attribútumoknak van egy szűkebb részhalmaza, amelyre igaz, hogy nincs két olyan rekord, amelyekben "ezen" attribútum értékek megegyeznek. Ez a szuperkulcs. Sok szuperkulcs lehet, de egy szuperkulcs garantáltan mindig van. A szuperkulcshoz hozzávéve még attribútumokat, még mindig szuperkulcsot kapunk.
Kulcs: A reláció egy K attribútum együttesét kulcsnak nevezzük, ha K szuperkulcs, és ha K-ból bármelyik attribútum elhagyásával keletkező K’ attribútum együttes már nem szuperkulcs. Minimális attribútumot tartalmazó szuperkulcs. Kulcsjelölt: Egy relációs sémának több kulcsa is lehet, ezeket a kulcsjelöltek. Elsődleges kulcs: A modellezés folyamán a kulcsjelöltekből egyet ki kell választani.
Integritási megszorítások –
Egyed integritási megszorítás: –
–
–
Hivatkozási integritási megszorítás : –
–
Az elsődleges kulcs értéke, nem lehet NULL értékű. Az adatbáziskezelő rendszerek megkövetelik az elsődleges kulcs létezését.
Ez biztosítja, hogy két reláció rekordjai között az áthivatkozás konzisztens legyen.
Külső kulcs: – –
Legyen R1, R2 két reláció séma. R1 egy FK-val jelölt attribútum együttesét az R1 külső kulcsának hívjuk (Foreign Key), ha teljesíti az alábbi feltételeket: 1.
2.
FK-hoz tartozó attribútumok egyenként ugyanazokkal a tartományokkal rendelkeznek, mint R2-höz tartozó elsődleges kulcsot (PK) alkotó attribútumok. Az R1 reláció valamely t1 rekordja konkrét értékekkel rendelkezik az FK-hoz tartozó attribútumoknak megfelelően. Ezen értékek vagy NULL értékűek, vagy kell lenni egy R2-höz tartozó olyan relációnak, ami szerint van olyan t 2 rekord, ami szerint az FK t1-beli értékei megegyeznek a PK-beli t2 értékekkel. T1[FK]=t2[PK]
Relációs adatbázis séma –
Relációsémák és integritási megszorítások együttese S = {R1, R2, ... , Rk} IC
Reláció algebra – –
Ez egy halmazorientált kezelőnyelv, amely algebrai megközelítést alkalmaz. Szelekció – – – –
– –
–
Egy adott relációhoz tartozó rekordok egy részhalmazát adja. Olyan rekordokét, amelyek eleget tesznek a szelekciós feltételnek. feltétel (relációnév) Az eredményül kapott reláció fokszáma és attribútuma megegyeznek a kiindulási relációéval. A kapott rekordok száma kisebb vagy egyenlő mint az induló rekordok száma. Lehet nulla is. kkod = k1 AND ertek > 1500 (KONYV) A szelekciós feltétel egy logikai kifejezés, amiben hasonlító és logikai műveleti jelek lehetnek. A szelekció kommutatív művelet: f1 (f2 (R)) = f2 (f1 (R)) Szelekciósorozat mindig értelmezhető egyetlen szelekcióként: f1 (f2 ... (fn (R)) ... ) = f1 and f2 and ... fn (R)
Reláció algebra –
Projekció –
A kiinduló relációból kiválaszt bizonyos attribútumokat, és az eredményrelációba csak ezen attribútumokhoz tartozó értékeket viszi át.
attribútum_lista (relációnév) cím, ertek (KONYV)
– –
– – –
–
Az új relációban az attribútumok sorrendje a attribútumlistában megadott sorrend lesz. Az eredményreláció fokszáma kisebb vagy egyenlő lesz a kiinduló relációnál. Rekordszám: Ha a kiválasztott attribútumok között van kulcs, akkor az induló rekordok száma egyenlő az eredményrekordok számával. Ha a kiválasztott attribútumok között nem szerepel kulcs, akkor az eredményrekordok száma kevesebb lehet, mint az induló rekordok száma. (A halmaz nem enged meg két azonos elemet.) Nem kommutatív:
l1 (l2 (R)) = l1 (R) csak akkor ha l2 lista tartalmazza l1 listát
Reláció algebra – –
Az előző két művelet tetszőlegesen alkalmazható egymás után egy relációra. Kétféleképpen hajthatok végre összetett műveleteket: – –
–
Egyetlen relációs algebrai kifejezés segítségével írom le a műveletsort. cím, ertek ( ertek>2000 (KONYV)) Megvan az induló reláció, ezen a műveletsorból csak egy műveletet hajtok végre, az így kapott relációt tekintem a következő művelet induló relációjának. A rész relációkat elnevezem és külön kezelem őket. Szükséges hozzá az átnevezés művelete.
Átnevezés: –
–
Az eredményreláció örökli a kiinduló reláció attribútumait, de ezek átnevezhetők. Átnevezéskor a fokszámoknak egyeznie kell.
DRAGAKONYVEK ertek>2000 (KONYV) EREDMENY(konyvcim, ar) cím,ertek (DRAGAKONYVEK)
Reláció algebra Halmaz műveletek – –
A reláció rekordok halmaza, ezért az összes halmazművelet alkalmazható rajta. Unió kompatibilitás: R(A1, ... , An) és S(B1, ... , Bn) relációk unió-kompatibilisnek, ha 1. 2.
– –
–
Csak unió kompatibilis relációk között jöhetnek létre a halmaz műveletek. Az eredmény reláció fokszáma megegyezik a közös fokszámmal. Unió RS – –
–
A szokásos halmazelméleti metszet.
Kivonás R-S –
–
az új relációban a két rekordból álló elemek uniója lesz Ismétlődés nem lehet benne
Metszet RS –
–
fokszámuk azonos dom(Ai) = dom(Bi) i=1, ... , n
R \ S. A szokásos halmazelméleti kivonás.
Tulajdonságok RS = SR R-SS-R R(ST) = (RS)T R(ST) = (RS)T
Reláció algebra –
R
Descartes szorzat RS –
– – – –
a halmazelméleti értelemben vett Descartes szorzat. (Az első reláció minden sorához hozzárendeljük a második reláció minden sorát.) Ehhez nem szükséges az uniókompatibilitás. Ha adott R(A1, ... , Am) és S(B1, ... , Bn) reláció akkor Az eredményreláció fokszáma n+m Számossága a kiinduló relációk számosságának szorzata
S
a
b
c
f
g
h
i
b
h
b
x
c
d
RxS a
b
c
b
x
a
b
c
c
d
f
g
h
b
x
f
g
h
c
d
i
b
h
b
x
i
b
h
c
d
R
fe l t é t e l
S
Reláció algebra –
JOIN (összekapcsolás) R – – – –
–
a fokszám m+n lesz a számosság maximum r s lehet, illetve kevesebb. A feltételek alakja: f1 and f2 and ... and fn a részfeltétel: fi : Ai Bj alakú, ahol egy összehasonlító operátor. = {<, >, , , =, }
Ha mindenféle összehasonlítást megengedünk
EQUI-JOIN – –
–
S
THETA-JOIN –
–
feltétel
Itt a operátor kizárólag az =operátor Descartes szorzatból azok a sorok maradnak, melyeknél a feltételben megadott oszlopértékek a másikkal páronként megegyeznek.
NATURAL-JOIN R – – – –
– –
lista1, lista 2 S
Azonos az EQUI-JOIN-nal, csak az azonos második oszlopot az eredmény relációból kihagyjuk Az attribútumoknak meg kell egyeznie Az attributumok nevének is meg kell egyeznie. Ha nem, akkor előtte átnevezést kell végrehajtani. lista1: az 1. Reláció séma attribútumai közül lista2: a 2. Reláció séma attribútumai közül Páronként egyenlő relációkat képezünk és a másodikat elhagyjuk.
EQUI-JOIN példa R Adott R az A,B,C attribútumokkal Adott S a B, D attribútumokkal
a
RxS a
b
c
b
x
a
b
c
c
d
f
g
h
b
x
f
g
h
c
d
i
b
h
b
x
i
b
h
c
d
S
b
c
f
g
h
i
b
h
b
x
c
d
a
b
c
b
x
a
b
c
x
i
b
h
b
x
i
b
h
x
Műveletek –
–
Adott a műveletek következő halmaza {, , , , } Minden relációs algebrai művelet értelmezhető ezen műveletek segítségével RS(RS)-((R-S) (S-R))
R S = R -(R -S ) R f S = f (R S )
Reláció algebra –
Division (osztás művelete) RS – – – –
–
Feltétele, hogy az S attribútumai előfordulnak R attribútumaiban. R reláció attribútumainak halmaza legyen: z S reláció attribútumainak halmaza legyen: x T legyen az eredmény reláció, melynek attribútumai: y=z-x T=R(z) S(x) xz
Lépések: 1.
2. 3.
T1 = y (R) T2 = y ((ST1) - R) T = T1 - T2
Division példa –
Legyenek adottak R(A,B) és S(A) relációk R a1
b1
a2
b1
a3
b1
a4
b1
a1
b2
a3
b2
a2
b3
a3
b3
a4
b3
a1
b4
a2
b4
a3
b4
S
T1
a1
b1
a2
b2
a3
b3 b4
T2
T
b3
b1
b2
b4
Reláció algebra –
OUTER-JOIN (külső összekapcsolás) –
– –
Az összekapcsolásban részt vevő relációk egyik vagy mindkét oldalon szereplő relációiból az összes rekordot meg akarjuk őrizni az eredményben. Azokat is megőrizzük, amelyeknek nem volt párjuk. A hiányzó párok NULL értéket vesznek fel. Ez alapján három féle lehet: –
– –
– –
pl: Hallgató létezik, de még nem vett fel tárgyakat Kérdés: A Hallgatók által felvett tárgyak listájában mi van? –
–
Left – baloldali Right - jobboldali Full - mindkét oldali
Ez a hallgató szerepelnifog, és NULL értékkel.
Kérdés: A telephelyen dolgozó alkalmazottak listája? – –
Ha a telephely már nem létezik, akkor szerepeljen-e ez? JOIN-nal nem fog szerepelni, itt viszont igen, mégpedig NULL értékkel
Funkcionális függőség –
–
– – –
Két attribútumhalmaz közötti összefüggést/kapcsolatot írja le. Legyen X és Y az R reláció két attribútumhalmaza! Y funkcionálisan függ X-től ( vagy X funkcionálisan meghatározza Y-t) , ha bármelyik két rekord esetén abból, hogy a két rekord X attribútum-értékei megegyeznek következik, hogy az Y attribútum-értékei is megegyeznek. Jelölés : X Y A funkcionális függés nem kétirányú kapcsolat. Ha X Y és Y X egyszerre áll fenn, akkor azt mondjuk, hogy X és Y kölcsönös funkcionális függésben áll egymással.
Funkcionális függőség tulajdonságai 1. Reflexivitás
x y xy t1[x] = t2[x] t1[y] = t2[y]
2. Augmentivitás
xy xzyz Indirekt módon bizonyítjuk : t1[x] = t2[x] t1[y] = t2[y] t1[xz] = t2[xz] t1[yz] t2[yz] - indirekt feltevés (1) és (3) t1[z] = t2[z] (5) (2) és (5) ellentmondást kapunk az indirekt feltétellel, azaz a bizonyítás kész
3. Tranzitivitás
xy, yz xz A további funkcionális függés tulajdonságok az előző hármat felhasználva könnyen felírhatók, származtathatók.
Funkcionális függőség tulajdonságai 4. Dekompozíciós tulajdonság xyz xz xz y yzy xy
tranzitivitás miatt 5. Additivitás
xy, xz xyz xxy xx=x (A 2. tulajdonságot használtuk fel.) xyyz Ezekből következik a tranzitivitás miatt, hogy xyz
6. Pszeudotranzitivitás
xy , wyz wxz Az első három tulajdonságot szokás ARMSTRONG axiómáknak nevezni.
Normálformák –
A relációs modellben alapvető szerepet játszanak az elsődleges kulcsra épülő függések: – –
– – –
A modell szemantikáját ezzel lehet leírni. A gyakorlatban az adatbázis kezelő rendszerek felépítése is a normálformákon alapszik.
A relációs modell legkarakterisztikusabb jellemzője a harmadik normálforma. A normálformákat sorszámozni szokásos: 1NF, 2NF, 3NF ... 1NF-ban van egy reláció séma, ha minden leíró attribútum funkcionálisan függ az elsődleges kulcstól. Ha ez nem teljesül, akkor nem normálformáról, vagy nem 1NF-ról beszélünk Non First Normal Form .
1NF –
–
1NF-ban van egy reláció séma, ha minden leíró attribútum funkcionálisan függ az elsődleges kulcstól. Ha ez nem teljesül, akkor nem normálformáról, vagy nem 1NF-ról beszélünk - Non First Normal Form . 1NF követelménye: az attribútum értékei nem lehetnek összetettek, vagy többértékűek, csak atomi érték a megengedett.
TANTARGYFELVETEL félév
tantargy_ kodok
KÖ27
2010_2
KÖ1002, KÖ2021, KÖ3212
hallgato_azonosito
félév
tantargy_ kodok
KÖ27
2010_2
KÖ1002
KÖ27
2010_2
KÖ2021
KÖ27
2010_2
KÖ3212
hallgato_azonosito –
–
– – – – –
A nem normalizált táblázatból hogy lehet 1NF-bam levő táblázatot csinálni? Ha többértékű attribútumról van szó, akkor egyértékűt csinálok úgy, hogy a táblázatban annyi sort veszünk fel, ahány értéke van az adott attribútumnak. Az így keletkezett táblázat elsődleges kulcsa az eddigi lesz, plusz a szétbontott attribútum. Ha összetett attribútumról van szó, akkor : Egy értékként tekintem (pl. VNEV, KNEV egy sztringbe kerül) Szétszedem több attribútumra (pl. VNEV, KNEV két külön attribútum) Nem normalizált reláció sémák nem léteznek. Minden reláció séma megköveteli a legalább 1NF-t. Nem normálformájú táblázatokat a relációs adatbáziskezelő rendszerek nem tudnak kezelni.
Részleges funkcionális függőség –
– –
X Y között részleges funkcionális függőség van, ha X-nek van olyan valódi részhalmaza X’ X, amire teljesül, hogy X’ Y, azaz Y X’-től is funkcionálisan függ. A részleges függés miatti karbantartási anomáliák : Bővítési anomália –
–
Törlési anomália –
–
Ha egy új tanterem létesül, akkor arról csak akkor kaphatok információt, ha ott óra lesz. - Azaz ha megjelenik a beágyazó egyedtípusban. Ha az ÓRAREND-ből kitörlöm a hivatkozást egy tanteremre, akkor a teremre vonatkozó információk eltűnnek az adatbázisból.
Módosítási anomália –
Ha egy tanteremre vonatkozó értékek módosulnak, akkor mindenütt módosítani kell. Így könnyen inkonzisztens állapotba vihető az adatbázis.
2NF –
Egy reláció séma 2NF-ban van, ha 1NF-ban van, és nincs benne részleges függés. A részleges függést úgy szüntetjük meg, hogy megszüntetjük az egyedtípusok egymásba ágyazását.
Példa 2NF-ra hozásra ÓRAREND ÓRAREND
tantárgy_kód ea_v_gyak oktató_azonosító terem időpont óraszám maximális_létszám
tantárgy_kód ea_v_gyak oktató_azonosító terem időpont óraszám
TANTEREM terem maximális_létszám
3NF – –
–
Egy relációs séma 3NF-ban van, ha 2NF-ban van és nem tartalmaz tranzitív függést. A relációs adatmodell koncepcionális szinten 3NF-jú relációs sémákkal, 3NF-jú relációkkal, logikai szinten 3NF-jú táblázatokkal dolgozik. A relációs adatbáziskezelő rendszerek általában nem követelik meg a 3NF-t, csak az 1NF-t. 3NF-nál nem lehetnek kulcsjelöltek.
BCNF –
–
–
Boyce-Codd-féle normálforma: Egy relációs séma BCNF-ben van, ha bármely X-től funkcionálisan függő A esetén (X A) az X szuperkulcs. Ez különbözik a 3NF-tól. Ez is megszüntet bizonyos problémákat Az 1NF-2NF-3NF normalizálás megfordítható folyamat, de a BCNF irreverzibilis.
SQL Structured Query Language
–
Az első SQL verzió: SQL-86, majd SQL-89 /SQL1/, SQL-92 /SQL2/ ORACLE környezetben: ORACLE*SQL További kiegészítések: SQL+ , PL/SQL
–
Utasításai:
–
–
–
DDL - adatdefiníciós nyelv –
–
DML - adatmanipulációs nyelv –
–
Parancsai: CREATE, ALTER, DROP
Utasításai: SELECT, INSERT, DELETE, UPDATE
DCL - adatvezérlő nyelv –
Utasításai: GRANT, REVOKE, COMMIT, ROLLBACK
DDL Data Definition Language –
– – – –
CREATE DATABASE adatbázisnév; Adatbázis létrehozása SHOW DATABASE; Információ egy adatbázisról START DATABASE adatbázisnév; Adatbázis megnyitása STOP DATABASE; Adatbázis bezárása DROP DATABASE adatbázisnév ; Adatbázis törlése
DDL –
CREATE TABLE táblanév (oszlopnév adattípus (méret) [,oszlopnév adattípus (méret)] );
–
Standard adattípusok: – –
– –
– –
–
CHAR(n) N hosszúságú string INTEGER Egész szám -9 999 999 999 és 99 999 999 999 között SMALLINT Egész szám -99 999 és 999 999 között DECIMAL(x,y) Előjellel együtt x számjegyű, fixpontos decimális szám y tizedesjeggyel, ahol x 1 és 19, y 0 és 18 közötti értéket vehet fel FLOAT(x,y) Előjellel együtt x számjegyű, lebegőpontos decimális szám y tizedesjeggyel, ahol x 1 és 20, y 0 és 18 közötti értéket vehet fel DATE Dátum típus LOGICAL Logikai típus, értéke .T. és .F. lehet
DDL Tábla módosítása ALTER TABLE táblanév ADD/MODIFY (oszlopnév adattípus [, oszlopnév adattípus]); A tábla törlése DROP TABLE táblanév; Indextábla létrehozása CREATE [UNIQUE] INDEX indextábla -név ON táblanév (oszlopnév [[ASC/DESC][,oszlopnév[ASC/DESC]]..); – – –
Az ON után adott tábla felsorolt oszlopait rendezi (növekedően ASC esetén és csökkenően DESC esetén) és belőlük egy az INDEX szó után megadott nevű táblát készít. Az UNIQUE azt jelenti, hogy az oszlop értékei egyediek, s ha ez esetben ismétlődő értékek is vannak az oszlopban, a rendszer hibát jelez.
DML Data Manipulation Language Sorok bevitele: INSERT INTO táblanév [(oszlopnév-lista )] VALUES (értéklista)/szelekciós utasítás; – Rekord adatainak módosítása: UPDATE táblanév SET oszlopnév=kifejezés[,oszlopnév=kifejezés] [WHERE logikai kifejezés]; – Rekord törlése: DELETE FROM táblanév [WHEREfeltétel]; –
Select SELECT [ALL | DISTINCT] [FROM table_references [WHERE where_condition] [GROUP BY col_name, …] [HAVING where_condition] [ORDER BY col_name [ASC | DESC], ...]
Select SELECT [DISTINCT] oszlopnév-lista FROM [táblanév] WHERE feltétel; –
–
– – –
–
Egyszerű összehasonlítás: oszlopnév operátor kifejezés =; != ;< ;> ;<> ;^= ; >=; <= Összehasonlítás egy halmaz elemeivel: oszlopnév operátor halmazdef. BETWEEN szám1 AND szám2; IN (lista) LIKE karakterminta Összehasonlítás NULL értékkel: oszlopnév IS NULL Összetett kereséséi feltétel: feltétel1 operátor feltétel2 AND; OR; NOT
Select SELECT oszlopnév-lista FROM [táblanév] GROUP BY oszlopnév [,oszlopnév] [HAVING feltétel]; Fontosabb csoportfüggvények: – INITCAP(kifejezés) Nagy kezdőbetű, karakteres kifejezésekre vonatkozik – LOWER(kifejezés) Kisbetűs, karakteres kifejezésekre vonatkozik – UPPER(kifejezés) Nagybetűs, karakteres kifejezésekre vonatkozik – AVG([DISTINCT|ALL] kifejezés) Átlag, numerikus vonatkozik, a Null értéket figyelmen kívül hagyja. – COUNT([DISTINCT|ALL] {*|kifejezés}) Számláló, numerikus dátum és karakteres kifejezésre is vonatkozik, a Null értéket figyelmen kívül hagyja. – MAX([DISTINCT|ALL] kifejezés) Maximum, numerikus dátum és karakteres kifejezésre is vonatkozik. – MIN([DISTINCT|ALL] kifejezés) Minimum, numerikus dátum és karakteres kifejezésre is vonatkozik. – SUM([DISTINCT|ALL] kifejezés) Összeg, numerikus kifejezésre vonatkozik. – ABS(kifejezés) Abszolútérték, numerikus kifejezésre vonatkozik. – SQRT(kifejezés) Négyzetgyök, numerikus kifejezésre vonatkozik.
Select ORDER BY oszlopnév [ASC/DESC][,oszlopnév [ASC/DESC]]; – A parancs a megadott oszlop (vagy oszlopok) szerint rendezi az eredménytáblát, ASC megadása esetén növekedő sorrendben (ez az alapértelmezés is), DESC esetén csökkenő sorrendben.
DCL Data Control Language GRANT ALL [PRIVILEGES]/ jogosultságlista ON [TABLE] táblalista TO PUBLIC/felhasználólista [WITH GRANT OPTION]; REVOKE ALL [PRIVILEGES]/ jogosultságlista ON [TABLE] táblalista TO PUBLIC/felhasználólista ; –
Legfontosabb privilégiumok: – –
– – – –
ALTER - Jogosultság a tábla módosítására DELETE - Jogosultság a tábla törlésére INDEX - Jogosultság indextábla létrehozására INSERT - Jogosultság új sor felvételére a táblázatba SELECT - Jogosultság lekérdezésre UPDATE - Jogosultság a tábla módosítására