Adatbázisok elmélete

Hasonló dokumentumok
Adatbázisok elmélete

ADATBÁZISOK ELMÉLETE 5. ELŐADÁS 3/22. Az F formula: ahol A, B attribútumok, c érték (konstans), θ {<, >, =,,, } Példa:

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Sor és oszlopkalkulus

Adatbázisok elmélete

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Relációs algebra 1.rész alapok

Marton József BME-TMIT. Adatbázisok VITMAB november 11.

Lekérdezések az SQL-ben 1.rész

Adatbázisműveletek és lekérdezésoptimalizálás

Csima Judit október 24.

Lekérdezések az SQL-ben 1.rész

Lekérdezések feldolgozása és optimalizálása

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

Csima Judit szeptember 6.

RELÁCIÓS LEKÉRDEZÉSEK OPTIMALIZÁLÁSA. Marton József november BME TMIT

Adatbázis rendszerek 7. Matematikai rendszer amely foglal magában:

Relációs algebra lekérdezések optimalizációja. Adatbázisok használata

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

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

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

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

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

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

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

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

Relációs adatmodell. Adatbázisok használata

Adatbázis Rendszerek

Lekérdezések az SQL-ben 2.rész

Adatbázisok elmélete

Algoritmuselmélet 2. előadás

RELÁCIÓS LEKÉRDEZÉSEK OPTIMALIZÁLÁSA. Dr. Gajdos Sándor november BME TMIT

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

Csima Judit november 15.

Mveletek a relációs modellben. A felhasználónak szinte állandó jelleggel szüksége van az adatbázisban eltárolt adatok egy részére.

Adatbázis, adatbázis-kezelő

Adatbázisok 1. Kósa Balázs gyakorlata alapján Készítette: Nagy Krisztián. 1. gyakorlat

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

Algoritmuselmélet. Hashelés. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Adatbázisok gyakorlat

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

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

NORMALIZÁLÁS. Funkcionális függés Redundancia 1NF, 2NF, 3NF

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

Adatbázis-kezelés. alapfogalmak

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

Csima Judit szeptember 6.

Lekérdezések optimalizálása

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

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

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

Gyakori elemhalmazok kinyerése

Csima Judit BME, VIK, november 9. és 16.

Nem klaszterezett index. Klaszterezett index. Beágyazott oszlopok. Index kitöltési faktor. Indexek tulajdonságai

Nem klaszterezett index. Beágyazott oszlopok. Klaszterezett index. Indexek tulajdonságai. Index kitöltési faktor

Adatbáziskezelés. Indexek, normalizálás NZS 1

Fogalmak: Adatbázis Tábla Adatbázis sorai: Adatbázis oszlopai azonosító mező, egyedi kulcs Lekérdezések Jelentés Adattípusok: Szöveg Feljegyzés Szám

Adatmodellezés. 1. Fogalmi modell

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

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A

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

Adatbáziskezelés alapjai. jegyzet

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

SQL bevezetés. Select-From-Where záradékok Több relációt tartalmazó lekérdezések Alkérdések

Tankönyv példák kidolgozása

Relációs adatbázisok tervezése ---2

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

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

A számítástudomány alapjai

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.

Algoritmusok és adatszerkezetek I. 1. előadás

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

Alapvető fizikai tárolási szerkezetek, indexek, B-fák

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

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

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Adatbázisok gyakorlat

ADATBÁZISOK. 4. gyakorlat: Redundanciák, funkcionális függőségek

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

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

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

Adatbázisok I. Jánosi-Rancz Katalin Tünde 327A 1-1

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

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

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

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

Lekérdezések az SQL SELECT utasítással

Feladatok A mai előadáson: Tankönyv -- Termékek feladatai:

RELÁCIÓS ADATBÁZISSÉMÁK. Egyed-kapcsolat modellről átírás

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

Adatbázisok II. rész

Informatikai alapismeretek Földtudományi BSC számára

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

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

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

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Átírás:

Adatbázisok elmélete Fizikai szervezés, tárkezelés, lekérdezések optimalizálása Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 2017. október 26. Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 1 / 22

Fizikai szervezés, tárkezelés Célja: a rekordokból (egy rekord = a reláció egy sora) álló állomány kezelése úgy, hogy az adatokhoz való hozzáférés gyors legyen. Fontos jellemzők: külső táras adatkezelés, mert sok az adat = ha valamivel dolgozni akarunk, akkor be kell hozni a belső memóriába = a költséget a beolvasás/kiírás jelenti = az I/O műveletek számára akarunk optimalizálni a műveletek, amiket gyorsan meg kell tudni csinálni: rekordok beillesztése, törlése, módosítása, keresése Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 2 / 22

