Adatbázis rendszerek I.



Hasonló dokumentumok
Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

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

Kliens oldali SQL-API

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

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


Adatbázisok elleni fenyegetések rendszerezése. Fleiner Rita BMF/NIK Robothadviselés 2009

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

5. Gyakorlat. 5.1 Hálós adatbázis modell műveleti része. NDQL, hálós lekérdező nyelv:

Adatbázisok* tulajdonságai

AdoDB a gyakorlatban

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

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Adatbázisok webalkalmazásokban

Kalmár György Adatbázis alapú rendszerek

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Adatbázis használata PHP-ből

Adatbázis, adatbázis-kezelő

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

BASH script programozás II. Vezérlési szerkezetek

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

API tervezése mobil környezetbe. gyakorlat

Adatbázis rendszerek. dr. Siki Zoltán

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

Java programozási nyelv 11. rész Adatbázis-programozás

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Megtanuljuk, hogyan lehet egy web-alkalmazással adatbázishoz csatlakozni Pontosan megnézzük a PHP lehetőségeit o MySQL-hez o Oracle-höz

A Java EE 5 plattform

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

Bevezetés: az SQL-be

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-kezelő rendszerek. dr. Siki Zoltán

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

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

PHP-MySQL. Adatbázisok gyakorlat

Az SQL*Plus használata

SQLServer. DB Recovery modes

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Moodle -egy ingyenes, sokoldalú LMS rendszer használata a felsőoktatásban

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

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

Adatbázis rendszerek II. Adatbázis elérése C# kliens programból ADO.NET API-n keresztül

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

Webapp (in)security. Gyakori hibákról és azok kivédéséről fejlesztőknek és üzemeltetőknek egyaránt. Veres-Szentkirályi András

SQLServer. SQLServer konfigurációk

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

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ázis-kezelés. Harmadik előadás

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő A PHP programozási nyelv JDBC, ODBC

IBM WebSphere Adapters 7. változat 5. alváltozat. IBM WebSphere Adapter for Oracle E-Business Suite felhasználói kézikönyv 7. változat 5.

S z á m í t ó g é p e s a l a p i s m e r e t e k

Adatbázis rendszerek I

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

Webleltár rendszer. Készítette: ABACOM Kft november. Abacom Kft.

Adatbázisok I A relációs algebra

Nyilvántartási Rendszer

Haladó DBMS ismeretek 1

VIR alapfogalmai. Előadásvázlat. dr. Kovács László

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

Adatbázisok elmélete

A szerzõrõl... xi Bevezetés... xiii

MDAC - Microsoft Data Access Components

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

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

Multimédiás adatbázisok

Mozgásvizsgálati mérések internetes megjelenítése. Zemkó Szonja - Dr. Siki Zoltán

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

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Web programoz as

Kommunikáció. 3. előadás

Adatbányászat és Perszonalizáció architektúra

Csima Judit szeptember 6.

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

Elektronikus Információs és Nyilvántartási Rendszer a Doktori Iskolák fiatal kutatói részére

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

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

Database Systems II. ZH összefoglaló

Adatbázis rendszerek 7. előadás State of the art

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

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

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

Java és web programozás

PL/SQL (folytatás) Kurzorok, függvények, eljárások

Ajánlott irodalom. Adatbázisok I.

Prolan Zrt. fejlesztéseiben. Petri Dániel

webalkalmazások fejlesztése elosztott alapon

Inczédy György Középiskola, Szakiskola és Kollégium Nyíregyháza, Árok u. 53. TANMENET. Informatika szakmacsoport

Summer of LabVIEW The Sunny Side of System Design

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

Programfejlesztési Modellek

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

BEVEZETÉS Az objektum fogalma

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

AWK programozás, minták, vezérlési szerkezetek

Java és web programozás

TestLine - balla tesztje-03 Minta feladatsor

Átírás:

Adatbázis rendszerek II. I. előadás - SQL API felületek Előadó: Barabás Péter Dátum: 2008. 09.11

Követelmények Tárgy lezárása: Aláírás + kollokvium Aláírás feltétele: Gyakorlatok 67%-os teljesítése Zárthelyi: nincs Egyéni feladatok: 6 önálló feladat (gyakorlaton is!) Vizsga: Írásbeli + szóbeli (heti 1 vizsgalehetőség) SQL API felületek 2

