Adatbázis rendszerek I ciós adatmodell műveleti rész ( ) ME- GEIAL Dr. Kovács LászlL szló ciós adatmodell strukturális részr tárol rolási struktúra ra séma R(m1,m2, ) adatmodell integritási részr ért rték korlátoz tozás PK, REF, NN, C, UN műveleti részr igényelt adatelem kinyerése művelet orientált ciós kalkulus tulajdonság orientált 1
A alaptulajdonságai Nyersanyag kod nev ar lejarat Zárt a ciók halmazára 1253 4433 6233 Dió Mogyi Bab 783 79 01.I.8 97.II.11 75.X.2 ciókat cióba képezk A műveletek m láncolhatl ncolhatók Eredmény kod nev 1253 Dió Imperatív szemlélet letű A ciók egyes részeit r emeli ki Egy vagy kétoperandus toperandusú operátorai vannak 4433 Mogyi Az SQL nyelv alapját képezik A i műveletek m áttekint ttekintése egy operandusú két operandusú { { szelekció projekció kiterjesztés aggregáci ció csoportképz pzés join metszet unió osztás különbs nbség 2
A szelekció művelete Szelekció: a megadott feltételnek telnek eleget tévőt rekordok kerülnek át az eredmény cióba jele: σ felt (r) σ X ΘY (r) = { t r t(x) Θ t(y)} rsz tipus szín r1 Fiat zöld r2 Opel kék r6 Mazda piros r4 Skoda kék r9 Suzuki piros rsz tipus szín r2 Opel kék r4 Skoda kék r6 Mazda piros szelekció σ feltétel: szin= kék szín = 'piros' OR tipus= Mazda VAGY Mazda tipus = 'Mazda' A projekció művelete Projekció: a kijelölt lt mezők kerülnek csak át az eredmény cióba jele: Π mlista (r) Π X (r) = {t(x) r t r} rsz tipus szín r1 Fiat zöld r2 Opel kék r6 Mazda piros r4 Skoda kék r9 Suzuki piros projekció Π kijelölt tipus, mezõk rsz = tipus, rsz rsz (AUTO) tipus Fiat Opel Mazda Skoda Suzuki szín zöld kék piros kék piros 3
A műveletek m kombinálása Az eredmény ó bemenete lehet egy újabb műveletnek rsz tipus szín r1 Fiat zöld r2 Opel kék r6 Mazda piros r4 Skoda kék r9 Suzuki piros szelekció feltétel: szín='piros' VAGY szín='kék' projekció kijelölt mezõk = rsz rsz r2 r6 r4 r9 Π rsz (σ szin= kék OR szin= piros piros (AUTO) ) A join művelet Alap Join: két k ció rekordjainak párosaip jele: r 1 >< r 2 Descartes-szorzat szorzat r >< r 1 2 = {(t,s) t r 1, s r 2 } rsz tulaj r1 3 r4 1 r6 4 EMBER id név 1 2 3 4 Laci Ágota János Zoltán összekapcsolás AUTO >< EMBER rsz tulaj id név r1 3 1 Laci r4 1 1 Laci r6 4 1 Laci r1 3 2 Ágota r4 1 2 Ágota r6 4 2 Ágota r1 3 3 János r4 1 3 János r6 4 3 János r1 3 4 Zoltán r4 1 4 Zoltán r6 4 4 Zoltán 4
A join művelet Szelekciós Join: a két k ció rekordpárosaib rosaiból a feltételnek telnek eleget tévő t párosokat adja eredményk nyként nt r 1 >< >< felt jele: r 1 >< felt r 2 felt r 2 = σ felt (r 1 >< r 2 ) felt Natural Join: olyan szelekciós join, mely az azonos elnevezésű mezők ért rtékegyez kegyezőségén alapszik jele: r 1 >< = r 2 r >< 1 = r 2 = Π (R1 U R2) R1 U R2) (σ r1.x = r2.x (r (r >< r 1 2 )) A join művelet Outer Join: olyan szelekciós join, melyben az illeszkedő pár nélk lküli li rekodok is bekerülnek az eredmény halmazba (üres étékekkel kiegész szítve) tipusai: - left outer join - right outer join - full outer join jele: r 1 +>< felt r 2 jele: r 1 ><+ felt r 2 jele: r 1 +><+ felt r 2 Az üres ért rték szimbóluma: NULL 5
A join művelet Righr outer join végrehajt grehajtása Könyv kod cim 32 c1 46 c2 Kiadó ID nev 1253 K1 4433 K2 4463 K3 kiadó 1253 4463 Könyv ><+ kiado=id Kiadó kod cim kiadó ID nev 32 c1 1253 1253 K1 46 c2 4463 4463 K3 NULL NULL NULL 4433 K2 A join művelet Semi Join: olyan szelekciós join, melyben az illeszkedő párokb rokból csak a megadott oldal mezői szerepelnek jele: r 1 >< felt r 2 r 1 >< felt r 2 = Π >< 1 felt r 2 ) felt R2 tipusai: - left semi join - right semi join felt Az illeszkedő párral rendelkező rekordokat adja vissza 6
A kiterjesztés művelet Kiterjesztés: s: a ció kibővítése származtatott mezőkkel jele: ε mlista (r) Az mező ért rtékének a többi t mező ért rtékéből kell meghatároz rozódnia rsz tipus ár kiterjesztés rsz tipus ár r1 Fiat 1200 r2 Opel 930 r6 Mazda 870 r4 Skoda 1500 r9 Suzuki 1400 új mezõ: ár/100 r1 Fiat 1200 r2 Opel 930 r6 Mazda 870 ε ar/100 /100 (AUTO) r4 Skoda 1500 r9 Suzuki 1400 ár/100 12 9.3 8.7 15 14 A halmaz műveletek m Unió: azonos sémájús ciók rekordhalmazának egyesítése se jele: r 1 r 2 Metszet: azonos sémájú s ciók rekordhalmazának metszete jele: r 1 r 2 Különbs nbség: azonos sémájús ciók rekordhalmazának különbsk nbsége FIÚK id VERSENYZÕK id 21 2 4 3 1 2 3 4 Laci név Erika Tibor Zoltán Éva név Tibor János jele: r 1 \ r 2 különbség Zoltán id név FIUK \ VERSENYZOK 1 3 Laci János 7
Az osztás s műveletem Osztás: s: a Descartes szorzat inverze, azon legnagyobb ció, melynek Descartes szorzata r2-vel benne van r1-ben jele: r 1 r 2 HOBBY hobby név foci Laci tenisz Tibor foci János futás Zoltán futás Laci foci Zoltán tenisz Gábor SPORTÁG hobby foci futás HOBBY SPORTAG osztás név Laci Zoltán Az osztás s műveletem Osztás s levezetése az alapműveletekb veletekből: l: r 1 r 2 = {t t Π R1 (r 1 ), t >< r 2 r 1 } a minden minden kvantorhoz kapcsolódik a jelentése Az eredmény levezetése: Jelöltek: ltek: Π R1 r 1 r 2 = Π R1 (r 1 ) A jó j jelöltek ltek szorzata benne van r1-ben: Π R1 A rossz jelöltek: ltek: Π R2 ( (Π ( R1 R1 R2 (r 1 ) \ Π R2 ( (Π ( R1 R1 R2 (r 1 ) >< r 2 )\r 1 (r 1 ) >< r 2 )\r1) (r 1 ) >< r 2 8
jele: Γ aggregációs-lista (r) aggregáci ciós függv ggvények: SUM(mez.kif mez.kif) AVG(mez.kif mez.kif) COUNT(mez.kif mez.kif) MAX(mez.kif mez.kif) MIN(mez.kif mez.kif) rsz tipus ár r1 Fiat 1200 r2 Opel 930 r6 Mazda 870 r4 Skoda 1500 r9 Suzuki 1400 r7 Opel 2570 r11 Fiat 850 r8 Opel 1000 Az aggregáci ció művelete Aggregáci ció: a cióból összes sszesítő rekordot áll llít elő csoportképzés kifejezés: Count() 8 kiírandó: COUNT() Γ count(*) (*) (AUTO) A csoportképz pzéses aggregáci ció művelete Csoportképz pzés és aggregáci ció: a ció rekodjait csoportokba rendezi, s minden csoportra egy összes sszesítő rekordot áll llít elő jele: Γ csoport képzési kifejezés aggregációs-lista (r) Azon rekordok kerülnek egy csoportba, melyekre a csoport képz pzési kifejezés azonos ért rtékű rsz tipus ár r1 Fiat 1200 r2 Opel 930 r6 Mazda 870 r4 Skoda 1500 r9 Suzuki 1400 r7 Opel 2570 r11 Fiat 850 r8 Opel 1000 csoportképzés kifejezés: tipus tipus Fiat AVG(ár) 1025 Opel 1500 kiírandó: tipus, AVG(ár) Mazda 870 Skoda 1500 Suzuki 1400 Γ tipus, count(*) tipos (*) (AUTO) 9
Speciális szelekciós s operátorok Halmaz és logikai operátorok is élnek: : tartalmaz : nem tartalmaz : minden kvantor : létezik l kvantor Al-szelekci szelekciók: A szelekciós s feltételben telben is szerepelhet i kifejezés Γ count(*) (σ fiz> (Γ avg(fiz) (DOLG)) (DOLG)) Kifejezés felépítésének lépéseil 1. Mely ciókb kból emelhetők ki az igényel informáci ciók? 2. Milyen az illesztési si feltétel tel a join esetén? 3. Milyen szűkítések sek vannak az alap ciókon? 4. Szüks kség van-e al-szelekci szelekciókra kra? 5. Szüks kség van-e csoportképz pzésre és ha igen, mi alapján? 6. Milyen aggregáci ciós kifejezést kell szerepeltetni? 7. Milyen mezők szerepeljenek az eredmény cióban? 10
Mintapélda Séma: BOROK(kod kod, nev, gyarto, fajta, ar) VEVO(vkod vkod, nev, cim) RENDELES(vevo vevo, bor, mennyiseg,datum datum) 1. Az 5000-nél drágább borok nevei Π mev (σ ar>5000 (BOROK)) 2. A vevők neve és rendelésének nek összmennyis sszmennyisége Γ nev nev, sum(mennyiseg) (RENDELES >< rendeles.vevo = vevo.vkod VEVO) Mintapélda 1. azon vevők, akik rendeltek Bikavért Π nev (σ borok.kod = rendeles.bor AND rendeles.vevo = vevo.vkod AND borok.fajta = Bikaver (BOROK >< RENDELES >< VEVO)) 2. Melyik gyárt rtó termel 5-nél 5 több t vörös v bort Π gyarto (σ count(*)>5 (Γ gyarto gyarto,count(*) (σ fajta= voros (BOROK)))) 3. Az átlagn tlagnál l drágább borok darabszáma Γ count(*) (σ ar> (Γ avg(ar) (BOROK)) (BOROK)) 11