Az állomány felépítése Az adatállomány a külső táron van, blokkok (lapok) elérésfolytonos sorozatán. blokk... egyszerre egy blokk írható ki/olvasható be blokk méret fix (ált. 2 10, 2 12 byte) az operációs rendszer tartja nyilván, hogy melyik reláció rekordjai hol vannak és ő biztosítja az elérésfolytonosságot is Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 3 / 22

Blokkokról általában Tipikus blokk... fejléc 1. rekord 3. rekord 2. rekord 4. rekord üres hely A fejléc tartalmazza a blokkra vonatkozó infókat, (pl: melyik relációhoz tartozik, mennyi a szabad hely benne, hol kezdődik); ezután jönnek a rekordok egymás után, a végén általában marad üres hely. Fontos feltevés: rekordok blokkhatárt nem lépnek át, ezért általában van üres, fel nem használható hely a blokkok végén. (Ha nagyok a rekordok, pl. képfile-ok, és mégis át kell lépni laphatárt, akkor extra technikák kellenek, de ezzel most nem foglalkozunk.) Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 4 / 22

Rekordok típusai Kötött formátum Ekkor a mezők száma, mérete, típusa és sorrendje fix... Fejléc: fejléc 1. mezõ 3. mezõ 2. mezõ 4. mezõ a rekord kezelésével kapcsolatos infók: törölt-e, melyik relációhoz tartozik a mezők típusa időbélyeg (mikor módosult utoljára) Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 5 / 22

Rekordok típusai Változó formátum Mezők hossza esetleg nem fix (szöveget tartalmazó adatbázisok) Ismétlődő mezők lehetnek, és az ismétlések száma nem fix vagy pedig többértékű mezők (szereplők felsorolása filmnél) Ilyenkor bonyolultabb a fejléc, kevésbé lehet gazdaságosan/előre tervezhetően tárolni a rekordokat, ezért érjük el inkább, hogy ne legyen ez az eset: Vezessük vissza ezt az esetet a kötöttre, pl. mutatók alkalmazásával a problémás helyeken = Mostantól feltesszük, hogy a rekordok kötött formátumúak és hogy az egész állományon belül ugyanaz a formátum van. Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 6 / 22

Fontos fogalmak 1 mutató: blokk vagy rekord címét tartalmazó bejegyzés 2 kötött blokk/rekord: mutathat rá mutató, ezért nem mozgatható el szabadon. Ez típusszinten adott, azaz ha egy reláció rekordjaira/blokkjaira mutathat mutató, akkor még akkor is kötöttnek számít, ha éppen nem mutat egyre se semmi. 3 szabad blokk/rekord: nem mutathat rá mutató 4 Kulcs, keresési kulcs (néha csak kulcsnak hívjuk): a rekordok mezőinek egy kitüntetett halmaza (a reláció attribútumainak egy részhalmaza) ez alapján megy a keresés (ezeknek az értékét adjuk meg és azokat a rekordokat (sorokat a relációban) keressük, amiknél pont ezek az értékek szerepelnek) a keresési kulcs nem egyezik meg feltétlenül a reláció egyik kulcsával sem (pl. név a telefonkönyvnél) de az azért elvárás, hogy ne legyen nagyon sok egy-egy értékre illeszkedő rekord Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 7 / 22

Alapvető állományszervezési technikák Milyen struktúrát hozzunk létre az adatok tárolására? Lehetőségek: 1 Szekvenciális tárolás = Keresés: O(n), beszúrás: O(1), törlés: O(n) 2 Indexek Hash táblával = Keresés: O(n/M), beszúrás: O(n/M), törlés: O(n/M) 3 Indexek B-fával = Keresés: O(log n), beszúrás: O(log n), törlés: O(log n) Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 8 / 22

Lekérdezések végrehajtása, optimalizálása Elemzés (parsing): Előfeldolgozó: Logikai lekérdezési terv: Fizikai terv kiválasztása: szintaktikai ellenőrzés = megfelelő parancsok, megfelelő sorrendben átírás elemzőfa alakra Relációk használatának ellenőrzése = van-e ilyen Attribútumnevek használatának ellenőrzése = pl. egyértelmű-e, melyik attribútum melyik relációban van, benne van-e egyáltalán típusellenőrzések = pl. LIKE használatakor csak karakterlánc lehet Átírás (kibővített) relációs algebrai alakra Transzformációk = több terv, gyorsítás Legjobb terv kiválasztása költségbecsléssel Algoritmusok a műveletekhez Pufferkezelés Közbülső relációk eltárolása Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 9 / 22

