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

Hasonló dokumentumok
Adatbázis rendszerek 7. előadás Térinformatikai adatbázisok. Molnár Bence

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

Adatbázis rendszerek 8. előadás Térinformatikai adatbázisok és gyakorlati ötletek. Molnár Bence

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

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

Adatbázis rendszerek. 5. előadás Adatbázis tervezés. Koppányi Zoltán

Téradat szerverek workshop

ADATBÁZIS RENDSZEREK. Attributum típusok, normalizálsá, relációs algebra. Krausz Nikol, Medve András, Molnár Bence

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

ADATBÁZIS RENDSZEREK. Attributum típusok, relációs algebra. Krausz Nikol, Medve András, Molnár Bence

Adatbázis rendszerek. 5. előadás Adatbázis tervezés. Koppányi Zoltán

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

Bevezetés: az SQL-be

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

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

Adatbázisok* tulajdonságai

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte

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

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

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

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

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

BEVEZETÉS Az objektum fogalma

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

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

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

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

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

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

SQL parancsok feldolgozása

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

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

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

Készítette: Szabóné Nacsa Rozália

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

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

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

SQL DDL-1: táblák és megszorítások

Adatbázis rendszerek SQL nyomkövetés

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

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

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

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.

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

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

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

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

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

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

Tranzakciókezelés PL/SQL-ben

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

Elemi alkalmazások fejlesztése IV.

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

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

Adatbázis Rendszerek II. 8. Gyakorló környezet

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

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

Adatbázisok I A relációs algebra

Adatbázis I. 11. előadás. Kulcsok az SQL ben. Hivatkozásépségi megszorítások és idegen kulcsok.

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

Téradatbázisok használata QGIS-ből A DB kezelő modul 2.2 verzió

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

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

SQL DDL: Táblák, megszorítások (constraints), triggerek, nézettáblák

Megszorítások. AB1_06A_Megszorítások - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Vektoros grafikát tároló adatbázisok. Katona Endre Térképi adatbázisok diasorozata alapján

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

Adatbázis használat I. 5. gyakorlat

Java és web programozás

Földmérési és Távérzékelési Intézet

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

9.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Indexek és SQL hangolás

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

SQL DDL-2 (aktív elemek) triggerek

Adatbázis rendszerek. dr. Siki Zoltán

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

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

6.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

A relációs algebra egy speciális algebra, amely néhány egyszerű, de hathatós. operandusok. Egy reláció megadható a nevével vagy közvetlenül, sorainak

Többfelhasználós és internetes térkép kezelés, megjelenítés

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Java és web programozás

Relációsémák létrehozása SQL nyelvben

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

LEKÉRDEZÉSEK SQL-BEN. A relációs algebra A SELECT utasítás Összesítés és csoportosítás Speciális feltételek

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010.

GIS fejlesztés Web platformra nyílt forráskódú ingyenes eszközökkel

Nyílt forráskódú tapasztalatok a FÖMI Térinformatikai Igazgatóságán

SQLServer. DB Recovery modes

Webfejlesztés 4. alkalom

A szürke háttérrel jelölt fejezet/alfejezet szövege a CD-mellékleten található. A CD-melléklet használata. 1. Elméleti áttekintés 1

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

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

Adatbázisok - 1. előadás

Átírás:

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

Kiterjesztett relációs algebra

Az ismétlődések megszüntetése Delta op. A műveleteinket multihalmazon definiáltuk Így a sorok ismétlődhetnek Előfordul hogy csak vagyunk kíváncsiak Ekkor δ (S ) δ ( a különálló sorokra használható a delta operátor. Név Jegy Jelenlét Kiss Pista 1 14 Nagy Péter 3 14 Kiss Péter 1 14 Nagy Ákos 3 10 Név Jegy Jelenlét )= Nagy Péter 1 14 3 14 Nagy Ákos 3 10 Kiss Pista

Attribútum átnevezés Az attribútumok nevei átnevezhetőek a nyilat ( ) használhatjuk egy operátor, művelet belsejében Erre Így például projekcióesetén: π réginév újnév (S ) Név π Név Hallgató ( Kiss Pista Jegy Jelenlét 1 14 Nagy Péter 3 14 Kiss Péter 1 14 Nagy Ákos 3 10 Hallgató )= Nagy Péter Kiss Pista Nagy Ákos

Attribútum átnevezés Az átnevezés után ezzel az új attribútum névvel végezhetünk műveleteket. σ Hallgató=' Kiss Pista '( π Név Hallgató ( = Név Jegy Jelenlét Kiss Pista 1 14 Nagy Péter 3 14 Kiss Péter 1 14 Nagy Ákos 3 10 Hallgató Kiss Pista ))

