Témakör: Lekérdezések kifejezése alap relációs algebrában
>> 1.RÉSZ - Ullman-Widom Tankönyv példa adatbázisaira rel.alg.feladatok
>> 2.RÉSZ - 1.gyak.folyt. egyszerű táblákra nehezebb rel.alg.lekérdezések
1.RÉSZ: Ullman-Widom Tankönyv 2.4. fejezete: UW_24_RelAlg.pdf
H.F.: Tankönyv Filmek példáján nézze át a Tankönyv kidolgozott példáit!
- Összetett kulcs használata /A Tankönyv Filmek példája:

- Egyed/kapcsolatok átírása, majd Filmek és Gyártó táblák összevonása
után a Tankönyvben szereplő példákban az átnevezték az oszlopokat:
Filmek (cím, év, hossz, műfaj, stúdiónév)
Színészek (név, cím, nem, születésidátum)
Szerepelbenne (filmcím, filmév, színésznév)
Stúdiók (név, cím)
Tankönyv 2.4.1. PC-Termékek példája - relációs algebrai lekérdezések
- Alapok: Relációs algebrához relax környezet táblákkal: dbis uibk github io/relax
- A relációs algebrai műveletek eredménye halmaz, vagyis ez az implementáció
minden művelet elvégzése után automatikusan megszünteti az ismétlődéseket.
A relációs algebrai fület használjuk, ez a szintaxis érzékeny a kis-nagybetűre,
algebrában a szűrőfeltételben nem használható alkérdés (az csak SQL-ben).
- Volt az 1.gyak: Szeret(nev, gyumolcs) táblára vonatkozó lekérdezések (folyt.lent)
Unér műveletek: pi-vetítés, sigma-kiválasztás, rho-átnevezés (táblák v. oszlopok)
Halmazműveletek: unió (union), halmazműv.különbség (-), metszet (intersect)
Tábla átnevezése, önmagával vett direkt szorzata (sorpárok összevetésére)
- A mai 2.gyak: Tankönyv 2.4.szakasz 2.4.1.feladat: Termékek-feladatok.pdf
- Itt most olyan megoldásokat keressünk, amit előbb szavakkal írjuk le hogyan
keresnéd ki a táblázatokból a lekérdezés eredményét, majd azt formalizáljuk
alap relációs algebrai lekérdezésként adunk meg (kapcsolata SQL SELECT-tel).
- Ha a relációs algebrában segédváltozókat is használunk, ahhoz az SQL-ben
munkatáblákat, vagyis a select lekérdezés előtti with záradékot vagy
inline nézeteket, vagyis FROM listán (alkérdés) sorváltozó-t rendelünk.
- Táblák létrehozása Relax-ban: Relax_PC_Termek.txt
- Alosztályok használata az E/K diagramban, öröklési osztályhierarchia:

-- Osztályhierarchia átalakítása relációkká, három stratégia hogyan alakítjuk át:
1.) E/K típusú átalakítás (4 tábla lesz, ezt használjuk, csak a kulcs öröklődik)
2.) Objektumorientált megközelítésben való átalakítás (minden attr.öröklődik)
3.) Nullértékek használata relációk egyesítéséhez (egy táblában minden attr.)
-- Relációs sémák E/K típusú átalakítással:
Termek(gyarto, modell, tipus)
PC(modell, sebesseg, memoria, merevlemez, ar)
Laptop(modell, sebesseg, memoria, merevlemez, kepernyo, ar)
Nyomtato(modell, szines, tipus, ar)
FELADATOK: Lekérdezések kifejezése alap relációs algebrában (fv-ek nélkül)
1. Melyek azok a PC modellek, amelyek sebessége legalább 3.00?
2. Mely gyártók készítenek legalább száz gigabájt méretű merevlemezzel
rendelkező laptopot?
3. Adjuk meg a B gyártó által gyártott összes termék modellszámát és árát,
típustól függetlenül.
4. Adjuk meg valamennyi színes lézernyomtató modellszámát.
5. Melyek azok a gyártók, akik laptopot árulnak, PC-t viszont nem?
6. Melyek azok a merevlemezméretek, amelyek legalább két PC-ben megtalálhatók?
7. Adjuk meg azokat a PC modell párokat, amelyek ugyanolyan gyorsak és
a memóriájuk is ugyanakkora. Egy pár csak egyszer jelenjen meg, azaz
ha már szerepel az (i, j), akkor a (j, i) ne jelenjen meg.
8. Melyik gyártó gyártja a leggyorsabb számítógépet (PC-t vagy laptopot)?
9. Melyik gyártó gyárt legalább három, különböző sebességű PC-t?
10. Melyek azok a gyártók, akik pontosan három típusú PC-t forgalmaznak?
--- --- --- ---
-- További gyakorló feladatok a Tankönyv 2.4.szakasz 2.4.3.lekérdezési feladai:
Tk. 2.4.3. Csatahajók-feladatok.pdf H.F. otthoni gyakorlás Relax_Csatahajok.txt
2.RÉSZ: A korábbi relációs algebrai feladatokat is folytatjuk új kérdésekkel:
-- Szeret (nev, gyumolcs) tábla létrehozása relax-ban: Relax_Szeret.txt
Szeret (nev, gyumolcs) tábla sok-sok kapcsolatot ír le, azaz egy vevő
több gyümölcsöt is szerethet és egy gyümölcsöt több vevő is szerethet.