Adatkezelés, ismétlés Megbízható, konzisztens adattárolás DBMS DB Adatbázis rendszerek I. SQLPlus, isqlplus SQL Rugalmas, igény szerinti információkinyerés Relációs DBMS Oracle DB SQL API felületek 3

Miről lesz szó? Adatkezelés, SQL felületek Alkalmazói programok Kliens-szerver struktúratípusok Kliens-szerver generációk Hálózati komponensek Programfejlesztő környezetek API felületek SQL API logikai struktúrája CURSOR mechanizmus SQL API absztrakt adatkezelő parancsok SQL API felületek 4

SQL felületek Hatékony: SQL parancsok kiadására Eredmények megtekintésére Nehézkes: Nagyobb volumenű, rutintevékenységek esetén (minden paramétert meg kell adni) Nem alkalmas, ha több adatot akarunk bevinni felhasználó nem jártas az SQL nyelvben előzetes előszámításokra van szükség felhasználóbarát adatmegjelenítést kell megvalósítani a bevitelre kerülő értékeket egy listából választjuk ki SQL API felületek 5

Megoldás Testre szabott, rugalmasan működő alkalmazói program készítése Adatérték, utasítás kijelölés SQL utasítás ALKALMAZÓI PROGRAM DBMS DB Rács, lista, grafikon Jellemzők: -rugalmas -emberközeli -több funkció SQL API felületek 6

Alkalmazói program feladatai 1. Kapcsolat felvétel ALKALMAZÓI PROGRAM 2. Utasítások elküldése 3. Eredmények fogadása 4. Hiba fogadás, kezelés DBMS Kapcsolat felvétel paraméterei: host, port, adatbázis, felhasználónév, jelszó Utasítások elküldése: SQL utasítások formájában Lehet paraméteres is Eredmények fogadása: Nemcsak DQL esetén van eredmény Kurzor kezelési mechanizmus Hibakezelés: Alkalmazás v. adatbázis rendszer hiba, kivételek SQL API felületek 7

Kliens szerver működésmód Kliens oldal Szerver oldal alkalmazás parancs, művelet eredmény DBMS Parancs fogadás Parancs végrehajtás Eredmény elküldése SQL API felületek 8

Kliens szerver struktúratípusok PC környezet Központi gép buta terminálokkal File szerver struktúra Kétpólusú kliens-szerver Többpólusú kliens-szerver SQL API felületek 9

PC környezet PC Lokális adatok Adatkezelési rutinok Alkalmazás logika egy felhasználós struktúra minden feladatot a PC lát el az összes kód ugyanazon futtatható programba epül be elegendő egy egyszerűbb DB kezelő egység, mert nincs szükség konkurens hozzáférést szabályzó modulra, védelmet szabályzó modulra SQL API felületek 10

Központi gép buta terminálokkal Központi gép: Komponensei: Lokális adatok Adatkezelő komponens Alkalmazói program Feladatai: Osztott elérés biztosítása Adatok védelme Terminálok: Csak megjelenítésre Helyi számítás nincs SQL API felületek 11

File szerver struktúra Központi gép: csak az adatokat tárolja Alkalmazás csomópontok: számítási műveletek adatkezelés minden egyéb művelet Több gépes, rugalmasabb struktúra Pl: Novell Alkalmazás csomópont 1 Alkalmazás csomópont 2 Adat szerver csomópont Alkalmazás csomópont n SQL API felületek 12

Kétpólusú kliens-szerverszerver RPC, Üzenet alapú komm. Alkalmazás logika Megjelenítés Heterogenitás Központi gép DB Adatkezelés SQL API felületek 13

Többpólusú kliens-szerver szerver Alkalmazás szerver 1 Központi gép Alkalmazás szerver 2 DB Adatkezelés Alkalmazás szerver n SQL API felületek 14

Többpólusú kliens szerver II. N-tier struktúra Több alkalmazás szerver: Alkalmazás modularizálható Terheltségfüggő optimalizáció Kliens Kevesebb elem Csak megjelenítés SQL API felületek 15

Kliens-szerver szerver generációk 1. Generáció Kétpólusú modell Procedurális szemlélet RPC alapú adat kapcsolat Osztott, párhuzamos adatelérés támogatás 2. Generáció Többpólusú modell Heterogén környezet Komplex logika támogatása Nagyfokú skálázhatóság OO és üzenet-alapú kapcsolat SQL API felületek 16