Kiterjesztett projekció Új attribútum vezethető le πtermék, Darab Ár ( = Termék Jegy Jelenlét Tej 1 250 Kifli 3 50 Kenyér 2 120 Túró Rudi 3 200 Termék Darab*Ár Tej 250 Kifli 150 Kenyér 240 Túró Rudi 600 )

Kiterjesztett projekció + Átnevezés A levezetett átnevezzük új πtermék, Darab Ár ÖsszÁr( = attribútumot Termék Jegy Jelenlét Tej 1 250 Kifli 3 50 Kenyér 2 120 Túró Rudi 3 200 Termék ÖsszÁr Tej 250 Kifli 150 Kenyér 240 Túró Rudi 600 legtöbbször )

Csoportosítás Csoportosítás a reláció sorainak csoportokba történő beosztása a reláció egy vagy több attribútumának értékétől függően. Jele: γ attr 1, attr 2,... (S ) Termék γtermék (πtermék ( Darab Kenyér 1 Kifli 3 Tej 1 Kifli 3 ))

Lépésről lépésre Termék π Termék ( Darab Kenyér 1 Kifli 3 Tej 1 Tej Kifli 3 Kifli Termék γtermék ( Termék Kenyér Kifli Tej Kifli )= Termék )= Kenyér Kifli Tej Kenyér Kifli

Csoportosítás + Összegzés Ahogy láttuk a csoportosítás ugyanolyan elemeket von össze az adott attribútumon. Azonban sorokat, módon. a többi attribútum is tartalmaz ezeket összesíthetjük valamilyen Az összesítéshez különböző függvényeket alkalmazhatunk a gamma operátoron belül. Ezek a következőek: SUM, AVG, MIN, MAX, COUNT, FIRST, LAST

Az eredmény reláció felépítése Osszuk a reláció sorait csoportokba. Egy csoport azokat a sorokat tartalmazza, amelyeknek az {attr1, attr2, } listán szereplő csoportosítási attribútumokhoz tartozó értékei megegyeznek. Ha nincs csoportosítási attribútum, akkor az egész R reláció egy csoportot képez. Minden csoporthoz hozzunk amelyik tartalmazza: csoport létre olyan sort, Szóban forgó attribútumait. csoportosítási Az {attr1, attr2, } lista összesítési attribútumaira vonatkozó összesítéseket.

Csoportosítás + Összegzés (Példa - SUM) Termék γtermék, SUM( Darab) ( Darab Kenyér 1 Kifli 3 Tej 2 Kifli 5 Termék SumDarab Kenyér 1 Kifli 8 Tej 2 )=

Kiterjesztett projekció Új attribútum vezethető le πtermék, Darab Ár ( = Termék Jegy Jelenlét Tej 1 250 Kifli 3 50 Kenyér 2 120 Túró Rudi 3 200 Termék Darab*Ár Tej 250 Kifli 150 Kenyér 240 Túró Rudi 600 )

Csoportosítás + Összegzés (Példa Több attribútumra) γtermék, SUM( Darab) ÖsszDb, SUM (ÖsszDb Ár ) ÖsszÁr ( Termék Darab Ár Kenyér 1 100 Kifli 3 100 Kifli 3 150 Kenyér 2 150 Tej 2 100 )= Termék ÖsszDb ÖsszÁr Kenyér 3 400 Kifli 6 750 Tej 2 200

Csoportosítás + Összegzés (Példa - COUNT) Termék γtermék, COUNT( Darab ) ( Darab Kenyér 1 Kifli 3 Tej 2 Kifli 5 Termék CountDarab Kenyér 1 Kifli 2 Tej 1 )=

Csoportosítás + Összegzés (Példa - FIRST) Termék γtermék, FIRST ( Darab) ( Darab Kenyér 1 Kifli 3 Tej 2 Kifli 5 Termék FirstDarab Kenyér 1 Kifli 3 Tej 2 )=

Csoportosítás + Összegzés (Példa Több attribútumra) γtermék, SUM( Darab) ÖsszDb, SUM (ÖsszDb Ár ) ÖsszÁr ( Termék Darab Ár Kenyér 1 100 Kifli 3 100 Kifli 3 150 Kenyér 2 150 Tej 2 100 )= Termék ÖsszDb ÖsszÁr Kenyér 3 400 Kifli 6 750 Tej 2 200

Sorrendezés A rendezetlen halmazon a sorba rendezés operátor segítéségével a rekordok rendezhetőek. ABC sorrend, növekvő, stb. Jele: τ Név ( τ attr 1, attr 2,... (S ) Név Jegy Jelenlét Név Kiss Pista 1 14 Kiss Aladár 2 14 Nagy Péter 4 14 Kiss Pista 1 14 Kiss Aladár 2 14 Nagy Péter 4 14 10 Nagy Péter 3 10 Nagy Péter 3 )= Jegy Jelenlét

