Adatbázis-kezelés Második előadás 19
Adatmodell Modell: a valóság olyan matematikai vagy tárgyi leképezése, ami a modellalkotó számára fontos tulajdonságokban egyezést utat a valósággal. Adatmodell: az a formalizmus, aminek segítségével leírható a vizsgált problémakör adatelemeinek felépítése, viselkedése. Szemantikai adatmodell (emberközeli, pontatlan pl. ER, UML) Adatbázis adatmodell (gépközeli, pontos pl. hierarchikus 1970, hálós 1980, relációs 1990, objektum-orientált 2000) Séma: az adatmodell alapján létrehozott adatszerkezet 20
ER modell Entity-Relation (ER): adat-kapcsolat Egyszerű szemantikai adatmodell, Chen, 1976 Népszerű, egyszerű tervezési segédeszköz Egyed+tulajdonságok+kapcsolatok Egyed: egy önálló, megkülönböztethető dolog Tulajdonság: Normál (egyértékű, ember.szülidő) Kulcs (azonosít, ember.adószám) Összetett (több rész, ember.lakcím (irsz, város, utca, )) Többértékű (több érték, ember.nyelvvizsga) Származtatott (számítható, ember.életkor) 21
ER modell Kapcsolat: Számosság szerint: 1:1 A kapcsolat egyedeinek (2) pontos megfelelése pl. személy - adószám 1:N Egyik irányban egy egyedelőforduláshoz több egyed kapcsolódhat (a másik irányban pedig csak egy) pl. tulajdonos - autó N:M Bármely egyedelőforduláshoz több előfordulás kapcsolódhat pl. személy - munkahely 22
Relációs adatmodell Egyszerű modell könnyű implementálás, könnyű kezelhetőség, könnyű bővíthetőség Hatékony lekérdezés, műveletkezelés 1969-70, Codd (IBM) A Relational Model of Data for Large Shared Data Banks 23
Relációs adatmodell Tiszta elméleti háttér Egységesség a strukturális és a műveleti részek között Rugalmas kapcsolati rendszer A belső optimalizálásnak nagy jelentősége van! Logikai függetlenség: logikai szinten gondolkodik, nem foglalkozik a fizikai tárolás problémáival RDBMS Relational DataBase Management System 24
Reláció Struktúra: adatbázis, reláció (tábla), rekord, mező Reláció = azonos típusú rekord előfordulások összessége pl. könyv típusú adatok Lehet tábla, vagy táblák descartes szorzata (lásd később) Halmaz, de a gyakorlatban sokszor inkább listát értünk rajta Nincs rekord pozíció Tábladefiníció = a tábla fejléce Nincs két egyforma rekord Cím Szerző Megj_év Oldalszám Versek Petőfi Sándor 1848 245 Hitel Széchenyi István 1830 159 25
Rekord, mező Rekord (sor) = konkrét adatelőfordulás Szerkezet jellemzi Mezőkből áll Integritási feltételek köthetők hozzá Mező Egyértékű Van neve Integritási feltételek köthetők hozzá Cím Szerző Megj_év Oldalszám Versek Petőfi Sándor 1848 245 Hitel Széchenyi István 1830 159 26
Halmazorientált szemlélet Halmazorientált szemlélet: Halmazokban gondolkodik, (de sokszor számít a sorrend! lista) A halmaz erősíti a matematikai elméleti gondolkodásmódot A fizikai tárolásból lista következik A listákra felhasználói igény van például: a kinyert adatokat nem véletlenszerű, összevissza sorrendben akarom kinyomtatni vagy keresem a 3 legnagyobb magyar várost 27
Kulcs Az egyed egyértelmű azonosításához szükséges tulajdonság vagy tulajdonságcsoport (azon mezők, amik egyértelműen azonosítják egy reláció egyetlen sorát) Lehet 1 v. több mező Például: személyi szám, vagy Tanszéknév + Egyetem neve A kulcs minden sorra egyedi Ennek betartását a (jól tervezett) adatbázis is megköveteli Lehetőleg minimális méretű, elemszámú legyen Ha összetett kulcsból akármit elveszünk, már nem lehet kulcs A relációk összekapcsolása: egy táblában egy másik tábla kulcsértéke szerepel (= idegen kulcs): Rendszám Márka Típus Tulajdonos EFF-362 Opel Astra 1.4 1 JAU-725 Ford Focus 2.0 2 LOL-962 BMW X5 1 28
Kulcs 2. Kulcs megkötések: Egyedi (a táblában nem ismétlődhet az értéke) Nem lehet üres Felesleges redundancia csökkentése: nincs olyan részhalmaza, ami az előző két feltételnek eleget tenne Összetettség alapján: egyszerű: telefonszám (+36204445566) összetett: cikkszám + gyártó (audi: 4B0 905 594 H) RK Rendszám Márka Típus Tulajdonos 1 EFF-362 Opel Astra 1.4 1 2 JAU-725 Ford Focus 2.0 2 3 LOL-962 BMW X5 1 29
1:N (egy-több) kapcsolat A kapcsolatok adatértékeken keresztül valósulnak meg Autó Rendszám Márka Kapcsoló mező: a hivatkozó rekordban Típus szerepel, a hivatkozott rekordelőfordulást Tulajdonos azonosítja Tartalma: a hivatkozott rekordelőfordulás kulcsértéke (idegen kulcs v. kapcsoló kulcs) Ember Azonosító Név Lakcím Adószám Szül. hely Rendszám Márka Típus Tulajdonos EFF-362 Opel Astra 1.4 1 JAU-725 Ford Focus 2.0 2 LOL-962 BMW X5 1 Azonosító Név Lakcím Adószám Szül. hely 1 Ádám......... 2 Éva......... 30
1:N (egy-több) kapcsolat Idegen kulcs, kapcsoló kulcs: a hivatkozott rekordelőfordulás kulcsa normál mező, tehát egyértékű: 1 kapcsolódó rekordot jelölhet ki Autó Rendszám Márka Típus Tulajdonos Ember Azonosító Név Lakcím Adószám Szül. hely Rendszám Márka Típus Tulajdonos EFF-362 Opel Astra 1.4 1 JAU-725 Ford Focus 2.0 2 LOL-962 BMW X5 1 Azonosító Név Lakcím Adószám Szül. hely 1 Ádám......... 2 Éva......... 31
N:M kapcsolat Az idegen kulcs egyik oldalra sem tehető Segédtábla szükséges Cég C_Azonosító Név Telephely Tulajdonos Alkalmazott C_Azonosító E_Azonosító Ember E_Azonosító Név Lakcím Adószám Magasság C_Azonosító Azonosítók Névmérete! Telephely Tulajdonos 1 Béli Kft....... 2 Béni Kft....... 3 Béci Kft....... C_Azonosító E_Azonosító 1 1 1 2 3 2 E_Azonosító Név Lakcím Adószám Magasság 1 Ádám......... 2 Éva......... 32
Integritási feltételek Az adatbázis működéséhez az adatoknak sokféle feltételnek kell megfelelnie Az egyedek (rekordok) megkülönböztethetősége A megkülönböztetés a tulajdonságaik alapján történik Használatuk nem kötelező, de elterjedt nagy segítség a fejlesztőnek és a felhasználónak is. Javítja a megbízhatóságot Különböző szintek Adatszintű (mezőszintű) Rekordszintű Táblaszintű Adatbázis-szintű 33
Integritási feltételek Adatszintű (mezőszintű) életkor >= 0, adószám = 12 számjegy NOT NULL: nem maradhat üres CHECK feltétel: értékellenőrzés Rekord szintű: a rekord elfogadhatósága Házastárs rovat nem tölthető ki, ha a családi állapot mező =nőtlen 3 éves gyereknek nem lehet egyetemi végzettsége CHECK feltétel: értékellenőrzés Táblaszintű: a tábla összes rekordját figyelembe veszi az ellenőrzésnél pl. egyedi kulcsérték (biztosítás kötvényszám, alvázszám) autók vásárláskori átlagéletkora nem lehet több 6 évnél PRIMARY KEY, UNIQUE Adatbázis-szintű kulcs és idegen kulcs kapcsolata relációban (azaz minden idegen kulcshoz legyen kulcs) pl. autó típus csak létező, ismert típuskód lehet (külön táblából) FOREIGN KEY 34
Az adatbázis kezelőnyelve: SQL Az RDBMS által értelmezett utasítások nyelve Structured Query Language Az SQL at adatbáziskezelő integrált része ill. egy gépi nyelv Nem önálló szoftver Több nyelv közül ez terjedt el Szabvány (pl. ANSI 1986, ISO 1992, 2008) Nem azt kell leírni, hogy pontosan hogyan kapjuk meg a kívánt adatokat, hanem azt, mely adatokat szeretnénk látni A parancsok formalizált angol mondatok SELECT name FROM students WHERE neptunid= ABC123 DELETE FROM living_people WHERE date_of_death IS NOT NULL Az egyes RDBMS-ek a szabványokat többé-kevésbé követik 35
SQL Nem tartalmaz algoritmikus elemeket (pl. for ciklus) SQL használati módjai Fejlesztőeszközökbe, procedurális programnyelvekbe (C, Java, PHP) felhasználói programokba építve (űrlap, jelentés) Interaktív, közvetlen gépelés (rendszergazdáknak, hozzáértőknek) SQL scriptek (ismétlődő rendszergazdai feladatokra) Egyszerű szintaktika Kis- és nagybetűket nem különbözteti meg Szövegkonstansok idézőjelek között (') A parancsok végén pontosvessző (;) Háromértékű logika (3VL): True, False, Unknown Pl: A=True, B=Unknown A AND B = Unknown 36
SQL A műveletek operandusai és azok eredményei is relációk Operátorai egy vagy két operandusúak: Egy operandus Két operandus szelekció projekció csoportképzés összekapcsolás (join) metszet különbség unió 37
Kommunikáció folyamat 38
Műveletek csoportosítása DDL adat definiálás Objektum létrehozás CREATE Objektum törlés DROP Objektum módosítás ALTER DML adat módosítás Rekord felvitel INSERT Rekord törlés DELETE Rekord módosítás UPDATE DQL adat lekérdezés: az SQL fő erőssége Adatlekérdezés SELECT DCL adat vezérlés Hozzáférés-szabályozás GRANT, REVOKE Tranzakció-kezelés COMMIT 39
Adatdefiníció (DDL) Data Definition Language Adatbázis-objektumok meghatározása: létrehozása, módosítása, törlése CREATE, ALTER, DROP A táblázatok fejléceinek meghatározása táblák, indexek, kapcsolatok definiálása 40
Adatdefiníció (DDL) Létrehozás: CREATE objektumtípus paraméterek Nevek: angol ABC, _, számok CREATE TABLE táblanév (mező1 típus1 megszorítás1, ); CREATE TABLE dolgozo ( id INT PRIMARY KEY, nev VARCHAR(20), munkakor CHAR(1) ); CREATE INDEX munkakor ON dolgozo (munkakor); CREATE USER név IDENTIFIED BY jelszó; Módosítás: ALTER objektumtípus paraméterek ALTER TABLE dolgozo ALTER/MODIFY nev VARCHAR(40) NOT NULL; ALTER TABLE dolgozo ADD lakcim VARCHAR(40); Törlés (eldobás): DROP objektumtípus paraméterek DROP INDEX munkakor; DROP TABLE dolgozo; 41
Adatdefiníció tábla létrehozása CREATE TABLE A tábla fejlécének meghatározása CREATE TABLE táblanév ( mezőnév1 típus1 integritásifeltétel1, mezőnév2 típus2 integritásifeltétel2, ) CREATE TABLE auto ( rsz CHAR(6) PRIMARY KEY, szinkod INT UNSIGNED NOT NULL, vonohorog BOOLEAN ) rsz szinkod vonohorog MEH-002 25 FALSE IGA-001 7771 TRUE 42
Kapcsolatok definiálása A kapcsolókulcs változása esetén: Kaszkád: a külső kulcsok is módosulnak (vagy a kapcs. rekordok törlődnek!) Null: A külső kulcs értéke NULL értéket vesz fel Alapérték: A kulső kulcs értéke az alapértelmezettre áll 43
Kapcsolatok definiálása CREATE TABLE táblanév ( mező1 definíció, mező2 definíció, ) Mező definíció: data_type [NOT NULL NULL] [DEFAULT alapértelmezett érték] [AUTO_INCREMENT] [UNIQUE [KEY] [PRIMARY] KEY] [COMMENT 'string'] [Kapcsolat definíció] Kapcsolat definíció: REFERENCES táblanév (mezőnév,...) [MATCH FULL MATCH PARTIAL MATCH SIMPLE] [ON DELETE Kapcsolat opció] [ON UPDATE Kapcsolat opció] Kapcsolat opció: RESTRICT CASCADE SET NULL NO ACTION 44
Adattípusok Adatbáziskezelőtől függően más és más adattípusok vannak, de ezek között természetesen nagy a hasonlóság. Tipikus példák: Szöveges típusok CHAR [(hossz)] megadott hosszúságú karakterlánc VARCHAR (n) csak a karakterláncnak megfelelő hosszúságú területet foglalja el. Maximum n, illetve 255 karakterig. CLOB (m) nagyméretű szöveges karakterlánc, mértékegységgel: K, M, G például CLOB(700M) 45
Adattípusok 2. Bináris adattípusok RAW/BINARY (n) fix méretű bináris adat BLOB (méret) BINARY LARGE OBJECT (méret) nagyméretű adat: az adatok értelmezésére nincs semmilyen megkötés, így segítségükkel tetszőleges adatokat, például fotókat tárolhatunk. A méret megadása mértékegységgel: K, M, G pl: BLOB(2G) 46
Adattípusok 3. Szám típusok INTEGER, TINYINT, SMALLINT, BIGINT egész értékek, különböző értéktartománnyal (8,16,32,64 bit) NUMERIC, DECIMAL [(szélesség [, tizedes)] ] pontos értékű (fixpontos) tizedestörtek tárolására, a szélesség mellett a tizedespont utáni jegyek száma is megadható REAL, FLOAT, DOUBLE lebegőpontos szám tárolására Dátum/idő típusok DATE, TIME, DATETIME/TIMESTAMP Dátum és/vagy időpont tárolására DATE: '2012-05-01' TIMESTAMP '2012-05-01 16:10:05+1:00' Logikai típus BOOLEAN TRUE, FALSE, UNKNOWN érték 47