Rövid emlékeztető, SQL lekérdezések átírása relációs algebrába
- Egyszerű SFW lekérdezések <=> vetítés kiválasztás szorzás
SELECT lista -- 3. <=> 3. pi lista
FROM R, S, ... -- 1. <=> ______ __________ 1. (R x S x ...)
[WHERE feltétel] -- 2. <=> ______ 2. sigma feltétel
- SQL lekérdezésekben a halmazműveletek használata:
Fontos! Az SQL-ben a halmazműveleteket nem táblákra, hanem
SFW lekérdezésekre alkalmazzuk (azonos dimenzió, kompatibilis típus)
- Alapértelmezésben halmazként értelmezve: duplikációk nélkül
"ALL" kiegészítőszóval multihalmazként értelmezve (multiplicitás)
SFW
{UNION [ALL] | MINUS | INTERSECT }
SFW
-- Megjegyzés: Relációs algebrában használhatunk segédváltozókat, aminek
az átírása SQL-be többféleképpen történhet vagy WITH munkatabla as (SFW)
záradékban adjuk meg közvetlenük a SELECT záradék előtt, ekkor a FROM listán
nem csupán valódi táblák, hanem ezek a munkatáblák is szerepelhetnek vagy
a FROM listán bezárójelezett alkérdést, ú.n. inline nézetet is használhatunk
FROM (SFW) temp_táblanév, ahol (SFW) = (SELECT ... FROM ... WHERE ...)
FELADATOK: Lekérdezések kifejezése alap relációs algebrában (fv-ek nélkül)
- volt 1.gyak.: Tábla önmagával vett direkt szorzata, halmazműveletek
1. Kik szeretik az almát?
2. Kik nem szeretik az almát? (de valami mást igen)
3. Kik szeretik vagy az almát vagy a körtét?
4. Kik szeretik az almát is és a körtét is?
5. Kik azok, akik szeretik az almát, de nem szeretik a körtét?
6. Kik szeretik vagy az almát vagy a körtét, de csak az egyiket?
7. Kik szeretnek legalább kétféle gyümölcsöt? (direkt szorzattal)
8. Kik szeretnek legalább háromféle gyümölcsöt?
9. Kik szeretnek legfeljebb kétféle gyümölcsöt?
10. Kik szeretnek pontosan kétféle gyümölcsöt?
- folyt. 2.gyak: Hányados (minden kifejezése) relációs algebrában
11. Kik szeretnek minden gyümölcsöt?
(Kik szeretik az összes olyan gyümölcsöt, amit valaki szeret?)
12. Kik azok, akik legalább azokat a gyümölcsöket szeretik, mint Micimackó?
13. Kik azok, akik legfeljebb azokat a gyümölcsöket szeretik, mint Micimackó?
14. Kik azok, akik pontosan azokat a gyümölcsöket szeretik, mint Micimackó?