Sorrendezés, több attribútumon Először az első attribútumon rendezünk, majd az azonos csoportba lévőket a következőn, és így tovább. τ Név, Jegy ( Név Jegy Jelen lét Kiss Pista 1 14 Nagy Péter 4 14 Kiss Aladár 2 14 Név Jegy Jelenlét Nagy Péter 3 10 Kiss Aladár 2 14 Kiss Pista 1 14 Nagy Péter 3 10 Nagy Péter 4 14 )=

SQL

Történet 1970-es évek eleje IBM SEQUEL (Structured English QUery Languge) Structured/Standard Query Language 1986-tól ANSI, 1987-től ISO szabvány SQL2 ('92), SQL3 ('99),... folyamatos fejlesztés (SQL2011) szabvány, melyet többé-kevésbé a legtöbb relációs adatbázis-kezelő támogat Relational Software, Inc. Oracle Corp.

Alapok Magja ekvivalens a relációs algebrával, de annál bővebb összesítő műveletek (pl. SUM, AVG) adatbázis-módosítások Nem procedurális nyelv (deklaratív), tehát az alapvető kérdés az, hogy mit kell csinálni, és nem az, hogy hogyan. Adatleíró (DDL) -, Adatmódosító (DML) -, Adatelérést vezérlő (DCL) -, Lekérdező (QL) nyelv

SQL alapok adatbázis létrehozása CREATE DATABASE adatbazis; jogosultságok felhasználó elérés helye kódolás (UTF8, LATIN2 [ISO-8859-2]) sablonok (pl. téradatok tárolása esetén) használat explicit definíció kapcsolódáskor USE adatbazis; Használt karakterek: [_a-z0-9]

Áttérés relációs algebráról

Emlékeztető Relációs adatbázis séma Relációs séma: Hallgató(Neptun: Szöveg, Név: Szöveg, Születési_év: Szám) Relációs adatbázis séma: Hallgató Neptun: Szöveg Név: Szöveg Születési_év: Szám...

Tábla létrehozása CREATE TABLE hallgato ( neptun VARCHAR(6) [...], nev VARCHAR(50), szuletesi_ev INTEGER, atlag DOUBLE PRECISION, PRIMARY KEY (neptun) );

Hogyan (ne) használjuk a dokumentációt? PostgreSQL MySQL Oracle W3Schools

Tábla létrehozása CREATE TABLE táblanév : DEFAULT alapértelmezett érték NULL /NOT NULL UNIQUE (!= PRIMARY KEY!) AUTO INCREMENT/Sequence/AutoNumber

Tábla módosítása ALTER TABLE táblanév ADD oszlopnév típus; ALTER TABLE táblanév DROP oszlopnév; DROP hallgato; TRUNCATE táblanév; ALTER TABLE hallgato RENAME TO bme_hallgatok; DROP táblanév; ALTER TABLE hallgato DROP nev; ALTER TABLE táblanév RENAME TO új_táblanév; ALTER TABLE hallgato ADD szuletesi_hely VARCHAR(50); TRUNCATE hallgato; Változtatások esetén figyelni kapcsolatok frissítésére is! kell a többi táblával való

Adatfeltöltés Beszúrás INSERT INTO táblanév [(attribútum1, attribútum2, )] VALUES (érték1, érték2, ); INSERT INTO hallgato (neptun, nev, szuletesi_ev, atlag) VALUES ('ABCDEF', 'Kiss Péter', 1993, 4.5); LOAD DATA COPY

Adatmódosítás Módosítás UPDATE táblanév WHERE feltétel; SET attribútum = érték UPDATE hallgato SET atlag = 4.6 WHERE nev = 'Nagy Sándor'; Törlés DELETE FROM táblanév WHERE attribútum = érték; DELETE hallgato WHERE nev = 'Kovács József';

Vetítés SQL-ben Vetítés (projekció) [π, Π]: a reláció bizonyos attribútumait megtartjuk és a többit törölve új relációt hozunk létre. SELECT nev, szuletesi_ev FROM hallgato; neptun SELECT nev szuletesi_ev * FROM hallgato; neptun nev szuletesi_ev

Szelekció SQL-ben Lekérdezés SELECT Péter'; eredmény sorainak szűrése * FROM hallgato WHERE nev='kis Több feltétel is lehet, logikai kapcoslat közöttük Módosítási jelentőségű parancsoknál különös

