Adatbázis rendszerek 2. előadás Relációs algebra Molnár Bence
Szerkesztette: Koppányi Zoltán
Bevezetés
Relációs algebra általában A relációs algebra néhány tulajdonsága: —
Matematikailag jól definiált —
Halmazelméletből építkezik
—
Bevezethető az Armstrong axiómákon keresztül
— Gyakorlati
—
jelentősége:
—
RDBMSek lekérdező nyelvének alapja
—
Adatbázis tervezés
Didaktikai jelentősége: sokkal könnyebb lesz megérteni az SQL nyelvet
Ismétlés Oszlop=Attribútum
Név
Lakcím
Holnap Péter
Telefonszá m
Végzettség
Munkahely
Budapest 999-9999
Gépészmérnök
Szerszámgyártó Zrt.
Tóth István
Cegléd
Építőmérnök
Út kivitelező Nyrt.
Nagy Ferenc
Budapest 999-9954
Közgazdász
Elszámolok Kft.
Kiss Pista
Budapest 999-5864
Érettségi
Út kivitelező Nyrt.
999-9928
Sor=Rekord
Cella=Mező vagy Komponens
Relációs séma
Relációs séma Adott a következő táblázat: Jegyek reláció Azonosító
Név
Jegy
1
Kiss Pista
3
2
Nagy Péter
4
3
Varga Ferenc
5
4
Kiss Pista
1
Reláció sémája: Jegyek(Azonosító, Név, Jegy) Miért nevezzük relációnak? Kétdimenziós táblázatos adathalmaz
Relációs séma - elnevezések A táblázat a reláció egy előfordulása! Jegyek reláció Azonosító Név 1 Kiss Pista 2 Nagy Péter 3 Varga Ferenc 4 Kiss Pista
Reláció sémája: Jegyek(Azonosító, Név, Jegy) Reláció neve
Attribútumok, együtt attribútumok halmaza
Jegy 3 4 5 1
Relációs séma - tulajdonságok —
A reláció és előfordulásának tulajdonságai —
Az attribútumok (oszlopok) sorrendje nem számít, tetszőlegesen felcserélhetőek (műveletek esetén számít az attribútumok sorrendje)
—
A rekordok sorrendje felcserélhetőek
—
Egy attribútumhoz, és egy adott sorhoz egy és csak egy komponens tartozhat
—
A mi esetünkben megengedjük, hogy egy adott sor ugyanazon attribútum értékekkel többször is előforduljon (halmaz vs. multihalmaz)
nem
számít,
tetszőlegesen
Néhány séma példa — Idom(Azonosító,
Elnevezés, Keresztmetszet, Inercia, Ár)
— Gömb(Azonosító, — Közút(Azonosító,
X, Y, Z, R) Elnevezés, Rendűség)
— Földrészlet(Azonosító,
Helyrajziszám, Tulajdonos, Terület, AK_érték)
— Adjunk
meg hozzájuk előfordulásokat (azaz készítsünk hozzá táblázatot)
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ám
Egész — Valós — Szöveg —
—
Logikai
—
Számláló
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 leírásába: Jegyek(Azonosító : Számláló, Név : Szöveg, Jegy: Egész szám) —
séma
Attribútum típus választás —
—
—
Tárhely igény —
Mint a papírlapon: a megfelelő hely szükséges
leghosszabb
értéknek
—
É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, Valós, Z : Valós, R : Valós)
— Közút(Azonosító,
Y
:
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!
Kulcs, szuperkulcs
Szuperkulcs — Szuperkulcs:
azon attribútumok halmaza, mely egyértelműen meghatároz egy rekordot
Név Szemig Kiss Pista 123
Kor 18
Kiss Pista 124
18
SzK2=SzK1 U {{kor}, {kor, név}}
SzK1={{szemig}, {szemig, név}, {szemig, kor}, {szemig, név, kor}} Név Szemig Kiss Pista 123 Kiss Pista 124
Kor 18 19
Kulcs — Kulcs:
a szuperkulcsok közül a minimális
Név
Szemig
Életkor
Kiss Pista
123
18
Kiss Pista
124
18
K2={{szemig}, {életkor}}
K1={{szemig}}
Név
Szemig
Életkor
Kiss Pista
123
18
Kiss Pista
124
19
Kulcs – még egy példa Név
Szemig Tantárgy
Jegy
Kiss Pista Kiss Pista Kiss Pista
123 123 124
5 5 5
Matek Biosz Matek
SzK={{szemig, tantárgy}, {név, szemig, tantárgy}, …} K={szemig, tantárgy} Összetett kulcs
Kulcsok a relációs sémában — Eddig
a szuperkulcs vizsgálatát egy vagy esetén vizsgáltuk.
illetve a kulcs több előfordulás
— De
ezt elő is írhatjuk, így biztosítjuk, hogy egy adott attribútumra a kulcs tulajdonság mindig igaz legyen!
— Ezt
a következő relációs sémában
módon
jelölhetjük
Jegyek(Azonosító, Név, Jegy)
a
További példák — Idom(Elnevezés:Szöveg,
Keresztmetszet : Valós, Ár : Egész)
Valós,
Inercia
:
— Gömb(X
: Valós, Y : Valós, Z : Valós, R : Valós)
— Közút(Elnevezés,
Rendűség)
— Földrészlet(Helyrajziszám,
Terület, AK_érték)
— Az
Tulajdonos,
utolsó két séma esetén határozza meg a szuperkulcs és kulcs halmazokat!
— Miért
nincs azonosító?
Műveletek
Műveletek két változós halmaz műveletekhez a következőeknek kell teljesülni mindkét (R, és S) relációra
—A
—
Az R és S relációknak ugyanazt attribútumhalmazt kell tárolnia
az
—
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
Nagy Ákos
3
U
Név
Jegy
Kiss Lajos
2
Nagy Lajos 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
S ∩R \
=
Nagy Lajos 3 Név
Jegy
Kiss Pista
2
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:
π név (
π név , jegy(
π attr1 , attr2 , ... (S ) Név
Jegy
Kiss Pista
2
Név
)=
Nagy Péter 3
Kiss Pista Nagy Péter
Vál Péter
5
Vál Péter
Nagy Ákos
3
Nagy Ákos
Név
Jegy Jelenlét
Név
Jegy
Kiss Pista
2
14
Kiss Pista
2
Nagy Péter 3
14
Nagy Péter
3
Vál Péter
5
13
Vál Péter
5
Nagy Ákos
3
10
Nagy Ákos
3
)=
Kiválasztás (Szelekció) — Jele:
σ attr1 R value R attr2 R value R ... (S )
R∈('=' ,' <' ,' >' ,'≠' ,'≤' ,'≥' ,'∧' ,'∨')
σ jegy=3
(
Név
Jegy
Kiss Pista
2
Név
) = Nagy Péter
Nagy Péter 3 Vál Péter
5
Kiss Pista
3
σ jegy>1∧ jelenlét >10 (
Kiss Pista
Név
Jegy Jelenlét
Kiss Pista
1
14
Nagy Péter 3
14
Vál Péter
5
13
Nagy Ákos
3
10
Jegy 3 3
) = Táblán
Descartes-szorzat — Jele:
A×B
Név
Jegy
Kiss Pista
2
Nagy Péter 3
Név
Jelenlét
Kiss Pista
10
A×B
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
Név
Jelenlét
Kiss Pista
2
Kiss Pista
10
Nagy Péter 3
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
B
attr1 R attr2 R ...
R∈('=' ,'<' ,' >' ,'≠' ,'≤' ,'≥' ,'∧' ,'∨') Név
Jegy
Kiss Pista
2
Név
Jelenlét
Kiss Pista
10
A . Név= B . Név∧ Jelenlét >10 Nagy Péter 14
Nagy Péter 3
=
Nagy Lajos 5 Név
Jegy
Nagy Péter 3
Jelenlét 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 S Név
Jegy
Jelenlét
Kiss Pista
3
8
Kiss István 2
14
Nagy Irén
5
10
Nagy Péter 1
14
— Adjuk
meg relációs algebrai műveletekkel, azon hallgatók neveit, akik átmentek a tárgyból.
π név (σ jegy >1∧ jelenlét >10 (S ))
Példa 2 A Nev
Tantargy
Kiss Pista
Matek
50
8
Kiss Pista
Rajz
60
14
Nagy Iván
Statika
45
10
15
14
Nagy Péter Matek
Pontszam
Jelenlet
B Nev
Evfolyam
Kiss Pista
1
C Tantárgy
MinPont
Kiss István 2
Matek
40
Nagy Iván
Rajz
60
Statika
50
1
Nagy Péter 1
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! 6) Adjuk meg, hogy az elsős hallgatóknak milyen tantárgyak sikerültek!
Példa 2 1) π nev (σ Tantargy=' Rajz ' ( A)) 2) π nev (σ Evfolyam=1 ( B)) 3) π tantargy (σ MinPont >45 (C )) 4) π nev , evfolyam (σ A . Tantargy=' Matek ' ( A) 5) π nev , tantárgy ( A 6)
B)
C ) A. PontSzam>C . MinPont∧A . Tantargy=C .Tantargy
π nev , tantargy (σ Evfolyam=1 ( B)
(A
A. PontSzam>C . MinPont∧ A.Tantargy=C .Tantargy
Szintaktika!!!
C ))
Szintaktika —
A szelekciónál, természetes ö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.
Köszönöm a figyelmet!