I. generáció Lényeges a hálózat terhelése Hálózati forgalom minimalizálása Megoldás: Az adatbázisban tárolunk le bizonyos modulokat Az alkalmazás csak meghívja Hálózatot csak az eredmény terheli Aktív adatbázis objektumok Kétpólusú rendszerek esetén több alternatíva is létezik a feladatok szétosztására SQL API felületek 17

1. Generáció II: Szerver Kliens Fat client Adatbázis kezelés Procedurális logika, adatkezelés, megjelenítés Client-server Adatbázis kezelés, adatkezelés, Procedurális logika, megjelenítés Thin client Adatbázis kezelés, adatkezelés, procedurális logika Megjelenítés SQL API felületek 18

2. generáció RPC mellett újabb technológiák OO alapú Message alapú Közvetlen kapcsolat mellett Közvetítőkön keresztüli üzenetváltások Üzenet közvetítő központ Application server (3 pólusú rendszer) Tranzakció kezelés Heterogén források begyűjtése SQL API felületek 19

2. Generáció II. Adatbázis szerver Adat Fájl szolgáltatások Alkalmazás szerver Üzleti logika Adatkezelés megjelenítés SQL API felületek 20

2. Generáció III. Többpólusú rendszerek: Alkalmazás szervert többszörözik Feladatai: Tranzakciók kezelése Heterogén megjelenítési környezet kezelése Heterogén adatkörnyezet kezelése Terhelés kiegyenlítés Multiplex tranzakciók kezelése Hozzáférés védelmi funkciók SQL API felületek 21

Hálózati komponens Kliens-szerver architektúra fontos része DBMS-ek tartalmaznak hálózati komponenst Mind a kliens, mind a szerver oldalon telepítve kell legyenek Kliens alkalmazás Kliens oldali hálózati komponens Adatbázis szerver Szerver oldali hálózati komponens DB SQL API felületek 22

SQLNet Oracle hálózati komponense Több különböző hálózati protokollt is támogat heterogén kliens-szerver alkalmazások Két komponense van Kliens oldali Szerver oldali Figyel (listener) SQL API felületek 23

SQLNet II. Szerver oldali beállítások Hálózati protokoll típusa Szerver csomópont azonosítása Kommunikációs port 1521 Kapcsolódó adatbázis azonosítója PROTOCOL = TCP HOST = arrakis Kliens oldali beállítások (elérhető listener) Hálózati protokoll típusa Szerver csomópont azonosítása Kommunikációs port 1521 Kapcsolódó adatbázis azonosítója SID_NAME=ORCL PROTOCOL = TCP HOST = arrakis CONNECT_DATA_SID=ORCL SQL API felületek 24

Adatkezelő nyelv DB alkalmazások jellemzői: Adatkezelő elemek Általános vezérlési elemek Adatkezelő nyelv: SQL Egységes szabvány kezelő felület Minden relációs adatforrás támogatja De! mégsem teljesen egységes az adatkezelő nyelv SQL API felületek 25

SQL parancsrendszerek Relációs adatforrásonként különböző Ugyanazon SQL utasítás más hatást válthat ki különböző adatforrásokon Okok: szintaktikai, szemantikai eltérések Nemcsak relációs DBMS-eket használnak Nem adatbázisban történő adattárolás Igény ezek elérésére az alkalmazásból E-mail adatok, táblázatkezelők adatai, WEB-en lévő információk SQL API felületek 26

Egységes adatkezelő felület Probléma: adatkezelő felületek sokfélesége Egymástól eltérő parancsnyelvek Integrációja egy közös programban Következmény: Lelassítja az alkalmazásfejlesztés menetét Megoldás: Egységesíteni kell az adatkezelő felületeket 80-as években kezdődött SQL került ki győztesen SQL API felületek 27

Programfejlesztő környezetek Nincs egységesség 4GL környezet Egyszerűbb kódolás Paraméterezésből áll Generált kódrészletek Fejlesztés során látható eredmények OO környezet OO elvek Objektum és eseményvezérelt elemek Osztályok, csomagok Paraméterezés WEB-es környezet Megjelenítő: böngésző Egységes, elterjedt felület Más programozási stílus WEB szerveren keresztül Aktív/passzív dokumentum Új fejlesztő eszközök 3GL környezet Procedurális nyelv Szövegszerkesztővel készült forrás Beágyazott SQL Alacsony szintű programozási nyelv Hosszadalmas fejlesztés SQL API felületek 28

API felületek Beágyazott SQL CLI, ODBC OO-LI 4GL WEB-LI SQL API felületek 29