Egyszerű lekérdezések SELECT attribútum(ok) FROM táblá(k) WHERE tulajdonság(ok); SELECT nev FROM hallgatok WHERE nev = 'Kiss Péter'; attribútumok, táblák elválasztása vesszővel tulajdonságok összefűzése logikai operátorral: AND, OR operátorok: =, <>, >, <, =>, <=, LIKE, BETWEEN, IN, NOT ismétlődések megszüntetése (DISTINCT) aliasok (AS) - különleges karakterek: *, _, % (Access-ben: *,?, #) escape karakterek Idézőjelek: ', " kis- és nagybetűk

Nézettáblák CREATE TABLE: fizikailag létrejön (tárolásra kerül) CREATE VIEW nézettábla AS lekérdezés; CREATE VIEW hallgato_a AS SELECT * FROM hallgato WHERE nev LIKE 'A%'; nem jön létre (csak a definíció tárolódik), nem foglal tárkapacitást lekérdezhető módosítható? (materializált view) DROP VIEW nézettábla;

Sorba rendezés SELECT * FROM hallgato WHERE nev LIKE 'Kovács%' ORDER BY szuletesi_hely ASC/DESC; neptun_kod nev szuletesi_hely neptun_kod nev szuletesi_hely Abádszalók Zalaegerszeg Abádszalók Zalaegerszeg Almásfüzitő Záhony Budapest Záhony

Sorok számának korlátozása SELECT * FROM tabla LIMIT sorok_szama kezdo_sor; SELECT nev, jegy FROM hallgatok ORDER BY jegy LIMIT 1; Ha egy sort keresünk, érdemes ezt beleírni, mert gyorsítja a lekérdezést, hiszen nem keres tovább. Access: SELECT TOP 1 FROM hallgatok ORDER BY jegy; Click to add Text

Csoportosítás Valamilyen attribútum értéken egyező rekordok csoportosítása, együttes kezelése SELECT AVG(jegy) FROM hallgato WHERE targy = 'Adatbázisok' GROUP BY szuletesi_ido; Feltétel megadása a csoport tulajdonságaira SELECT AVG(jegy) FROM hallgato WHERE targy = 'Adatbázisok' GROUP BY szuletesi_ido HAVING AVG(jegy)>=3;

Függvények használata SELECT COUNT(*) FROM hallgato; SELECT AVG(jegy) FROM hallgato; SELECT MIN(jegy) FROM hallgato; SELECT MAX(jegy) FROM hallgato; SELECT SUM(jegy)/COUNT(*) FROM hallgato jegy IS NOT NULL; SELECT DISTINCT szuletesi_hely FROM hallgato;

Szöveg függvények SELECT vnev " " knev FROM hallgatok; SELECT * FROM hallgatok WHERE vnev " " knev LIKE "Nagy Béla"; MySQL (MariaDB): CONCAT() PgSQL: Access: & SELECT * FROM tantargyak WHERE SUBSTRING(kod FROM 6 TO 7)="FT";

Szabadszavas kersés mezo LIKE 'szoveg' SELECT 'Kiss%'; Joker * FROM hallgatok WHERE nev LIKE karakterek: %: tetszőleges karakter karakter; _: egy tetszőleges karakter 0,1,sok

Bonyolultabb lekérdezések SELECT nev FROM hallgato WHERE (nev LIKE '%Péter' OR nev LIKE '%Sándor') AND nev LIKE 'Nagy%'; SELECT nev FROM hallgato WHERE nev LIKE 'Kov_cs%'; SELECT eloadas_hossza*60 AS perc FROM targyak; SELECT nev FROM hallgatok WHERE targy = 'Adatbázisok' AND NOT bukott;

Metszet/Unió Általános formula: (SELECT neptun_kod FROM hallgatok WHERE nev LIKE 'Nagy%') INTERSECT/UNION (SELECT neptun_kod FROM hallgatok WHERE szuletesi_hely = 'Budapest'); szintaktika attribútumok száma

Subselect film(cim, ev, hossz, studionev, rendezoid) rendezo(id, nev, cim, bevetel) SELECT nev FROM rendezo WHERE ID = (SELECT rendezoid FROM Film WHERE cim = 'Gyűrűk Ura'); SELECT * FROM film WHERE rendezoid IN (SELECT ID FROM Rendezo WHERE nev LIKE 'P_ter%');

Több táblát érintő lekérdezések film(cim, ev, hossz, studionev, rendezoid) rendezo(id, SELECT SELECT nev, cim, bevetel) cim, nev FROM rendezo, film; (?) cim, nev FROM rendezo, WHERE film.rendezoid = rendezo.id; film

Kapcsolatok természetes összekapcsolás az összekapcsolási feltétel az azonos nevű attribútumok egyenlőségéből képződik nincs más feltétel az egyenlő attribútumok közül csak egyet tartalmaz az eredmény théta-összekapcsolás (csak = operátor)

Kapcsolatok oktatok oktato tanszekkod Koppányi Zoltán FMT Lovas Tamás FMT Tuchband Tamás AGT Gipsz Jakab NULL tanszekek tanszekkod tanszeknev FMT Fotogrammetria AGT Geodézia OCT Szerves Kémia

Kapcsolatok (természetes) SELECT * FROM oktatok NATURAL JOIN tanszekek; oktato tanszekkod tanszeknev Koppányi Zoltán FMT Fotogrammetria Lovas Tamás FMT Fotogrammetria Tuchband Tamás AGT Geodézia

Kapcsolatok (INNER JOIN) SELECT * FROM oktatok INNER JOIN tanszekek ON oktatok.tanszekkod = tanszekek.tanszekkod; oktatok.oktato oktatok.tansz ekkod tanszekek.tan szekkod tanszekek.tan szeknev Koppányi Zoltán FMT FMT Fotogrammetria Lovas Tamás FMT FMT Fotogrammetria Tuchband Tamás AGT AGT Geodézia

Kapcsolatok Lógó sor: olyan sor, amelyek egy másik reláció egyetlen sorával sem kapcsolódnak össze. Külső összekapcsolások a külső kapcsolatok esetén a lógó sorokat is megjelenítjük teljes (FULL OUTER JOIN) jobbról, balról (LEFT OUTER JOIN, RIGHT OUTER JOIN)

Kapcsolatok (LEFT OUTER) SELECT * FROM oktatok LEFT OUTER JOIN tanszekek ON oktatok.tanszekkod = tanszekek.tanszekkod; oktatok.oktato oktatok.tansz ekkod tanszekek.tan szekkod tanszekek.tan szeknev Koppányi Zoltán FMT FMT Fotogrammetria Lovas Tamás FMT FMT Fotogrammetria Tuchband Tamás AGT AGT Geodézia Gipsz Jakab NULL NULL NULL

Kapcsolatok (RIGHT OUTER) SELECT * FROM oktatok RIGHT OUTER JOIN tanszekek ON oktatok.tanszekkod = tanszekek.tanszekkod; oktatok.oktato oktatok.tansz ekkod tanszekek.tan szekkod tanszekek.tan szeknev Koppányi Zoltán FMT FMT Fotogrammetria Lovas Tamás FMT FMT Fotogrammetria Tuchband Tamás AGT AGT Geodézia NULL NULL OCT Szerves Kémia

Hivatkozási épség megőrzése NULL értékre állítás módszere Kaszkádolt frissítés CREATE TABLE táblanév (, ON DELETE SET NULL ON UPDATE CASCADE );

Megszorítások Attribútumokra vonatkozó (definíciókor) CREATE TABLE hallgato ( neptun_kod VARCHAR(6) NOT NULL, atlag FLOAT CHECK (altag > 0), nem CHAR(1) CHECK (nem IN ('F','N')),... );

Megszorítások Értéktartományra vonatkozó PostgreSQL példa! CREATE DOMAIN azonositok INT CHECK (VALUE >= 10000); CREATE TABLE hallgatok ( azon azonositok, );

Megszorítások Rekordra CREATE vonatkozó TABLE hallgatok ( nev CHAR(30) UNIQUE, nem CHAR(1) CHECK (nem = 'N' OR nem = 'F') );

Megszorítások Elnevezés... nev CHAR(30) CONSTRAINT nevkulcs PRIMARY KEY... CREATE DOMAIN fizetes INT CONSTRAINT nagyszam CHECK (VALUE >= 100000); Módosítás ALTER TABLE szinesz DROP CONSTRAINT nevkulcs; ALTER TABLE rendezo ADD CONSTRAINT nagyszam;

Az adatbázis-kezelő rendszerek jelenkora

Indexek Adatstruktúra, ami a táblában található adatok elérését gyorsítja. Ezáltal gyorsulnak a lekérdezések! Hátrányai: lassabb írás a táblába (az indexet is írni kell), nagyobb kapacitás igény. Egy vagy több attribútumra (függvények, kifejezések). vonatkozik

Index architektúrák Non-clustered (nem-csoportosított) Az adatok önkényes sorrendjével ellentétben az index kulcsokat sorrendben tároljuk a rekord pointerekkel (pl. sor; oszlop) együtt. Azaz az adatok sorrendje a táblában és az indexben eltérő. Clustered (csoportosított) A fizikai adatsorokat rendezi össze (a sorrendjük megváltoztatásával) az index blokkokkal, amelyek az adatsorokra mutatnak. Így, az adatok egymásutániságának köszönhetően nagymértékben gyorsulhat az olvasási sebesség. Cluster

Index típusok PostgreSQL: Hash tábla B-tree R-tree GiST (geometria) SP-GiST GIN (tömbök)

Hash tábla

B-tree

R-tree

Mit érdemes indexelni? Sokszor keresett adatok (WHERE...) Elsődleges és idegen kulcsok ( JOIN) Geometria (!) Nem érdemes ritkán használt attribútumok bináris adatok

Index létrehozása PostgreSQL példák: egy adott attribútumra: CREATE UNIQUE INDEX title_idx ON films (title); egy függvényre: CREATE INDEX ON films ((lower(title)));

Tárolt eljárás Mikor érdemes alkalmazni? Bemenő adatok függvényében, azokat feldolgozva, figyelembe véve ad eredményt, vagy frissíti az adatokat. Triggerek

Tárolt eljárások Tulajdonképpen egy program, amelyeket programozási eszközökkel (nyelvvel) hozunk létre, melyek lehetnek: Oracle: PL/SQL PostgreSQL: PL/pqSQL C, Python, Perl,...

Tárolt eljárások CREATE OR REPLACE FUNCTION RETURNS. AS $$ DECLARE...; BEGIN SELECT.. INTO... FROM..; LIMIT 1; RETURN...; END; $$ LANGUAGE plpgsql;

Triggerek Ravasz :) Esemény-feltétel-művelet szabály (+ tárolt eljárás/függvény) Események bekövetkeztekor beszúrás törlés módosítás tranzakciók befejeződése Ha a feltétel teljesül nem teljesül