A relációs algebra kibővítése Az SQL többet tud, mint a relációs algebra, de az extra dolgokat is át akarjuk írni relációs formába. Néhány különbség: Multihalmazok = H, M Kiválasztásnál, >< θ -nál a feltételben használhatunk aritmetikai műveleteket = σ A + B < 5 (R), R >< A+R.B<C+S.B S Vetítés aritmetikai műveletekkel és átnevezéssel = π A, B + C X (R) Ismétlődések kiszűrése = δ(r) Csoportosítások, aggregátumok = SELECT A, MIN(B) AS minb FROM R GROUP BY A = γ A,MIN(B) minb (R) Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 10 / 22

Fizikai végrehajtás Leginkább az I/O műveletigény érdekes. Ha túl nagy a számítási igény az is baj lehet. Soronkénti, unáris műveletek: Kiválasztás és vetítés. Egyszerre csak egy sort kell vizsgálni, az algoritmus nem függ a memória nagyságától. Unáris, teljes relációs műveletek: Pl. δ(r), γ(r). Ha nem fér el a reláció a memóriában, akkor mást kell csinálni. Bináris, teljes relációs műveletek:,, \,, ><. Sok minden függ a méretektől. Jelölés: Az adatokat a külső tárról blokkonként olvassuk be. Az R reláció tárolásához szükséges blokkok számát B(R)-rel jelöljük. A belső memória mérete szintén blokkokban mérve legyen M. σ C (R) végrehajtása: Blokkonként beolvassuk R-et. Soronként megnézzük teljesül-e C. Ha igen, kiírjuk. I/O műveletigény: B(R) Ha σ A = c (R)-t akarjuk, és van index A-ra: sokkal gyorsabb lehet. Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 11 / 22

Fizikai végrehajtás R(X, Y ) >< S(Y, Z ) végrehajtása: Ha B(S) < M 1, azaz S belefér a memóriába: egymenetes algoritmus 1 Beolvassuk S-et és hashtáblát vagy B-fát készítünk, ahol a kulcs Y attribútumai. 2 Beolvasunk egy blokkot R-ből. Minden sorára kikeressük a passzoló S-beli sorokat. Az eredményt kiírjuk. I/O műveletigény: B(S) + B(R) Ha B(R) > B(S) > M 1: beágyazott ciklusú algoritmus Beolvasunk minél több blokkot a memóriába S-ből, utána ugyanazt csináljuk mint fenn. I/O műveletigény: B(S) + B(S)B(R)/(M 1) B(S)B(R)/M Ha B(R), B(S) M 2 : rendezéses algoritmus Y kulcs szerint rendezzük R-et és S-et összefésüléses rendezéssel. Vesszük az összes y kulcsú sort a két lista elejéről és kiírjuk az összes párt. (Feltettük, hogy az összes y kulcsú sor elfér a memóriában.) I/O műveletigény: 5(B(S) + B(R)) Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 12 / 22

Fizikai végrehajtás Ha min(b(r), B(S)) M 2 : hasheléses algoritmus Y kulcs szerint vödrös hashelést végzünk R-re és S-re. (Ha közben megtelik egy vödör, azt kiírjuk.) A kapott R i, S i vödrökkel egymenetes algoritmust végzünk. I/O műveletigény: 3(B(S) + B(R)) Ha van index S-re Y szerint: indexet használó algoritmus R-et blokkonként olvassuk be, az index alapján keressük ki a hozzá passzoló sorokat. Átlagos I/O műveletigény: B(S)B(R)/V (S, Y ), ahol V (S, Y ): Y értékkészletének számossága S-ben. A többi műveletet is hasonló öteletekkel lehet végrehajtani, azokat most nem részletezzük. Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 13 / 22

Optimalizálás Triviális egyszerűsítések (főleg generált lekérdezések esetén hasznos): r r = r; r >< r = r; r = r; σ C ( ) = ; σ false (r) = π X (r s) = π X (r) π X (s) σ A=B B=C A=C (r) = σ A=B B=C (r) Nem teljesen trivi egyszerűsítések: σ A=1 (σ B=2 (r)) = σ A=1 B=2 (r) σ θ (r s) = r >< θ s asszociativitás melyik indexet érdemes használni ha van index, akkor 2 A A 100 helyett jobb A BETWEEN 2 AND 100 Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 14 / 22

Optimalizálás Ami többször előfordul, nem biztos, hogy érdemes mindig kiszámolni: Pl. π X (s >< r) \ π X (q >< r >< s) \ \ π X π X π X π X s r q s r q r s r s Asszociativitás kihasználható: q s = q r s r s q r Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 15 / 22

