Gazdasági folyamatok térbeli elemzése 5. elıadás
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) 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
Példa kereskedelmi nyilvántartó rendszer létrehozása (tea)
Kialakítás (MS Excel) TEA_ID TEA_NEV TEA_TIPUS TEA_TIPUS_ID SZARM_HELY 1 Bi Lou Chun "Tai Hu" zöld 1 Kína 2 Huang Shan Mao Feng zöld 1 Kína 3 Wei Shan Mao Jian sárga 2 Kína 4 Shou Mei fehér 3 Kína 5 Tie Guan Yin oolong 4 Kína 6 Pu Erh Cha puerh 6 Kína 7 Diang Hong Cheng Hao fekete 5 Kína 8 Gokujoucha zöld 1 Japán 9 Formosa Bi Lou Chung zöld 1 Tajvan
Kialakítás (Access)
Access_ismertetes_tea.mdb
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 ;
Nemzetközi adatbázisok
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]