Triggerek CREATE OR REPLACE FUNCTION bonusz_fv() RETURNS trigger AS $$ BEGIN -- NEW => az újonnan beszúrt sor -- ha az új sorban a jegy = 5 -- 10 bónusz pont jár IF NEW.jegy = 5 THEN NEW.bonusz = 10; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER bonusz BEFORE INSERT ON jegy FOR EACH ROW EXECUTE PROCEDURE bonusz_fv();

Triggerek AFTER/BEFORE/INSTEAD UPDATE több OF OF attribútum/insert/delete művelet

Tranzakciók Mi a tranzakció? SQL utasítások sora (nincs méretkorlát) mindent vagy semmit elv COMMIT; ROLLBACK SAVEPOINT ACID: Atomicity, Durability. Consistency, Isolaton, Típusai: automatikus, explicit, implicit

ACID::A Atomicity (atomi): mindent vagy semmit A tipikus példa a banki átutalás szokott lenni: A számláról leveszünk 10000 Ft-ot, B számlára ráteszünk 10000 Ft-ot. Ha a tranzakció sikerül, akkor B-nél lesz a szóban forgó 10000 Ft, ha nem, akkor A-nál marad. A félkész állapotok, miszerint sehol sincs a pénz, vagy éppen mindkét helyen megvan, nem megengedhetőek. History szerepe