Beágyazott SQL SQL utasítások szinte változatlanul a gazdanyelv utasításai között az előzőekben csatlakoztatott adatbázishoz továbbítódnak egyidejűleg egy adatbázis felé él a kapcsolat statikus és dinamikus utasítások Probléma súlypontok: SQL utasítás és gazdanyelv procedurális szemléletének illesztése Adatforgalom megvalósítása Adatforrás halmaz szemlélete gazdanyelv rekordorientált szemlélete Hibaállapotok kezelése SQL API felületek 30

Beágyazott SQL II. - Példa int aar; char[30] atip; EXEC SQL DECLARE auto_cursor CURSOR FOR SELECT tip, ar FROM auto WHERE tip LIKE 'FIAT%' OR tip LIKE 'LADA%' FOR UPDATE OF ar; EXEC SQL OPEN auto_cursor; EXEC SQL WHENEVER NOT FOUND GOTO vege; while (1) { EXEC SQL FETCH auto_cursor INTO :atip, :aar; if (aar < 0) continue; if (atip == 'F') { EXEC SQL UPDATE auto SET ar = ar*1.15 WHERE CURRENT OF auto_cursor; } else { EXEC SQL UPDATE auto SET ar = ar*1.12 WHERE CURRENT OF auto_cursor; } } vege: EXEC SQL CLOSE auto_cursor; SQL API felületek 31

CLI, ODBC A gazdanyelv szintaktikájához idomul Eljárások, függvények hívása a gazdanyelvi környezetben SQL utasítás, mint aktuális paraméter Kapcsolat definiálása is függvénnyel Dinamikus SQL parancsok rugalmasabban kezelhetők Egyidejűleg több adatbázissal történő kapcsolat Nagyobb programozási előkészítést igényel SQL API felületek 32

ODBC Egységes API elérési felület biztosítása ODBC Oracle SQL Server Informix DB2 Postgres MySQL Sybase VFP Access Excel Txt SQL API felületek 33

CLI példa (PHP) <?php $keresk = addslashes($_get["keresk"]); $ar = addslashes($_get["ar"]); $mennyiseg = addslashes($_get["mennyiseg"]); $szin = addslashes($_get["szin"]); $szonyeg = addslashes($_get["szonyeg"]); $conn = mysql_connect("hostname","user","pass") or die ("Hiba"); mysql_select_db("userdb"); $query = "insert into eladas values('".$keresk."','".$ar."','".$mennyiseg."','".$szin."','".$szonyeg."')"; mysql_query($query) or die ("Hiba"); if (mysql_affected_rows() == 0) { echo "A felvitel sikertelen!"; } else { echo "A felvitel sikerult!"; } mysql_close($conn);?> SQL API felületek 34

OO-LI adatkapcsolat példányosítás Művelet végrahajtás Eredmény feldolgozás Csomagok, osztályok objektumok Hibakezelés paraméterezés Végrehajtandó utasítások Beállítási paraméterek SQL API felületek 35

OO-LI (JDBC példa) public OracleSQL(String host, String port, String db, String user, String pass) { try { DriverManager.registerDriver(new oracle.jdbc.driver.oracledriver()); conn = DriverManager.getConnection("jdbc:oracle:thin:@"+host+":"+port+":"+db,user,pass); System.out.println("Kapcsolat az adatbázissal létrejött."); } catch(exception e) { System.err.println(e.getMessage()); } } public int insert(string query) { int count=0; try { stmt = conn.createstatement(); count = stmt.executeupdate(query); stmt.close(); } catch(exception e) { System.err.println(e.getMessage()); } return count; } SQL API felületek 36

4GL RAD (Rapid Application Development) technológia Vizuális editorok Kódolás helyett paraméterezés Nagyfokú futtatási környezet függetlenség Fejlesztés menete: Komponens editor használata Elemek kombinálása, paraméterezése Generált kód Adatbázis kapcsolat és adatbázis objektum szerkesztők használata Adatelérési elemek objektumként, beágyazva v. CLI-ként SQL API felületek 37

4GL II. SQL API felületek 38

WEB-LI Új szabványok: HTML, XML, Java, Python, Változatos fejlesztési környezet Cél: weben való publikálás legyen közös Fejlesztési metódusok: 3GL nyelv + CLI OO nyelv + OO-LI Dokumentumba épített (v. külön) adatkezelő lépések Kimenet: webdokumentum Új fejlesztő környezetek SQL API felületek 39

