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 Összetett kulcs Elsıdleges kulcs Másodlagos (idegen) kulcs egy attribútumból álló kulcs több attribútumból álló 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. 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 <TÁBLA> ; Feltételekkel SELECT <ATTRIBÚTUM> FROM <TÁBLA> WHERE <FELTÉTEL>; Hivatkozásokkal SELECT <ATTRIBÚTUM> <ALIAS> FROM <TÁBLA> WHERE <FELTÉTEL>; Rendezéssel SELECT <ATTRIBÚTUM> <ALIAS> FROM <TÁBLA> WHERE <FELTÉTEL> ORDER BY <ATTRIBÚTUM>; Csoportosítással SELECT AGGREGÁLÓFGV(<ATTRIBÚTUM>), <ATTRIBÚTUM> <ALIAS> FROM <TÁBLA> WHERE <FELTÉTEL> ORDER BY <TÁBLANÉV> GROUP BY <ATTRIBÚTUM> <ALIAS>;
Összetett lekérdezések I. AND OR IS NULL IS NOT NULL LIKE BETWEEN AND IN NOT IN UNION UNION ALL INTERSECT é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 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 érték nélküli jelentéső, a táblákban lévı NULL elemek szőrését teszi lehetıvé olyan mint jelentéső, szöveg típusú mezıknél kereshetünk tetszıleges karaktersorozatra között jelentéső, használható dátumokra/idıre, illetve numerikus értékekre vonatkozó -tól -ig feltétel megadásához benne van jelentéső, használata során egyetlen lépésben szőrhetjük a megadott halmaznak megfelelı rekordokat Halmazmőveletek: egyesítés, különbség
Összetett lekérdezések II. COUNT GROUP BY HAVING ABS, MIN, MAX, AVG, SUM hány darab jelentéső, az adott feltételeknek megfelelı rekordok számosságát adja meg 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 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 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 <TÁBLA>.<ATTRIBÚTUM> é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 <TÁBLA> SET <ATTRIBÚTUM1=ÉRTÉK1, ATTRIBÚTUM2=ÉRTÉK2,...> WHERE <FELTÉTEL>; INSERT segítségével újabb sorokat hozhatunk létre egy adott táblában) INSERT INTO <TÁBLA> VALUES < >; DELETE segítségével sorokat törölhetünk egy adott táblából DELETE FROM <TÁBLA> WHERE <FELTÉTEL>;
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 vferencz@vati.hu