Adatbázis kezelés. Dr. Iszály György Barna

Hasonló dokumentumok
Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Adatbázisrendszerek BEVEZETÉS. A valós világban vannak dolgok, amelyek viselkednek, hatnak egymásra, kapcsolatban vannak. Ezek rendszert alkotnak.

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A

Programozás. Adatbázis-kezelés (alapok) Fodor Attila

Adatbázis-kezelés. alapfogalmak

Adatmodellezés. 1. Fogalmi modell

1. előadás Alapfogalmak Modellezés, a Bachman-féle fogalomrendszer, adatmodell,

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

BEVEZETÉS Az objektum fogalma

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Bevezetés: az SQL-be

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Adatbázisok* tulajdonságai

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

7. előadás. Karbantartási anomáliák, 1NF, 2NF, 3NF, BCNF. Adatbázisrendszerek előadás november 3.

ADATBÁZIS-KEZELÉS. Relációs modell

Adatbázis, adatbázis-kezelő

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

Adatbázis-kezelés. Harmadik előadás

Adatbázis kezelés Delphiben. SQL lekérdezések

ADATBÁZIS-KEZELÉS. Adatbázis-kezelő rendszerek

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

7. előadás. Karbantartási anomáliák, 1NF, 2NF, 3NF, BCNF, 4NF, 5NF. Adatbázisrendszerek előadás november 7.

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

SQL parancsok feldolgozása

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

Adatbázis rendszerek SQL nyomkövetés

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Adatbázisrendszerek. Karbantartási anomáliák, 1NF, 2NF, 3NF, BCNF, 4NF, 5NF március 13.

Adattípusok. Max. 2GByte

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

Adattípusok. Max. 2GByte

Adatbázis rendszerek Ea: A rendes állapot. Normalizálás

Adatbázis rendszerek 2. előadás. Relációs algebra

ADATBÁZIS-KEZELÉS Demetrovics Katalin

Adatbáziskezelés. Indexek, normalizálás NZS 1

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

Adatigények. Koncepcionális séma (magas szintű modell) Logikai séma (alacsony szintű modell) Belső séma (fizikai szerkezet, hozzáférési módok)

6. Gyakorlat. Relációs adatbázis normalizálása

Adatbázis-kezelés, információs-rendszerek

Adatbázisok elmélete 12. előadás

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) október október 22. Adatbázisok 1 / 14

Csima Judit október 24.

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Adatbázis-kezelés alapok Adatbázisok című tárgyhoz, ismétlés kapcsán

Adatbázis rendszerek. dr. Siki Zoltán

Adatbázisok I. Jánosi-Rancz Katalin Tünde 327A 1-1

Adatbázis rendszerek Definíciók:

Adatbázis rendszerek Ea: A rendes állapot. Normalizálás

Mezők viszonya a relációs adatbázis tábláiban

B I T M A N B I v: T M A N

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

BEVEZETÉS Az objektum fogalma

Adatbázisok elmélete 9. előadás

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Adatbázisrendszerek 7. előadás: Az ER modell március 20.

Adatbázisok elmélete 9. előadás

A relációs adatbázis-tervezés alapjai

Adatmodellek. 2. rész

8. előadás. Az ER modell. Jelölések, az ER séma leképezése relációs sémára. Adatbázisrendszerek előadás november 14.

ABR ( Adatbázisrendszerek) 1. Előadás : Műveletek a relációs medellben

4. előadás. Relációalgebra és relációkalkulusok. Adatbázisrendszerek előadás október 10.

Gazdasági informatika II (SZIE GTK GVAM 1. évfolyam) 2009/2010. tanév 2. félév

1. előadás Alapfogalmak Kialakulás, modellezés, a Bachman-féle fogalomrendszer, adatmodell, adatbázis, tulajdonságok

NORMALIZÁLÁS. Funkcionális függés Redundancia 1NF, 2NF, 3NF

Gazdasági folyamatok térbeli elemzése. 5. elıadás

Gazdasági informatika vizsga kérdések

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

Lekérdezések az SQL-ben 1.rész

Adatmodellezés, alapfogalmak. Vassányi István

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

Az adatok a vállalat kulcsfontosságú erőforrásai. Az információs rendszer adatai kezelésének két alapvető változata:

Adatbázis rendszerek 2. előadás. Relációs algebra

Bevezetés: Relációs adatmodell

11. Gyakorlat Adatbázis-tervezés, normalizálás. Redundancia: egyes adatelemek feleslegesen többször is le vannak tárolva

Az SQL nyelv. SQL (Structured Query Language = Strukturált Lekérdező Nyelv).

ABR ( Adatbázisrendszerek) 2. Előadás : Műveletek a relációs modellben

Adatbáziskezelés 1 / 12

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

Lekérdezések az SQL-ben 1.rész

Adatbázisok tavaszi félév Vizsgatételsor

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

T Adatbázisok-adatmodellezés

Adatbázis használat I. 5. gyakorlat

Adatbázis-kezelés alapjai 1. Ea: Infó Mátrix. Lehet, nem lehet

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

Csima Judit szeptember 6.

ADATBÁZISOK. 4. gyakorlat: Redundanciák, funkcionális függőségek

Adatbázis rendszerek 7. Matematikai rendszer amely foglal magában:

Adatbázisok gyakorlat