Optimalizálás Milyen sorrendben érdemes kiszámolni r(a, B) >< s(b, C) >< q(c, D)-t? Szélsőséges esetben lehet, hogy bár r, s, q mindegyikének 1000 sora van, de r >< s-nek csak 1 sora, és s >< q-nak 1000000 sora. = Sokkal gyorsabb (r(a, B) >< s(b, C)) >< q(c, D) kiszámolása. Ezt persze előre nem lehet tudni biztosan. = Statisztikákat vezetünk a relációk attribútumaiban előforduló értékekről Ebből lehet becsülni a költségeket + dinamikus programozás vagy mohó algoritmus. Igazi optimumot nehéz megtalálni: Tétel Annak eldöntése NP-teljes, hogy néhány reláció természetes illesztésének van-e legalább egy sora. Tétel Az optimum megtalálása NP-nehéz probléma. Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 16 / 22

Bizonyítás Tétel Annak eldöntése NP-nehéz, hogy néhány reláció természetes illesztésének van-e legalább egy sora. Bizonyítás. Visszavezetjük rá a 3-SZÍN problémát. Adott egy gráf, kérdés színezhető-e 3 színnel. A gráf minden e éléhez vegyünk fel egy-egy relációt. A reláció két attribútma az él két végpontja legyen, sorai pedig az összes lehetséges színpár. Például: e = {X, Y } X Y piros kék piros sárga kék piros kék sárga sárga piros sárga kék e = {X, Z } X Z piros kék piros sárga kék piros kék sárga sárga piros sárga kék Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 17 / 22

Bizonyítás Bizonyítás. Ha az összes élhez tartozó reláció természetes illesztésének van sora = egy sor minden csúcshoz rendel egy színt. Mivel az illesztés megfelel az egyes relációknak, egy él két végpontján nem lesz ugyanolyan szín. Ha van színezés = a színezésben minden élre vegyük ki a megfelelő színpárt. Ezek a sorok összeillenek, lesz sor a természetes illesztésben. Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 18 / 22

Kiválasztás tologatása ÁRU(ÁRUKÓD, ÁRUNÉV, EGYSÉGÁR) MENNYISÉG(DÁTUM, ÁRUKÓD, DB) Hány darabot adtak ( el 2002. jan. 15-én az A123 kódú áruból, mi a neve és )) az ára? π DB, ÁRUNÉV, EGYSÉGÁR σ ÁRUKÓD= A123 DÁTUM= 2002-01-15 (MENNYISÉG >< ÁRU = ( ) ) π DB, ÁRUNÉV, EGYSÉGÁR σ ÁRUKÓD= A123 DÁTUM= 2002-01-15 (MENNYISÉG >< ÁRU π σ σ π MENNYISÉG ÁRU MENNYISÉG ÁRU Felhasznált azonosság: σ C (R >< S) = σ C (R) >< S, ha minden C-beli attribútum szerepel R-ben. Hasonló azonosságok: σ C (R S) = σ C (R) σ C (S), σ C (R S) = σ C (R) S, ha minden C-beli attribútum szerepel R-ben. σ C (R >< S) = σ C (R) >< σ C (S), ha minden C-beli attribútum szerepel R-ben és S-ben is. Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 19 / 22

Kiválasztás tologatása Összetett C szétszedhető: σ C1 C 2 (R) = σ C1 (σ C2 (R)), σ C1 C 2 (R) = σ C1 (R) H σ C2 (R), ha R nem multihalmaz. π σ K= A123 D= 01-15 π σ K= A123 D= 01-15 σ K= A123 MENNYISÉG ÁRU MENNYISÉG ÁRU Lehet, hogy érdemes előbb feltolni, aztán le. Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 20 / 22

Más műveletekre vonatkozó szabályok Hasonló szabályok projekcióra (π), duplikációk kiszűrésére (δ) és aggregációra (γ) is vannak, de ezek nem annyira csökkentik a műveletigényt. De csak olyan attribútumot lehet eltüntetni, amire nem hivatkozunk feljebb. π L (R >< S) = π L (π M (R) >< π N (R)), ahol M az R olyan attribútumai, hogy vagy összekapcsolási attribútum, vagy L-beli, N pedig... δ(r >< S) = δ(r) >< δ(s) δ(σ C (R)) = σ C (δ(r)) δ(γ L (R)) = γ L (R) De pl. δ nem tolható át M, π-n. Még egy fontos kérdés az alkérdések kezelése, de erről most nem szólunk. Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 21 / 22

Összefoglalás Sok ilyen szabály alkalmazásával többféle logikai terv előállítható. Ezeknek megbecsüljük a költségét és választunk egyet. Ehhez készítünk fizikai tervet. Jobb rendszerekben ez automatikus. Ilyenekben kérdéses, hogy a lekérdezés beírásakor mire kell figyelni. Inkább olyan egyszerűsítéseket érdemes csak elvégezni, ami a függések következménye, mert ezeket nehezebben lehet automatizálni. Általában van rá mód, hogy megnézzük mi a logikai és fizikai terv és meg lehet adni, hogy pontosan mit csináljon. Katona Gyula Y. (BME SZIT) Adatbázisok elmélete 2017. október 26. 22 / 22