Osztás (hányados)
Az osztás, más néven hányados operátor a lekérdezésekben a „minden” kifejezésére szolgál.
Jelölés: R÷S
Mint látható, paraméterként két alaprelációt kell megadni.
Az osztás művelet eredménye pedig egy olyan T reláció, amelyben azok az attribútumok szerepelnek,
amelyek részei R-nek, de nincsenek benne S-ben, és minden sornak van megfelelő bejegyzése S-ben.
Tehát az osztás egy speciális lekérdezésre adja meg a választ: keressük az R reláció azon sorait,
amelyek mellett az S reláció mindegyik sora előfordul.
Tulajdonsága, hogy a T eredményreláció és az S alapreláció Descartes – szorzatával kapott ts rekordok vannak
benne az R relációban (T×S⊆R).
Az osztás műveletnek van egy fontos előfeltétele, mégpedig az, hogy csak olyan relációkra alkalmazható,
amelyekre igaz az, hogy a második reláció (S) mindegyik attribútuma szerepel az első (R) relációban.
1.Példa:
Keressük meg, hogy melyik az a gyümölcs, amelyet Pécsett és Sárváron egyaránt termesztenek.
R:
GYÜMÖLCS
| VÁROS
|
alma
| Pécs
|
alma
| Sárvár
|
alma
| Győr
|
körte
| Pécs
|
szilva
| Sárvár
|
2.Példa:
R:
A kód
| B kód
|
a1
| b1
|
a1
| b2
|
a1
| b3
|
a1
| b4
|
a2
| b1
|
a2
| b2
|
a3
| b2
|
a4
| b2
|
a4
| b4
|
Megjegyzés:
Az osztás művelet kifejezhető más relációs algebrai alapműveletekkel.
Először egy egyszerűbb esetet tárgyalunk, amely akkor alkalmazható,
amikor az osztó attribútumai sorrendben az osztandó utolsó attribútumai.
Tehát egy osztási művelet T-vel jelölt eredményrelációja szorzás, különbség és vetítés használatával:
T = T1 – T2 , ahol T1 = πL(R) és T2 = πL( (T1×S)–R ).
Az előbbi egyenletekben a T1 és T2 részeredmény-relációk,
míg az L egy olyan attribútumlista, amelynek elemei az R reláció azon attribútumai,
amelyek nincsenek benne az S relációban (L = R séma – S séma).
Az 1.példa részletezése az előbbiek szerint:
Az L='gyümölcs' attribútumlista egyetlen elemből fog állni, mégpedig a „GYÜMÖLCS” attribútumból,
mivel ez nem szerepel az S relációban.
1. T1=πGYÜMÖLCS(R):
GYÜMÖLCS
|
alma
|
körte
|
szilva
|
2. T1×S:
GYÜMÖLCS
| VÁROS
|
alma
| Pécs
|
körte
| Pécs
|
szilva
| Pécs
|
alma
| Sárvár
|
körte
| Sárvár
|
szilva
| Sárvár
|
3. (T1×S)-R:
GYÜMÖLCS
| VÁROS
|
szilva
| Pécs
|
körte
| Sárvár
|
4.T2= πL((T1×S)-R):
GYÜMÖLCS
|
szilva
|
körte
|
3.Példa:
Általános eset:
Ha az osztó attribútumai sorrendben nem az osztandó utolsó attribútumai.
Ekkor meg kell változtatni az osztandó reláció sémáját. Ez a következő vetítéssel tehető meg: πL,S(R) .
Keressük azt a várost, amelyikben mindegyik (mind a három) gyümölcsöt termesztik.
R:
GYÜMÖLCS
| VÁROS
|
alma
| Pécs
|
körte
| Pécs
|
alma
| Sárvár
|
körte
| Sárvár
|
alma
| Győr
|
szilva
| Győr
|
szilva
| Pécs
|
S:
GYÜMÖLCS
|
alma
|
körte
|
szilva
|
1. πVÁROS(R):
VÁROS
|
Pécs
|
Sárvár
|
Győr
|
2. T1×S:
VÁROS
| GYÜMÖLCS
|
Pécs
| alma
|
Pécs
| körte
|
Pécs
| szilva
|
Sárvár
| alma
|
Sárvár
| körte
|
Sárvár
| szilva
|
Győr
| alma
|
Győr
| körte
|
Győr
| szilva
|
A következő lépésben kellene a T1×S relációból az R relációt kivonni. Ez a rossz sorrend
miatt helytelen eredményt adna. Megoldás: egy vetítés művelettel rendezni kell az R reláció
attribútumait, hogy azonos legyen a sémája a kisebbítendő T1×S reláció sémájával. Ez a πL,
S(R) művelettel tehető meg, ami a példában: πVÁROS,GYÜMÖLCS(R). Így az azonos sémájú
attribútumok különbsége már jó eredményt fog adni. A további lépések ugyanazok, mint az
1. példában.
3.πVÁROS,GYÜMÖLCS(R):
VÁROS
| GYÜMÖLCS
|
Pécs
| alma
|
Pécs
| körte
|
Sárvár
| alma
|
Sárvár
| körte
|
Győr
| alma
|
Győr
| szilva
|
Pécs
| szilva
|
4. (T1×S)-R:
VÁROS
| GYÜMÖLCS
|
Sárvár
| szilva
|
Győr
| körte
|
5.πVÁROS((T1×S)-R):
VÁROS
|
Sárvár
|
Győr
|
4.Példa:
Több attribútum esetén:
R:
A
| B
| C
| D
| E
|
a
| a
| x
| 1
| x
|
a
| a
| z
| 1
| x
|
a
| b
| z
| 1
| x
|
a
| a
| z
| 1
| y
|
a
| b
| z
| 3
| y
|
a
| a
| z
| 1
| z
|
a
| b
| z
| 1
| z
|
a
| b
| y
| 1
| z
|
1. πA,C,E (R):
A
| C
| E
|
a
| x
| x
|
a
| z
| x
|
a
| z
| y
|
a
| z
| z
|
a
| y
| z
|
2.πA,C,E(R) x S:
A
| C
| E
| B
| D
|
a
| x
| x
| a
| 1
|
a
| z
| x
| a
| 1
|
a
| z
| y
| a
| 1
|
a
| z
| z
| a
| 1
|
a
| y
| z
| a
| 1
|
a
| x
| x
| b
| 1
|
a
| z
| x
| b
| 1
|
a
| z
| y
| b
| 1
|
a
| z
| z
| b
| 1
|
a
| y
| z
| b
| 1
|
3.πA,C,E,B,D(R):
A
| C
| E
| B
| D
|
a
| x
| x
| a
| 1
|
a
| z
| x
| a
| 1
|
a
| z
| x
| b
| 1
|
a
| z
| y
| a
| 1
|
a
| z
| y
| b
| 3
|
a
| z
| z
| a
| 1
|
a
| y
| z
| b
| 1
|
4. πA,C,E(R)xS-πA,C,E,B,D(R):
A
| C
| E
| B
| D
|
a
| y
| z
| a
| 1
|
a
| x
| x
| b
| 1
|
a
| z
| y
| b
| 1
|
5. πA,C,E( (πA,C,E(R)xS) -πA,C,E,B,D(R)):
A
| C
| E
|
a
| y
| z
|
a
| x
| x
|
a
| z
| y
|
6.πA,C,E(R)-
πA,C,E((πA,C,E(R)xS)-πA,C,E,B,D(R)):
A
| C
| E
|
a
| z
| x
|
a
| z
| z
|