Átírás:

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 Adatbázis követelmények Funkcionális tervezés Koncepcionális tervezés Magasszintű tranzakciós specifikáció Alkalmazói programtervezés Programspecifikáció Tranzakció implementálás Koncepcionális (adat)modell Logikai tervezés Logikai (adat)modell 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: 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 Tárolt attribútum 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 NŐ 1:1 számosság

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Ó OKTATÓ N:M számosság

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 Tulajdonos egyedtípus Összetett hierarchia Háló Tag egyedtípus Rekurzivitás

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 HALLGATÓ ÓRAREND 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 Koncepcionális séma NÉZET N Külső szint Koncepcionális szint Belső séma Belső /fizikai/ szint

Szintek Belső szint: maga a fizikai 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: 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 Ad-hoc kérdéseket tesznek fel Parametrikus (naiv) felhasználók Ő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 Előtte megtörténik az elemzés, tervezés és modellezés amiből így előáll egy séma. 1. 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. 2. Fizikai adatbázis feltöltése a szerkezetnek megfelelően. 3. 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) Azon utasítások, amelyekkel a sémát le tudjuk írni, kezelni tudjuk a metaadatbázist. 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) 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={t 1,...,t m } aminek minden elemére igaz, hogy az egy olyan n-es, ahol t i = <v 1,...,v n >, v i dom(a i ) 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(a 1 )... dom(a n )) 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: 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. Hivatkozási integritási megszorítás : Ez biztosítja, hogy két reláció rekordjai között az áthivatkozás konzisztens legyen. Külső kulcs: Legyen R 1, R 2 két reláció séma. R 1 egy FK-val jelölt attribútum együttesét az R 1 külső kulcsának hívjuk (Foreign Key), ha teljesíti az alábbi feltételeket: 1. FK-hoz tartozó attribútumok egyenként ugyanazokkal a tartományokkal rendelkeznek, mint R 2 -höz tartozó elsődleges kulcsot (PK) alkotó attribútumok. 2. Az R 1 reláció valamely t 1 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 R 2 -höz tartozó olyan relációnak, ami szerint van olyan t 2 rekord, ami szerint az FK t 1 -beli értékei megegyeznek a PK-beli t 2 értékekkel. T 1 [FK]=t 2 [PK]

Relációs adatbázis séma Relációsémák és integritási megszorítások együttese S = {R 1, R 2,..., R k } 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(A 1,..., A n ) és S(B 1,..., B n ) relációk unió-kompatibilisnek, ha 1. fokszámuk azonos 2. dom(a i ) = dom(b i ) i=1,..., n 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ó 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 R S A szokásos halmazelméleti metszet. Kivonás R-S R \ S. A szokásos halmazelméleti kivonás. Tulajdonságok R S = S R R - S S - R R (S T) = (R S) T R (S T) = (R S) T

Reláció algebra Descartes szorzat R S 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(A 1,..., A m ) és S(B 1,..., B n ) reláció akkor Az eredményreláció fokszáma n+m Számossága a kiinduló relációk számosságának szorzata R S a b c b f g h c i b h 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 x d i b h c d

R f e l t é t e l S Reláció algebra JOIN (összekapcsolás) R feltétel S a fokszám m+n lesz a számosság maximum r s lehet, illetve kevesebb. A feltételek alakja: f 1 and f 2 and... and f n a részfeltétel: f i : A i B j alakú, ahol egy összehasonlító operátor. = {<, >,,, =, } THETA-JOIN Ha mindenféle összehasonlítást megengedünk EQUI-JOIN 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. lista 1 : az 1. Reláció séma attribútumai közül lista 2 : 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 Adott R az A,B,C attribútumokkal Adott S a B, D attribútumokkal R a b c b S x f g h c d RxS i b h a b c b x a b c c d f g h b x a b c b x a b c x f g h c d i b h b x i b h b x i b h x i b h c d

Műveletek Adott a műveletek következő halmaza {,,,, } Minden relációs algebrai művelet értelmezhető ezen műveletek segítségével R S (R S)-((R-S) (S-R)) R S = R - ( R - S ) R f S = f (R S)

Reláció algebra Division (osztás művelete) R S 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) x z Lépések: 1. T1 = y (R) 2. T2 = y ((S T1) - R) 3. T = T1 - T2

Division példa Legyenek adottak R(A,B) és S(A) relációk R a 1 b 1 a 2 b 1 a 3 b 1 S T1 T2 T a 4 b 1 a 1 b 2 a 3 b 2 a 2 b 3 a 1 a 2 a 3 b 1 b 2 b 3 b 3 b 2 b 1 b 4 b 4 a 3 b 3 a 4 b 3 a 1 b 4 a 2 b 4 a 3 b 4

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: Left baloldali Right - jobboldali Full - mindkét oldali 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? 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 1. Reflexivitás x y x y t1[x] = t2[x] t1[y] = t2[y] 2. Augmentivitás x y xz yz Indirekt módon bizonyítjuk : t1[x] = t2[x] t1[y] = t2[y] t1[xz] = t2[xz] t1[yz] t2[yz] tulajdonságai - 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 x y, y z x z 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 x yz x z xz y yz y x y tranzitivitás miatt 5. Additivitás x y, x z x yz x xy xx=x (A 2. tulajdonságot használtuk fel.) xy yz Ezekből következik a tranzitivitás miatt, hogy x yz 6. Pszeudotranzitivitás x y, wy z wx z 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. 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. TANTARGYFELVETEL hallgato_azonosito félév KÖ27 2010_2 hallgato_azonosito félév tantargy_ kodok KÖ1002, KÖ2021, KÖ3212 tantargy_ kodok KÖ27 2010_2 KÖ1002 KÖ27 2010_2 KÖ2021 KÖ27 2010_2 KÖ3212

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 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. Törlési anomália 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 Parancsai: CREATE, ALTER, DROP DML - adatmanipulációs nyelv 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