SQL API logikai struktúrája Kapcsolati struktúrák allokálása Kapcsolat felvétel Kétlépéses végrehajtásnál parancs előkészítése Parancs paraméterezése Parancs végrehajtása Eredmény fogadása Eredmény feldolgozása Kapcsolat zárása SQL API felületek 40

Kapcsolati struktúra, kapcsolat felvétel Kapcsolati struktúra tárolja: Kapcsolódó elemek azonosítását Kapcsolat állapotát Kiadott utasításokat Fellépő hibakódokat. Kapcsolatfelvétel során: Gazdaprogram bejelentkezik a DBMS-be Session-t hoz létre Időigényes folyamat Memória allokálás Szerverszál indítás Metaadat lekérdezés Környezeti változók beállítása bejelentkezési alkalmak minimalizálása Perzisztens kapcsolatok kiépítése SQL API felületek 41

Parancs kiadása, paraméterezése, végrehajtása Direkt közvetlen végrehajtás Előzetes információközlés nélküli parancsküldés Feldolgozás a küldés után Kétlépéses végrehajtás 1. lépés: a gazdaprogram elküldi az SQL parancs vázát DBMS felkészül a tényleges végrehajtásra előkészíti a futtatáshoz szükséges struktúrát (pl. QEP gráf) 2. lépés: gazdaprogram elküldi a teljes SQL parancsot rövidebb ideig tart az előkészítés miatt Előnyök: Nyereség van-e? csak akkor, ha többször futtatjuk egymás után a parancsot Nyelvtani ellenőrzés SQL API felületek 42

Parancs kiadása, paraméterezése, végrehajtása II. Paraméterezés = nincs minden érték megadva a parancs szövegében Helypótlók alkalmazása parancs = SELECT * FROM DOLGOZOK WHERE fizetes >? ;? = paraméter Később, a futás előtt kap értéket Összetett SQL parancs futtatása parancs szövegének elküldése a DBMS-hez Eltérő végrehajtási módok (DQL vs. DML) SQL API felületek 43

Parancs végrehajtási problémák DQL lekérdező parancs esetén Gondoskodni kell a válaszadatok fogadásáról Átküldött adatok gazdanyelvi változók Probléma: a gazdaprogram és a DBMS adatkezelési szemlélete Adatbázis-kezelőkben: Tetszőleges méretű struktúra halmazok NULL érték értelmezése, üres érték fogalma Speciális adattípusok Ellentmondás feloldása: Pl. CURSOR mechanizmus SQL API felületek 44

Halmaz- és rekordorientált adatkezelés halmazmód Több rekord egyidejű kezelése esetén Rekordok törlése rekordmód Egyenként rekord feldolgozás esetén Egyedi módosítások A felhasználó a rekordokat egységesen kezeli A felhasználó egyesével lépkedhet a rekordok között Nincs munkarekord Mindig van munkarekord Navigációs lépések Nincs navigációs lehetőség Ugrás a lista elejére Ugrás a lista végére Ugrás a lista következő elemére Ugrás a lista előző elemére SQL API felületek 45

CURSOR mechanizmus CURSOR létrehozása Kezelő struktúra allokálása CURSOR nyitása CURSOR feldolgozása CURSOR lezárása, felszabadítás SQL API felületek 46

CURSOR létrehozása Alkalmazás Adatbázis kapcsolat Adatbázis CURSOR c1 B tábla A tábla C tábla DECLARE CURSOR c1 AS SELECT Előkészített utasítás SQL API felületek 47

CURSOR feldolgozása Alkalmazás Adatbázis kapcsolat Adatbázis CURSOR c1 OPEN c1 v1 v2 v3 v4 FETCH c1 INTO v1,v2,v3,v4 Előkészített utasítás Eredményhalmaz SQL API felületek 48

CURSOR lezárása Alkalmazás Adatbázis kapcsolat Adatbázis CURSOR c1 CLOSE c1 Eredményhalmaz FREE c1 Előkészített utasítás SQL API felületek 49

CURSOR típusok Statikus CURSOR Kulcsvezérelt CURSOR Dinamikus CURSOR Egyirányú CURSOR Kliens oldali CURSOR Szerver oldali CURSOR Módosítható CURSOR SQL API felületek 50

Statikus CURSOR Eredmény értékek nem változnak Tartalma az induló lekérdezés eredménye Navigáció nem igényel újbóli lekérdezést Nem az aktuális tartalmat mutatja Fizikai megvalósítás: Másolat a kliensen Ideiglenes tábla a szerveren Zárolás a szerveren (vagy multiversion) Módosítás problematikus SQL API felületek 51