ACID::C Consistency (konzisztens): konzisztencia megőrzés (a tranzakció után is megmarad). Nem lehetnek befejezetlen írási műveleteket (nincs félig írt rekord). Referenciális integritás: nem lehet a referenciákat, hivatkozásokat (pl. az idegen kulcsokat) megsérteni, törölni (ROLLBACK). Nem lehet egy adott típusban más típust tárolni. Nem lehet megszorításokat (CONSTRAINTS) átlépni. Több felhasználó esetén: lockolás (lásd később)

ACID::I Isolation (izolált): az egyszerre futó tranzakciók nincsenek hatással egymásra (akár nem is láthatják). Ez magába foglalja a konkurens hozzáférés biztonságos használatát. Az isolation level hatással) dirty records repeatable read phantom records (csak a SELECT-ekre van

ACID::D Durability (tartós): COMMIT után az eredmény végérvényesen az adatbázisba kerül. Ez igaz bármilyen helyzetben (hirtelen elmegy az áram, a szerver támadás alatt van, becsapódik egy repülőgép.

Tranzakció típusok Automatikus: általános eset, felhasználó kiad egy parancsot, a szerver végrehajtja (és közben tranzakciót nyit, zár) Explicit: felhasználó nyitja (BEGIN TRANSACTION) és zárja (COMMIT/ ROLLBACK) a tranzakciót. Implicit: szerver nyitja a tranzakciót, de a felhasználó zárja (COMMIT/ROLLBACK).

Tranzakció kezelés adatbázisokban A heavyweight adatbázis-kezelők megpróbálnak ACID-teljesek lenni, pl.: PostgreSQL, SQL Server, Oracle Más adatbázisok feladnak pár elvet, így hatékonyabb és gyorsabb adatkezelést biztosítanak, de bizonyos funkcionalitásokat ezáltal nem tudnak biztosítani. Erre jó példa a manapság elterjedőben lévő NoSQL adatbázisok!

Zárolás (lock[olás]) Többfelhasználós Az környezetben adott felhasználó zárolja az adott rekordot, amelyet éppen ír vagy módosít, így az aktuális tranzakció befejeztéig (COMMIT/ROLLBACK) más nem férhet hozzá. optimista pesszimista

Zárak dirty read non-repeatable phantom dead nincs read lock súlya műveleteknek... read (fontossága) az egyes

Hibatűrés SPOF: single point of failure Replikáció file/blokk szint WAL: Write Ahead Logging PITR: Point-In-Time Recovery Warm Standby Hot Standby

Adatbázis klaszterek Felhasználók; kiszolgálók; adatok

Piaci eloszlás

Téradatbázisok

Téradat szerver programok Kereskedelmi szoftverek ArcGIS Server (Oracle, SQL Server, PostgreSQL) (korábban ArcSDE) IBM Oracle Spatial (Oracle) MS SQL Server 2008+ Geomedia + MS Access SyBase SQL Anywhere (mobil eszközökre is)... DB2, Nyílt forráskódú PostGIS (PostgreSQL) SpatiaLite (SQLite)... http://www.gita.hu/e2013/b3/teradat_workshop.pdf

PostGIS PostgreSQL kiegészítő C++ és plpgsql nyelven íródott Tárolt eljárások Minden adatbázishoz hozzá kell adni, amiben használni szeretnénk Új adattípusok Új összehasonlító operátorok Új összegző függvények Új elemzési lehetőségek Geometriát a megjeleníteni DBMS rendszerek nem tudnak

Pár infó http://wiki.hup.hu/index.php/postgis http://www.agt.bme.hu/gis/postgis/ http://workshops.boundlessgeo.com/postgis -intro/geometries.html http://www.gita.hu/e2013/b3/teradat_work shop.pdf

Megoldandó feladatok Adat séma definíció Adattárolás Helyhez kötött adatok Keresés indexelés Elemzések Vetületek átszámítása Geometriai adatfelvitel?

Séma definíció OGC: Simple Feature SQL A geometriai adatok egy mezőben kerülnek ábrázolásra Kódolt forma Nem csak koordináta, hanem teljes poligon is lehet egy mezőben (akár több is) CREATE TABLE alappontok ( pid integer NOT NULL DEFAULT nextval('alappontok_pid_seq'::regclass), nev character(5), coord geometry(point,23700), CONSTRAINT pk_pid PRIMARY KEY (pid) ) Utólag: AddGeometryColumn(varchar table_name, varchar column_name, integer srid, varchar type, integer dimension, boolean use_typmod=true);

Típusok Point Linestring Polygon Polygonwithhole, Multipoint, MultiLinestring, MultiPolygon, GeometryCollection SRID: Vetület megadása

Adattárolás - WKT Well Known Text szöveges adatmegadás egyszerű elemek (2D) POINT (30 10) pont, LINESTRING (30 10, 10 30, 40 40) törtvonal, POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10)) felület, POLYGON ((35 10, 10 20, 15 40, 45 45, 35 10), (20 30, 35 35, 30 20, 20 30)) felület lyukkal több azonos típusú részből MULTIPOINT ((10 40 32), (40 30 41), (20 20 22)) 3D MULTIPOINT (10 40 32, 40 30 41, 20 20 22) MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10)) MULTIPOLYGON (((30 20, 10 40, 45 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5))) MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)), ((20 35, 45 20, 30 5, 10 10, 10 30, 20 35), (30 20, 20 25, 20 15, 30 20))) több eltérő típusú részből (nem minden kliens támogatja) GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10)) POINT ZM (1 1 5 60) http://www.gita.hu/e2013/b3/teradat_workshop.pdf

