Baze podataka 2/K1 Septembar-1 2025

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

Prvi kolokvijum u roku septembar-1 2025. godine je održan 13. septembra 2025. godine i trajao je sat vremena.

Postavka

Kompanija ugovara projekte izrade softvera po narudžbinama klijenta. U kompaniji su zaposleni programeri i menadžeri. U sistemu se vodi evidencija o svakom koraku rada (zahtevima, razvijenom kodu, dodeli posla). Za svaki projekat nekog klijenta evidentiraju se datum kreiranja, menadžer, kao i svi korisnički zahtevi. Pre nego što projekat počne on mora biti isplaniran (status I). Implementacija može početi tek nakon što se projekat implementira. Tokom implementacije, celokupan kod koji programeri razviju se takođe evidentira u sistemu i to tako što se za svaki kod evidentira koje korisničke zahteve implementira.

Šema baze:

Klijent (SifК, Naziv, Kontakt)
Radnik (SifR, Ime)
Menadzer (SifR, Iskustvo)
Programer (SifR, Specijalnost)
Projekat (SifP, Naziv, Status, Vrednost, DatumPocetka, BrojProgramera, MaksProgramera, SifK, SifR)
Zahtev (SifZ, Opis, SiP)
Posao (SifJ, DatumPocetka, DatumKraja, BrPlaniranihProgramera, SifP, SifZ)
Angazman (SifA, SifR, SifJ)
Kod (SifK, Kod)
Implementira (SifK, SifZ)

Status: K, I, Z - kreiran, isplaniran, završen.

1. zadatak

Napisati iskaz relacione algebre koji daje šifre menadžera koji su bili nadležni za neki završen projekat vrednosti veće od 10000, a koji nisu nadležni ni za jedan trenutni projekat vrednosti manje od 10000. [1]

Rešenje

2. zadatak

Napisati iskaz relacione algebre koji daje šifre parova poslova koji su na istom projektu i koji imaju isti datum kraja.

Rešenje

Rešenje pisano u formatu za RelaX alat.

3. zadatak

Za dati iskaz relacione algebre dati ekvivalentat SQL upit:

U ovom zadatku je bila ideja da se dohvate šifre radnika koji su radili na svim poslovima projekta "ETF", ali je greškom dato isto ime poljima za datum početka u tabeli Projekat i tabeli Posao, pa je Natural Join spojio po dve kolone, pa pošto nije bilo podataka koji mogu da se spoje po obe kolone, desni deo deljenja je prazna tabela, zbog čega se zapravo dobiju samo šifre svih radnika koji su radili na nekom od poslova (iz levog dela izraza).


Rešenje

SELECT SifR FROM Angazman WHERE SifJ IN (SELECT SifJ FROM Posao WHERE SifP IN (SELECT SifP FROM Projekat WHERE Naziv='ETF'))

Napomene

  1. Pri obilasku je rečeno da se termin trenutni odnosi na projekte koji nisu završeni.