ADATBÁZIS RENDSZEREK Attributum típusok, normalizálsá, relációs algebra Krausz Nikol, Medve András, Molnár Bence 2018.03.07.
MAI TÉMÁINK Attribútum típusok Relációs adatbázisok kérdései Redundancia, anomáliák Normalizálás, dekompozíció Relációs algebra és műveletei Kiterjesztett relációs algebra 2
Attribútumok típusa
ATTRIBÚTUMOK TÍPUSA Az attribútumok esetén meghatározhatjuk, hogy azok milyen halmazból vehetnek fel értékeket, azaz megadhatjuk azok típusát Egyszerű típusok (példák): Száma Valós Egész Számláló Szöveg Logikai Dátum
ATTRIBÚTUMOK TÍPUSA Összetett típusok (példák): Maszk: 000-000-000, XXXXX Vonallánc, gömb, geometriai elemek Binary Large Object (BLOB) Kép, MP3, stb... Ezeket beépíthetjük a relációs séma leírásába: Jegyek(Azonosító : Számláló, Név : Szöveg, Jegy: Egész szám)
ATTRIBÚTUM TÍPUS VÁLASZTÁS Tárhely igény Mint a papírlapon: a leghosszabb értéknek megfelelő hely szükséges Értékek készlet számossága (1-9, a-z, a-z...) Műveleti lehetőségek Matematikai műveletek Sorba rendezés Azonosság különbözőség vizsgálat (redundancia) Hivatkozások Kódolás fix választási lehetőségek esetén Más halmaz attribútumaira
TOVÁBBI PÉLDÁK Idom(Azonosító : Számláló, Elnevezés: Szöveg, Keresztmetszet : Valós, Inercia : Valós, Ár : Egész) Gömb(ID : Számláló, X : Valós, Y : Valós, Z : Valós, R : Valós) Közút(Azonosító, Elnevezés, Rendűség) Földrészlet(Azonosító, Helyrajziszám, Tulajdonos, Terület, AK_érték) Az utolsó két séma esetén is adjuk meg az attribútumok típusát! Több fajta jó megoldás is létezhet!
A relációs adatbázis séma kérdései
EGY ROSSZ TÁBLA! érvénytelen érték (nincs kulcs) Név Utónév Életkor ID Szem.Ig Gipsz Jakab Jakab 23 1 101 Hallgató Bálint Béla -1 2 102 Gipsz Jakab Jakab 23 1 101 redundancia (ha kulcs lenne, akkor is dupla kulcs szerepel)
EGY ROSSZ TÁBLA! duplikált sor inkonzisztencia Név Utónév Életkor ID Szem.Ig Gipsz Jakab Jakab 23 1 101 Hallgató Bálint Béla -1 2 102 Gipsz Jakab Jakab 23 1 101 Vezeték névre nem tudunk keresni
MIKRE KELL ODAFIGYELNI? Konzisztencia biztosítása: az adatbázis ne tartalmazzon egymásnak ellentmondó tényeket Adatok érvényességének biztosítása: az adatok csak a megfelelő halmazból vehetnek fel értékeket Redundancia: valamely tényt vagy a többi adatból levezethető mennyiséget többszörösen tároljuk Többszörösen tároljuk az adatokat Nehéz az adatokat konzisztensen tartani Duplikált sorok tárolásának elkerülése Duplikált adatok tárolásának elkerülése
HOGYAN KÜSZÖBÖLHETŐ KI? Konzisztencia biztosítása: normalizálás Adatok érvényességének biztosítása: attribútumok típusának kiválasztása Redundancia csökkentése, megszüntetése: normalizálás Duplikált sorok tárolásának elkerülése: kulcs előírása Duplikált adatok tárolásának elkerülése: megfelelő tervezés, normalizálás
Redundancia, adatbázis anomáliák
REDUNDANCIA A redundancia a következőket okozhatja Módosítási anomália Beszúrási anomália Törlési anomália
MÓDOSÍTÁSI ANOMÁLIA Név Életkor MitVett? Kiss Pista 23 Csoki Kiss Pista 23 Sör Nagy Péter 21 Sör Kiss Pista nevét meg akarom változtatni, és azt az összes előforduló helyen meg kell tennem!
BESZÚRÁSI ANOMÁLIA Név Életkor MitVett? Kiss Pista 23 Csoki Kiss Pista 22 Sör Nagy Péter 21 Sör Kiss Pista felvételénél elrontjuk a bevitelt és véletlenül 22-t viszünk be életkornak. Ekkor nem tudhatjuk biztosan hány éves Pista.
TÖRLÉSI ANOMÁLIA Név Életkor MitVett? Kiss Pista 23 Csoki Kiss Pista 23 Sör Nagy Péter 21 Sör Ha valami okból kitöröljük Kiss Pista sorait, akkor az eddig már felvitt adatokat (pl. életkor) elveszítjük!
REDUNDANCIA ELKERÜLÉSE A redundancia elkerülésére a tervezés során a táblákat normalizálni kell. Az egyes normalizálási lépések esetén azt mondjuk, hogy akkor az adatbázis egy meghatározott normál formán van. Előtte azonban ismerkedjünk meg a funkcionális függőségekkel!
Funkcionális függőségek
FUNKCIONÁLIS FÜGGŐSÉG Ha a reláció valamely 2 sora megegyezik valamilyen attribútum(ok)-on (A), és abból következnek (egyértelműen meghatároz) más attribútum(ok) (B) akkor azt mondjuk hogy B funkcionálisan függ A-tól. Név Életkor Vétel Kiss Pista 23 Csoki Kiss Pista 23 Sör Jelölés Név Életkor
FUNKCIONÁLIS FÜGGŐSÉG - KULCS Vegyük észre, hogy a funkcionális függőség a kulcs fogalom általánosítása: Amennyiben egy vagy több attribútum funkcionálisan meghatározza az összes többi attribútumot, akkor az szuperkulcs Ha ez a halmaz minimális, akkor kulcsról beszélünk
FUNKCIONÁLIS FÜGGŐSÉG - PÉLDA Adjuk meg a következő relációk függőségi halmazait! Dolgozók(SzemIg., Név, Jövedelem, Beosztás)
FUNKCIONÁLIS FÜGGŐSÉG - PÉLDA Adjuk meg a következő relációk függőségi halmazait! Dolgozók(SzemIg., Név, Jövedelem, Beosztás) SzemIg. Név, Jövedelem, Beosztás
FUNKCIONÁLIS FÜGGŐSÉG - PÉLDA Adjuk meg a következő relációk függőségi halmazait! Dolgozók(SzemIg., Név, Jövedelem, Beosztás) SzemIg. Név, Jövedelem, Beosztás Beosztás Jövedelem (?) Eredmények(TantárgyNév, Neptun-kód, Név, Osztályzat)
FUNKCIONÁLIS FÜGGŐSÉG - PÉLDA Adjuk meg a következő relációk függőségi halmazait! Dolgozók(SzemIg., Név, Jövedelem, Beosztás) SzemIg. Név, Jövedelem, Beosztás Beosztás Jövedelem (?) Eredmények(TantárgyNév, Neptun-kód, Név, Osztályzat) TantárgyNév, Neptun-kód Osztályzat
EGYÉB FOGALMAK Teljesen függ: az attribútum a kulcs egyetlen részhalmazától sem függ Tranzitív függés: minden, nem kulcs mező függ a kulcstól, de van olyan mező, esetleg mezők, amely a kulcson kívül más mezőtől is függnek.
Normál formák
ELSŐ NORMÁL FORMA (1NF) Minden sora különböző (van kulcs) Van egy kulcs, amitől az összes többi attribútum funkcionálisan függ Ekkor a kulcs lehet a reláció összes attribútuma is Oszlopok száma és sorrendje minden sorban azonos Minden oszlopnak csak egy attribútuma lehet Minden attribútum egyszerű Ennek eldöntése nem mindig egyértelmű tervezési kérdés
MÁSODIK NORMÁL FORMA (2NF) Második normál forma definíciója: Első normál formán vagyunk + Minden nem kulcs attribútum teljesen függ a kulcstól, de nem függ a kulcs bármely részhalmazától Ha egy attribútumú a kulcs (azaz nem összetett) akkor rendben
DEKOMPOZÍCIÓ (2NF) Neptun SzemIg. ZH Eredmény ABCD1 100AA 1 4 ABCD2 101AA 1 5 ABCD1 100AA 2 3 Neptun ABCD1 ABCD2 SzemIg. 100AA 101AA Neptun ZH Eredmény ABCD1 1 4 ABCD2 1 5 ABCD1 2 3
HARMADIK NORMÁL FORMA (3NF) Harmadik normál forma definíciója: Második normál formán vagyunk + Minden olyan attribútuma, mely nem része a kulcsnak, funkcionálisan teljesen függ a kulcstól, és csak attól. (Nincs tranzitív függőség)
DEKOMPOZÍCIÓ (3NF) VételID Vétel Ár 1 Csoki 100 2 Sör 300 3 Csoki 100 4 Csoki 100 5 Sör 300 VételID Vétel 1 Csoki 2 Sör 3 Csoki 4 Csoki 5 Sör Termék Ár Csoki 100 Sör 300
MAGASABB NORMÁL FORMÁK A gyakorlatban a 3NF már elegendő A legtöbb esetben ez már redundancia mentességet biztosít BCNF, 4NF, 5NF A magasabb normál formák hátrányai: Nehezen átlátható az adatbázis szerkezete Bonyolult lekérdezések Csökkenti a lekérdezések hatékonyságát
A GYAKORLAT A teljesség kedvéért megemlíthető, hogy bizonyos műveletek hatékonyabb végrehajtása érdekében egyes esetekben a tervezők inkább lemondanak a tisztaságról, áttekinthetőségről, s összevonnak egy relációba olyan adatokat is, amelyek a normalizálás elmélete szerint külön relációkban kellene helyet foglalniuk.
Műveletek
MŰVELETEK A két változós halmaz műveletekhez a következőeknek kell teljesülni mindkét (R, és S) relációra Az R és S relációknak ugyanazt az attribútumhalmazt kell tárolnia Az attribútumokat rendezni kell úgy, hogy az R i-ik oszlopa megegyezzen S i-ik oszlopával
HALMAZMŰVELET 1 - UNIÓ Jele: S R Név Jegy Kiss Pista 2 Nagy Péter 3 Vál Péter 5 Név Jegy Kiss Lajos 2 = Nagy Lajos 3 Nagy Ákos 3 Név Jegy Kiss Pista 2 Nagy Péter 3 Vál Péter 5 Nagy Ákos 3 Kiss Lajos 2 Nagy Lajos 3
HALMAZMŰVELET 2 - METSZET Jele: S R Név Jegy Kiss Pista 2 Nagy Péter 3 Vál Péter 5 Nagy Ákos 3 Név Jegy Kiss Pista 2 Nagy Lajos 3 Név = Kiss Pista 2 Jegy
HALMAZMŰVELET 3 - KÜLÖNBSÉG Jele: S \ R Név Jegy Kiss Pista 2 Nagy Péter 3 Vál Péter 5 Nagy Ákos 3 Név Jegy Kiss Pista 2 \ = Nagy Lajos 3 Név Jegy Nagy Péter 3 Vál Péter 5 Nagy Ákos 3
VETÍTÉS (PROJEKCIÓ) Jele: π attr1,attr2,... S Név Jegy Kiss Pista 2 π név ( )= Nagy Péter 3 Vál Péter 5 Nagy Ákos 3 Név Jegy Jelenlét π név,jegy ( Kiss Pista 2 14 Nagy Péter 3 14 )= Vál Péter 5 13 Nagy Ákos 3 10 Név Kiss Pista Nagy Péter Vál Péter Nagy Ákos Név Jegy Kiss Pista 2 Nagy Péter 3 Vál Péter 5 Nagy Ákos 3
KIVÁLASZTÁS (SZELEKCIÓ) Jele: σ attr1rvaluerattr2rvaluer... S R =, <, >,,,,, Név Jegy Kiss Pista 2 σ jegy=3 ( )= Nagy Péter 3 Vál Péter 5 Kiss Pista 3 Név Jegy Nagy Péter 3 Kiss Pista 3 = Név Jegy Jelenlét Kiss Pista 1 14 σ jegy>1 jelenlét>10 ( Nagy Péter 3 14 )=? Vál Péter 5 13 Nagy Ákos 3 10
DESCARTES-SZORZAT Jele: A B Név Jegy Kiss Pista 2 Nagy Péter 3 Név Jelenlét Kiss Pista 10 Nagy Péter 14 = A.Név Jegy B.Név Jelenlét Kiss Pista 2 Kiss Pista 10 Kiss Pista 2 Nagy Péter 14 Nagy Péter 3 Kiss Pista 10 Nagy Péter 3 Nagy Péter 14
TERMÉSZETES ÖSSZEKAPCSOLÁS Jele: A B Név Jegy Kiss Pista 2 Nagy Péter 3 Név Jelenlét Kiss Pista 10 Nagy Péter 14 Nagy Lajos 5 = Név Jegy Jelenlét Kiss Pista 2 10 Nagy Péter 3 14 Kizárólag akkor alkalmazható, ha az összekapcsolás azonos mezőnevek segítségével történik
THÉTA ÖSSZEKAPCSOLÁS Jele: A attr1rattr2r... B R =, <, >,,,,, Név Jegy Kiss Pista 2 Nagy Péter 3 A. Név = B. Név Jelenlét > 10 Név Jelenlét Kiss Pista 10 Nagy Péter 14 Nagy Lajos 5 = Név Jegy Név Jelenlét Nagy Péter 3 Nagy Péter 14 Mivel a Descartes szorzat műveletéből indul ki, az összekapcsolás mezőneveinek egyenlőségét is feltételül kell szabni
PÉLDA 1 Adjuk meg relációs algebrai műveletekkel, azon hallgatók neveit, akik átmentek a tárgyból. Név Jegy Jelenlét Kiss Pista 3 8 Kiss István 2 14 Nagy Irén 5 10 Nagy Péter 1 14 S π név σ jeagy>1 jelenlét>10 S
PÉLDA 2 A Nev Tantargy Pontszam Jelenlet Kiss Pista Matek 50 8 Kiss Pista Rajz 60 14 Nagy Iván Statika 45 10 Nagy Péter Matek 15 14 B Nev Evfolyam Kiss Pista 1 Kiss István 2 Nagy Iván 1 Nagy Péter 1 C Tantárgy MinPont Matek 40 Rajz 60 Statika 50
PÉLDA 2 1) Adjuk meg, azon hallgatókat, akik Rajzra járnak! 2) Adjuk meg az elsős hallgatók neveit! 3) Adjuk meg azon tárgyakat, amelyek teljesítéséhez több mint 45 pont kell! 4) Adjuk meg azon hallgatókat, és évfolyamukat, akik Matekra járnak! 5) Adjuk meg, hogy mely hallgatóknak milyen tantárgyuk sikerült (jelenlét ellenőrzése nélkül)! 6) Adjuk meg, hogy az elsős hallgatóknak milyen tantárgyak sikerültek (jelenlét ellenőrzése nélkül)!
PÉLDA 2 1) 2) 3) 4) 5) 6) π nev π nev σ Tantargy= Rajz A σ Evfolyam=1 B π tantargy σ MinPont>45 C π nev,evfolyam σ A.Tantargy= Matek A π nev,tantárgy A B A. PontSzam > C. MinPont A. Tantargy = C. Tantargy π nev,tantargy σ Evfolyam=1 B A C A. PontSzam > C. MinPont A. Tantargy = C. Tantargy C Szintaktika!!!
SZINTAKTIKA A szelekciónál, théta összekapcsolásnál, amennyiben több attribútumra végzünk lekérdezést, azokat AND/OR jellel válasszuk el egymástól! A projekció által megjelenítendő oszlopneveket viszont elegendő vesszővel elválasztani! Amennyiben valamilyen szöveges értékre végzünk szűrést, vagy Théta összekapcsolást, a szöveges érték kerüljön idézőjelbe. Amennyiben a lekérdezésben több tábla is szerepel, a mezőnevek előtt jelenjen meg a tartalmazó tábla neve (tablanev.mezonev). Ha összekapcsolásnál különböző nevűek a kapcsolat alapjául szolgáló oszlopok nevei, akkor Théta összekapcsolást kell használni Théta összekapcsolás esetén a feltételek közt szerepelnie kell az összekapcsolás alapját jelentő két mező egyenlőségének. A dátumokat szövegként írjuk fel, ezért idézőjelek közé kerül, de ha szabványos formában adjuk meg, akkor az Adatbáziskezelő rendszerek numerikusan is tudják értelmezni.
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 a különálló sorokra vagyunk kíváncsiak Ekkor használható a delta operátor. δ S δ( Név Jegy Jelenlét Kiss Pista 1 14 Nagy Péter 3 14 Kiss Pista 1 14 Nagy Ákos 3 10 )= Név Jegy Jelenlét Kiss Pista 1 14 Nagy Péter 3 14 Nagy Ákos 3 10
ATTRIBÚTUM ÁTNEVEZÉS Az attribútumok nevei átnevezhetőek Erre a nyilat ( ) használhatjuk egy operátor, művelet belsejében Így például projekcióesetén: π réginév újnév S Név Jegy Jelenlét Hallgató π Név Hallgató ( Kiss Pista 1 14 Nagy Péter 3 14 Kiss Pista 1 14 )= Kiss Pista Nagy Péter Kiss Pista Nagy Ákos 3 10 Nagy Ákos
ATTRIBÚTUM ÁTNEVEZÉS Az átnevezés után ezzel az új attribútum névvel végezhetünk műveleteket. σ Hallgató= KissPista (π 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 Darab Ár 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 új attribútumot legtöbbször átnevezzük Termék Darab Ár π Termék,Darab Ár ÖsszÁr ( 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
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: γ attr1,attr2,... S Termék Darab γ Termék (π Termék ( Kenyér 1 Kifli 2 Tej 1 Kifli 3 ))
LÉPÉSRŐL LÉPÉSRE Termék Darab Termék π Termék ( Kenyér 1 Kifli 2 )= Tej 1 Kifli 3 Kenyér Kifli Tej Kifli γ Termék ( Termék Kenyér Kifli Tej Kifli )= Termék Kenyér Kifli Tej
CSOPORTOSÍTÁS + ÖSSZESÍTÉS Ahogy láttuk a csoportosítás ugyanolyan elemeket von össze az adott attribútumon. Azonban a többi attribútum is tartalmaz sorokat, ezeket összesíthetjük valamilyen módon. 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 létre olyan sort, amelyik tartalmazza: Szóban forgó csoport csoportosítási attribútumait. Az {attr1, attr2, } lista összesítési attribútumaira vonatkozó összesítéseket.
CSOPORTOSÍTÁS + ÖSSZESÍTÉS (PÉLDA - SUM) γ Termék,SUM Darab ( Termék Darab Kenyér 1 Kifli 3 Tej 2 Kifli 5 )= Termék SumDarab Kenyér 1 Kifli 8 Tej 2
CSOPORTOSÍTÁS + ÖSSZESÍTÉS (PÉLDA TÖBB ATTRIBÚTUMRA) Termék Darab Ár γ Termék,SUM Darab ÖsszDb,SUM ÖsszDb Ár ÖsszÁr ( Kenyér 1 100 Kifli 2 100 Kifli 3 150 Kenyér 2 150 Tej 2 100 )= Termék ÖsszDb ÖsszÁr Kenyér 3 400 Kifli 5 650 Tej 2 200
CSOPORTOSÍTÁS + ÖSSZESÍTÉS (PÉLDA - COUNT) Termék Darab γ Termék,COUNT Darab ( Kenyér 1 Kifli 3 Tej 2 Kifli 5 )= Termék CountDarab Kenyér 1 Kifli 2 Tej 1
CSOPORTOSÍTÁS + ÖSSZESÍTÉS (PÉLDA - FIRST) Termék Darab γ Termék,FIRST Darab ( Kenyér 1 Kifli 3 Tej 2 Kifli 5 )= Termék FirstDarab Kenyér 1 Kifli 3 Tej 2
CSOPORTOSÍTÁS + ÖSSZESÍTÉS (PÉLDA TÖBB ATTRIBÚTUMRA) Termék Darab Ár γ Termék,SUM Darab ÖsszDb,SUM ÖsszDb Ár ÖsszÁr ( Kenyér 1 100 Kifli 2 100 Kifli 3 150 Kenyér 2 150 Tej 2 100 )= Termék ÖsszDb ÖsszÁr Kenyér 3 400 Kifli 6 650 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: τ attr1,attr2,... S Név Jegy Jelenlét τ Név ( Kiss Pista 1 14 Nagy Péter 4 14 )= Kiss Aladár 2 14 Nagy Péter 3 10 Név Jegy Jelenlét Kiss Aladár 2 14 Kiss Pista 1 14 Nagy Péter 4 14 Nagy Péter 3 10
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 Jelenl ét τ Név,Jegy ( 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
ÖSSZEFOGLALÁS Attribútum típusok Relációs adatbázisok kérdései Redundancia, anomáliák Normalizálás, dekompozíció Relációs algebra és műveletei Kiterjesztett relációs algebra
Köszönöm a figyelmet! Kérdések?