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.