BAZA SPJ
TABELA S - snabdevač:
| SRBR | SIME | STATUS | GRAD |
TABELA P - deo:
| PRBR | PIME | BOJA | TEZINA | GRAD |
TABELA J - projekat:
| JRBR | JIME | GRAD |
TABELA SPJ - pošiljka :
| SRBR | PRBR | JRBR | KOL |
Relaciona algebra - nastavak
Primer 1: Izdvojiti podatke o projektima koje snabdeva snabdevač S5.
J SEMIJOIN (SPJ WHERE SRBR='S5')
Primer 2: Izdvojiti podatke o delovima koje isporučuje snabdevač iz Atine.
P SEMIJOIN (SPJ SEMIJOIN (S WHERE GRAD='Atina'))
Primer 3: Izdvojiti podatke o projektima koje ne snabdeva snabdevač S5.
J SEMIMINUS (SPJ WHERE SRBR='S5')
Primer 4: Za svaku pošiljku izračunati ukupnu težinu delova koji se isporučuju. Pored ukupne težine pošiljke prikazati i podatke o pošiljci i delu.
EXTEND (SPJ JOIN P) ADD (KOL*TEZINA) AS UKUPNATEZINA
Primer 5: Izčunati koliko projekata se nalazi u kom gradu.
SUMMARIZE J PER J [GRAD] ADD COUNT AS BRGRAD
Primer 6: Za svaki par snabdevač-deo prikazati broj pošiljki u kojima taj snabdevač isporučuje taj deo i u kojoj količini.
SUMMARIZE SPJ PER SPJ [SRBR, PRBR] ADD (COUNT AS BR, SUM(KOL) AS KOLICINA)
Relacioni račun
Primer 7: Prikazati redne brojeve (šifre) i boju delova.
RANGE OF PX IS P
PX.PRBR, PX.BOJA
Primer 8: Prikazati šifru i ime projekata koji su smešteni u Atini.
RANGE OF JX IS J
JX.JRBR, JX.JIME
WHERE
JX.GRAD='Atina'
Primer 9: Prikazati imena snabdevača i projekata koji se nalaze u istom gradu.
RANGE OF SX IS S
RANGE OF JX IS J
SX.SIME, JX.JIME
WHERE SX.GRAD=JX.GRAD
Primer 10: Pronaći parove projekata koji se nalaze u istom gradu (njihova imena).
RANGE OF JX IS J
RANGE OF JY IS J
JX.JIME, JY.JIME
WHERE JX.GRAD=JY.GRAD AND JX.JRBR<JY.JRBR
Primer 11: Izdvojiti imena snabdevača koji isporučuju projektu J5.
RANGE OF SX IS S
RANGE OF SPJX IS SPJ
SX.SIME
WHERE EXISTS SPJX( SPJX.SRBR=SX.SRBR AND SPJX.JRBR='J5')
Primer 12: Naći imena projekata koji dobijaju sve delove.
RANGE OF JX IS J
RANGE OF PX IS P
RANGE OF SPJX IS SPJ
JX.JIME
WHERE FORALL PX( EXISTS SPJX ( SPJX.JRBR=JX.JRBR AND SPJX.PRBR=PX.PRBR))
ili
RANGE OF JX IS J
RANGE OF PX IS P
RANGE OF SPJX IS SPJ
JX.JIME
WHERE NOT EXISTS PX ( NOT EXISTS SPJX ( SPJX.JRBR=JX.JRBR AND SPJX.PRBR=PX.PRBR))
Primer 13: Pronaći imena projekata koji dobijaju neki plavi deo.
RANGE OF JX IS J
RANGE OF SPJX IS SPJ
RANGE OF PX IS P
JX.JIME
WHERE EXISTS PX ( PX.BOJA='PLAVA' AND EXISTS SPJX ( SPJX.JRBR=JX.JRBR AND SPJX.PRBR=PX.PRBR))
Primer 14: Izdvojiti imena projekata kojima se isporučuju barem oni različiti delovi kao i projektu J5.
RANGE OF JX IS J
RANGE OF PX IS P
RANGE OF SPJX IS SPJ
JX.JIME
WHERE FORALL PX( IF EXISTS SPJX(
SPJX.JRBR='J5' AND SPJX.PRBR=PX.PRBR)
THEN EXISTS SPJX (
SPJX.PRBR=PX.PRBR AND SPJX.JRBR=JX.JRBR))
ili
RANGE OF JX IS J
RANGE OF SPJX IS SPJ
RANGE OF SPJY IS SPJ
JX.JIME
WHERE FORALL SPJX(
SPJX.JRBR<>'J5' OR EXISTS SPJY(
SPJX.PRBR=SPJY.PRBR AND SPJY.JRBR=JX.JRBR))
Relaciona algebra i relacioni račun
Primer 15: Izdvojiti šifre snabdevača koji ne isporučuju nijedan šraf projektima u Parizu.
Relaciona algebra:
S[SRBR]
MINUS
((P WHERE PIME='SRAF')[PRBR] JOIN SPJ JOIN (J WHERE GRAD='Pariz')[JRBR]) [SRBR]
Relacioni račun:
RANGE OF SX IS S
RANGE OF JX IS J
RANGE OF PX IS P
RANGE OF SPJX IS SPJ
SX.SRBR
WHERE NOT EXISTS PX( PX.PIME='SRAF' AND EXISTS JX(
JX.GRAD='Pariz' AND EXISTS SPJX(
SPJX.JRBR=JX.JRBR AND SPJX.PRBR=PX.PRBR AND SX.SRBR=SPJX.SRBR)))
Za vežbu - rešiti na relacionoj algebri i relacionom računu:
1. Izdvojiti šifru i ime dela sa najmanjom težinom.
2. Izdvojiti šifre snabdevača čiji je status manji od statusa snabdevača S1.
3. Izdvojiti šifre projekata koji dobijaju sve delove koje isporučuje snabdevač S1 ( mogu da ih dobiju i od nekog drugog snabdevača).
4. Izdvojiti imena projekata koji dobijaju samo delove crvene boje.
5. Izdvojiti imena projekata koji dobijaju sve delove čija je težina manja od 15 i da pri tom ne dobijaju nijedan deo plave boje.
6. Izdvojiti šifre projekata i snabdevača, takve da snabdevač isporučuje projektu deo P5 i da projekat i snabdevač nisu u istom gradu.
7. Izdvojiti šifre delova koje isporucuju snabdevaci iz Londona projektima u Londonu.