Adattárolás - WKB Well Known Binary bináris adatmegadás 01040000000100000001010000009239006 4507D1C412F1B85CA03BD0F41 MULTIPOINT(466772.10 PostGIS EWKT/EWKB tartalmazza 260000.47) vetületet is "SRID=23700;POINT((466772.09765710 8 260000.473886692))" http://www.gita.hu/e2013/b3/teradat_workshop.pdf

Keresés Geometriai kapcsolatok elemzése Megjelenítés Indexelés GIST CREATE INDEX vez_geom_idx ON vezetekek USING GIST ( geom ); ::geometry CAST()

Elemző függvények ST_Equals(GEOMETRY,GEOMETRY) ST_Contains(GEOMETRY,GEOMETRY) ST_Within(GEOMETRY,GEOMETRY) ST_Intersects(GEOMETRY,GEOMETRY) ST_Crosses(GEOMETRY,GEOMETRY) ST_Disjoint(GEOMETRY,GEOMETRY) ST_DWithin(GEOMETRY,GEOMETRY,DISTANCE) ST_Relate((GEOMETRY,GEOMETRY) ST_Intersection(GEOMETRY,GEOMETRY) ST_Union(GEOMETRY,GEOMETRY) ST_Buffer(GEOMETRY,DISTANCE) ST_ConvexHull(GEOMETRY) ST_Transform(GEOMETRY,SRID)

Lekérdező függvények ST_Area(POLYGON) ST_Perimeter(GEOMETRY) ST_Distance(GEOMETRY,GEOMETRY) ST_Dimension(GEOMETRY) ST_AsText(GEOMETRY) ST_X(POINT) ST_Y(POINT) ST_AsGeoJSON(GEOMETRY) ST_NumPoints(GEOMETRY) ST_PointN(GEOMETRY,integer) ST_NumGeometries(GEOMETRY) ST_GeometryN(GEOMETRY,integer) ST_GeometryType(GEOMETRY)

Operátorok <-> Távolság ~ Tartalmaz @ Benne van ~= Azonos http://postgis.refractions.net/documentati on/manual-2.0/reference.html

Vetületek Proj függvénykönyvtár SRID EOV: 23700 WGS84: 4326 Google mercator: 900913 vagy 3857

Adatfelvitel DBMS Külső adatforrások (import) Geometriai adatot csak szövegesen lehet (WKT) OSM Grafikus program QGIS Geomedia (ArcGIS) Web...

Adatfelvitel UPDATE csomopontok coord=st_setsrid(st_makepoint(x, y), 23700); INSERT INTO csomopontok (coord, adat1, adat2) VALUES (ST_SetSRID(ST_MakePoint(x, y), 23700), Egyadat, Kétadat ); shp2pgsql.exe s 4326 W shape_kiterjeszets_nelkul ujtablanev adatbazis osm2pgsql.exe -s /file/path/name.osm DXF-re nincs jó direkt megoldás OpenSource körökben (kereskedelmi: FME) -U felhasznalo -d SET latin2 adatbazis

Kérdés Miért különül megjelenítéstől? el az adatháttér a Mert az adatháttér több alkalmazás számára is használható lehet, felesleges többször tárolni Egy alkalmazásban ugyanaz többször is megjelenhet, kinézettel. az de adat más

WebGIS Weboldal (html, javascript, java, flash...) Webserver (Apache, Tomcat, Lighthttpd, Nginx, IIS) Térképszerver (Geoserver, Mapserver) WMS raszteres, georeferált adat Web Map Service Képek (tif) WFS vektoros, georeferált adat Web Feature Service Adatbázis (PostGIS, shapefile, csv...) WPS Web Processing Service Elemzések a szerveren futnak

WebGIS

QGIS Ingyenes PostGIS térinformatikai software adatokat olvas Rengeteg fajta ki és bemeneti adatok Digitalizálásra Saját is alkalmas geometriai elemző funkciók

QGIS elemzési lehetőségek Minden ami PostGIS-ben Adatbázis->DB kezelő->db kezelő => SQL ablak Ezt kimásolva akár a szerveren is elmenthetőek Tárolt eljárás Nézet QGIS natív elemzések Vektor-> Ez csak a QGIS-ben lesz használható Különböző adatforrások egyben elemzhetőek Shape SQLite SpatiaLite CSV PostGIS

Geometriai vs. algebrai kapcsolat Viszonylat megálló N:M kapcsolat Viszonylat(vid, jaratsuruseg.) Megallo(mid, x, y) Viszonylat_megallo(pid, vid(ik), mid(ik))

Szótár I. Proj GDAL Képek átalakítására, georeferálására, készítésre használható függvénykönyvtár képpiramis WKT Vetületi számításokért felelős függvénykönyvtár, megtalálható benne a legtöbb vetületi rendszer Well Known Test geometriai objektumok szöveges leírása WKB Well known Binary - geometriai objektumok bináris leírása

Szótár II. OpenStreetMap (OSM) Ajax Ajax segítségével továbbított jól struktúrált adat ExtJS, GeoExt, OpenLayers Aszinkron kommunikáció a böngésző és a szerver közt (Oldal egyes részeinek megváltoztatása a teljes újratöltés nélkül) JSON, GeoJSON Ingyenes, közösségi vektoros térkép Böngészőben használható javascript függvénykönyvtárak, megkönnyítik a megjelenítés megvalósítását Pmapper Komplex megvalósítás

Köszönöm a figyelmet! Adatbázis rendszerek