Kulcsvezérelt CURSOR Csak a rekordok kulcsértékei határozódnak meg Köztes törlések, módosítások nem változtatják meg a kulcshalmazt Nyitáskor a rekord azonosítók halmaza, sorrendje rögzül Mezőértékek frissülnek menetközben Törölt, változtatott rekordok is benne maradnak SQL API felületek 52

Dinamikus CURSOR Tartalma folyamatosan változhat Minden navigációs lépésnél újból végrehajtódik a lekérdezés Aktuális állapotot mutatja Költséges SQL API felületek 53

Egyirányú, kliens és szerver oldali CURSOR-ok Egyirányú: A gazdaprogram csak előre tud lépkedni Kliens oldali: A rekordlista a kliens gépen tárolódik Szerver oldali: A rekordlista a szerveren tárolódik SQL API felületek 54

Módosítható CURSOR Módosításra használjuk Rekord mellett logikai címet megadó pointer is jelen van Módosításkor az alaptáblában lévő adatot a pointer alapján kapjuk SQL API felületek 55

CURSOR-ok összehasonlítása Aktualitás Konkurencia Teljesítmény Statikus - ++ + Kulcs-vezérelt + + + Dinamikus ++ -+ -+ SQL API felületek 56

SQL API absztrakt adatkezelő parancsai DB Adatbázis szimbólum T Reláció szimbólum C CURSOR szimbólum t Egy rekord szimbóluma O(DB,s) Kapcsolat kiépítés a DB felé, ahol s egy kapcsolat leíró paraméter c(db) Kapcsolat zárása q(t DB,f) A T halmazból az f feltételt teljesítő rekord lekérdezése x=q(t DB1,T DB2,,f) A T 1, T 2, halmazok joinjából az f feltételt teljesítő rekord lekérdezése, ahol egy rekordot ad vissza a lekérdezés (most csak SPJ lekérdezések) SQL API felületek 57

SQL API absztrakt adatkezelő parancsai II. C=q(T DB1,T DB2,,f) A C CURSOR előállítása a T 1, T 2, halmazokra vonatkozó lekérdezéssel i(t DB,t ) A t rekord felvitele a T halmazba a (C,t ) A rekord hozzáfűzése a C lista végére d(t DB,f) A T halmazból az f feltételnek megfelelő rekordok törlése d (C) A C listából az aktuális rekord törlése u(t DB,t,f) A T halmazból az f feltételnek megfelelő rekordok módosítása a megadott értékre u (C,t ) A T listából az aktuális rekord módosítása a megadott értékre n (C,p) A T listában navigációs lépés a p iránynak megfelelően. Az alapértelmezett navigációs irányok: 0:eleje,1:vége,+1:előre lép egyet,-1:visszalép egyet. SQL API felületek 58

SQL API absztrakt adatkezelő parancsai III. Vezérlőelemek main(x,y, ) Főprogram x = y Értékadás x = input( prompt ) Érték beolvasása if (f) { } Feltételes végrehajtás while (f) { } Ciklus do { } while (f) ciklus SQL API felületek 59

Példa 1. Minta adatbázis: DOLGOZO[kod,nev,beosztas,fizetes,ado] Feladat Új dolgozórekord felvitele Megoldás main() { x = input( nev ); y = input( beosztas ); z = input( fizetes ); o(db,s); k = q(dolgozo, max(kod))+1; i(dolgozo, (k,x,y,z)); c(db); } SQL API felületek 60

Példa 1I. Minta adatbázis: DOLGOZO[kod,nev,beosztas,fizetes,ado] Feladat X beosztásúak fizetésének növelése Y értékkel. X értéket olvassuk be. Megoldás main() { X = input(); s = input(); o(db,s); u(dolgozo, fizetes = fizetes+y, beosztas=x); c(db); } SQL API felületek 61

Példa III. Minta adatbázis: DOLGOZO[kod,nev,beosztas,fizetes,ado] Feladat Számoljuk ki az adó értékét egy adoszam() fv. meghívásával! Aktualizáljuk a DOLGOZO táblát! Megoldás main() { s = input(); o(db,s); Q = q(dolgozo,*); n (Q,0); do { Y = adoszam(q.fizetes); u (Q,ado=Y); } while (n (Q,+1)); c(db); } SQL API felületek 62

Köszönöm a figyelmet! SQL API felületek 63