Gazdasági folyamatok térbeli elemzése
4. előadás
2010. 10. 05.
Adatbázisok* tulajdonságai • Rendezett, logikailag összefüggő és meghatározott szempont szerint tárolt adatok és/vagy információk halmaza • Az adatok között kapcsolatok és kényszerek állnak fenn • Nem csak az adatok tárolására szolgál, hanem lehetővé teszi a kapcsolatokon keresztül az adatok kezelését • Az adatbázis szerkezetét mindig a megoldandó feladathoz, az elérni kívánt célhoz határozzák meg és implementálják • Az adatbázis a tárolt adatok és az adatbáziskezelő rendszer együtteseként értelmezendő. *Adatbázis = Data Base, DB
Adatbázisok követelményrendszere • Új adat létrehozása, meglévő adatok módosítása vagy törlése, adatok különböző szempont szerinti szűrése • Ugyanaz az adat csak egyszer szerepeljen (redundancia ne legyen) • Adatok integritásának biztosítása (az adatok érvényesek és ellentmondásmentesek (konzisztensek) legyenek • Az adattárolás és az adatok kezelésére szolgáló program teljesen elkülöníthető legyen
Adatbázis-kezelő* rendszerek jellemzői • • • • • • • • • • • • • • •
Adatok struktúrált tárolása Adatkapcsolatok ábrázolása Adatok összekapcsolhatósága tekintet nélkül a forrásra Adatok módosításának felügyelete Adatmódosítási események naplózása („logolás”) Felhasználói oldali programfüggetlenség Jogosultságkezelés Egyidejűleg „többszörös” hozzáférés Konfigurálhatóság Szabványos lekérdezőnyelv Adatvédelmi funkciók (titkosítás) Redundancia-mentes tárolás Konzisztencia biztosítása Interface (külső kommunikációs csatorna) Hibakezelés *Adatbázis kezelő rendszer = Data Base Management System, DBMS
Adatbázis elemek közötti viszony Adatbázis elemei - egyedtípusok (analógia: objektumosztályok) - tulajdonságtípusok (analógia: attribútumok) - kapcsolattípusok (analógia: topológia)
Kapcsolattípusok • „1:1” kapcsolat: az adatbázis elemei kölcsönösen
egyértelmű hozzárendeléssel feletethetők meg egymásnak • „1:N” kapcsolat: az adatbázis elemei között a kapcsolat egyik irányban egyértelmű, másik irányban többértelmű • „M:N” kapcsolat: az adatbázis elemei között mindkét irányból többértelmű kapcsolat
Kapcsolattípusok I. „1:1” kapcsolat A halmaz: Magyarország településeinek neve B halmaz: Magyarországi települések belterülete súlypontja koordinátái
Kapcsolattípusok II. „1:N” kapcsolat A halmaz: Magyarország megyéi B halmaz: Magyarországi települései (irányítószámmal!)
Kapcsolattípusok III. „M:N” kapcsolat A halmaz: Magyarország ingatlanjainak helyrajzi száma és címe B halmaz: Magyarországi ingatlantulajdonosok névjegyzéke
Relációs adatbázismodell Adatbázis = relációk összessége Reláció = tábla (n x m mátrix), egyed Reláció (tábla) sorai – rekordok (összetartozó mezők) Reláció oszlopai – tulajdonságok (attribútum) Mező (cella) = a tábla i. oszlopában és j. sorában található elem Tulajdonság
Rekord
Azonosító
Település
Terület
Népesség
1
Debrecen
46165
205910
2
Tát
1177
5540
Mező (cella)
Relációk jellemzői Reláció logikailag összetartozó adatok Reláció számossága = rekordok száma Reláció foka = oszlopok száma
Szabályok • egy relációban nem lehet két azonos oszlop • minden rekordra ugyanazok a tulajdonságok vonatkoznak • egy relációban nem lehet két azonos rekord • a relációban tárolt rekordok és oszlopok sorrendje tetszőleges • az oszlopok mezői az értékeiket egy definiált értékhalmazból vehetik fel • a mezők csak 1 elemi értéket vehetnek fel, a nem definiált értéket „NULL” azonosítóval látja el
Relációkulcsok Azt az attribútumot (oszlopot, tulajdonságot) vagy attribútum halmazt (több oszlopot) melynek értékei egyértelműen azonosítják a relációt, a reláció kulcsának nevezzük. Egyszerű kulcs
egy attribútumból álló kulcs
Összetett kulcs
több attribútumból álló kulcs
Elsődleges kulcs
Az az attribútum, ami kizárólagosan azonosítja a táblát a teljes adatbázis szerkezetben. Értéke egyértelműen azonosítja a táblában lévő rekordokat, nem vehet fel NULL értéket.
Másodlagos (idegen) kulcs
olyan attribútum vagy attribútum halmaz egy adott relációban, amelyik egy másik relációban elsődleges kulcsként szerepel
Alapvető adattípusok Az adatbázis attribútumaihoz típust kell rendelnünk, éppúgy, mint az excel táblában a cellákhoz. Fontos lépés, ugyanis befolyásolja a bekerülő adatokkal kapcsolatos műveleteket! INTEGER, INT
Egész (szám)
FLOAT, DOUBLE
Lebegőpontos szám
DECIMAL
Lebegőpontos szám karakterként tárolva
DATE
Dátum
TIME
Idő
CHAR
Szöveg (0-255)
VARCHAR, TEXT
Szöveg (0-65535)
BOOLEAN
Logikai
SQL SQL = Structured Query Language Az SQL a relációs adatbáziskezelők lekérdező nyelve Az SQL részei - adatdefiníciós nyelv DDL – Data Definition Language - adatmanipulációs nyelv DML – Data Modification Language (INSERT, UPDATE, DELETE) - adatlekérdező
nyelv
- adatvezérlő nyelv
SELECT utasítás I. SELECT (mit?) FROM (mely táblából) WHERE (milyen feltételekkel?) Minden információ megjelenítése esetén SELECT * FROM
; Feltételekkel SELECT FROM WHERE ; Hivatkozásokkal SELECT FROM WHERE ; Rendezéssel SELECT FROM WHERE ORDER BY ; Csoportosítással SELECT AGGREGÁLÓFGV(), FROM WHERE ORDER BY GROUP BY ;
Összetett lekérdezések I. AND
„és” jelentésű, abban az esetben használatos, amikor az információk szűrése során az eredménynek 2 feltételt kell egyszerre kielégítenie
OR
„vagy” jelentésű, abban az esetben használatos, amikor az információk szűrése során az eredmény megfelelő bármely megadott feltétel teljesülése esetében
IS NULL IS NOT NULL
„érték nélküli” jelentésű, a táblákban lévő NULL elemek szűrését teszi lehetővé
LIKE
„olyan mint” jelentésű, szöveg típusú mezőknél kereshetünk tetszőleges karaktersorozatra
BETWEEN … AND …
„között” jelentésű, használható dátumokra/időre, illetve numerikus értékekre vonatkozó „-tól” „-ig” feltétel megadásához
IN NOT IN
„benne van” jelentésű, használata során egyetlen lépésben szűrhetjük a megadott halmaznak megfelelő rekordokat
UNION UNION ALL INTERSECT
Halmazműveletek: egyesítés, különbség
Összetett lekérdezések II. COUNT
„hány darab” jelentésű, az adott feltételeknek megfelelő rekordok számosságát adja meg
GROUP BY
„csoportosít” jelentésű, az adott feltételeknek megfelelő rekordok csoportosíthatók akkor, ha valamilyen aggregáló függvény szerepel a lekérdezésekben
HAVING
„feltéve, ha” jelentésű, a GROUP BY utasítással együtt használatos az általa előállított csoportokra adható meg keresési feltétel
ABS, MIN, MAX, AVG, SUM
Aggregáló függvények
+, -, /, *, <, >, <=, >=, …
Aritmetikai operátorok
DISTINCT
„egy adott tulajdonságú elemet egyszer” jelentésű
SELECT utasítás II. SELECT (mit?) FROM (mely táblákból) WHERE (milyen feltételekkel?) Amennyiben a lekérdezés nem csak egy táblát, hanem több táblát is érint, akkor a feltételek között meg kell adni azon attribútumok egyenlőségét, amelyek a táblák közötti kapcsolatokat definiálják! Ebben az esetben a „mit?” részbe nem csak az attribútum nevét kell megadni, hanem a . értékeket, ugyanis a lekérdező nyelv nem tiltja a különböző relációkban az attribútumnevek azonosságát és csak ilyen formában tudja eldönteni, hogy melyik relációból vegye ki az megadott attribútum értékeket.
DML utasítások UPDATE – A művelettel egy adott tábla egy bizonyos sorában lévő mező(ke)t lehet módosítani UPDATE SET WHERE ; INSERT – segítségével újabb sorokat hozhatunk létre egy adott táblában) INSERT INTO VALUES <……>; DELETE – segítségével sorokat törölhetünk egy adott táblából DELETE FROM WHERE ;
Adatbázisok a gyakorlatban
Szálláshely keresés – 1. lépés
Szálláshely keresés – további szűrések
Szálláshely keresés – találati lista
Milyen adatokból dolgozik az adatbázis? Egy szálláshelyről ismernünk kell - neve, címe (ország, település, jogállás, régió, kerület, utca, házszám) - milyen szolgáltatásokat nyújt (előre meghatározottak) - milyen jellegű a szálláshely - hány csillagos a szálláshely - milyen típusú a szálláshely - tagja-e valamilyen szállodaláncnak - 100 km-es körzeten belül lévő városoktól való távolság A foglalások általában szobákra történnek. Egy szobáról ismernünk kell: - mikor szabad és mikor foglalt - hány fő elhelyezésére alkalmas - mennyibe kerülnek az egyes szobák (/éj) - tartalmazza-e a szobaár a reggelit - milyen szolgáltatások/eszközök tartoznak a szobához
Milyen kapcsolatokkal dolgozik az adatbázis? Szálláshelyek egyértelmű azonosítása a név és a cím alapján történik (ok: azonos nevű szálláshelyek lehetnek több országban, vagy különböző régiókban, településeken)
Minden szálláshelynek van távolsága a 100km-en belüli városoktól (M:N kapcsolat, szélrózsaként kell elképzelni) Minden szálláshelynek vannak szolgáltatásai Minden szálláshelynek vannak attribútum adatai Minden szálláshelynek vannak szobái (1:N kapcsolat) Minden szobának van foglaltsága (1:N kapcsolat, hiszen egy adott azonosítóval rendelkező szoba egy és csak egy szálláshelyhez tartozhat)
Minden szobának vannak attribútum adatai (1:N kapcsolat)
Szálláshely tábla lehetséges szerkezete SZALLASHELY tábla (reláció) ID (elsődleges kulcs) NEV ORSZAG REGIO TELEPULES JOGALLAS KERULET UTCA HAZSZAM TIPUS JELLEG CSILLAG SZALLODALANC SZOLGALTATAS_1 SZOLGALTATAS_2
Miért nem helyes így ez a szerkezet? 1. A szálláshely neve felvehet azonos értéket 2. Egy-egy országban, régióban, településen, kerületben, utcában, házszám alatt (!) lehet több szálláshely is 3. Egy-egy típusba, szállodaláncba, jellegbe sok szálláshely tartozhat
Mi a megoldás? Az adatbázis felépítési követelményeinek megfelelően az értékhalmazokat ki kell emelni (egy-egy külön táblába), amely egyrészt segíti az adatok könnyű bővíthetőségét, másrészt gyorsíthatja a keresést és biztosítja az un. „normál formák”-nak való megfelelést.
Módosított szálláshely tábla SZALLASHELY tábla (reláció) SZALLASHELY_ID NEV CIM TIPUS JELLEG CSILLAG SZALLODALANC SZOLGALTATAS_1 SZOLGALTATAS_2 …
booking.com lehetséges szerkezete
Köszönöm a figyelmet!
Ferencz Viktória [email protected]