Базе података 2/К1 Септембар-1 2025
Први колоквијум у року септембар-1 2025. године је одржан 13. септембра 2025. године и трајао је сат времена.
Поставка
Компанија уговара пројекте израде софтвера по наруџбинама клијента. У компанији су запослени програмери и менаџери.
У систему се води евиденција о сваком кораку рада (захтевима, развијеном коду, додели посла). За сваки пројекат неког клијента евидентирају се датум креирања, менаџер, као и сви кориснички захтеви. Пре него што пројекат почне он мора бити испланиран (статус I). Имплементација може почети тек након што се пројекат имплементира. Током имплементације, целокупан код који програмери развију се такође евидентира у систему и то тако што се за сваки код евидентира које корисничке захтеве имплементира.
Шема базе:
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)
Статус: K, I, Z - креиран, испланиран, завршен.
1. задатак
Написати исказ релационе алгебре који даје шифре менаџера који су били надлежни за неки завршен пројекат вредности веће од 10000, а који нису надлежни ни за један тренутни пројекат вредности мање од 10000. [1]
Решење
2. задатак
Написати исказ релационе алгебре који даје шифре парова послова који су на истом пројекту и који имају исти датум краја.
Решење
Решење писано у формату за RelaX алат.
3. задатак
За дати исказ релационе алгебре дати еквивалентат SQL упит:
У овом задатку је била идеја да се дохвате шифре радника који су радили на свим пословима пројекта "ЕТФ", али је грешком дато исто име пољима за датум почетка у табели Пројекат и табели Посао, па је Natural Join спојио по две колоне, па пошто није било података који могу да се споје по обе колоне, десни део дељења је празна табела, због чега се заправо добију само шифре свих радника који су радили на неком од послова (из левог дела израза).
Решење
SELECT R.SifR
FROM Radnik R
WHERE NOT EXISTS(
SELECT P.SifJ
FROM Posao P NATURAL JOIN Projekat Pr
WHERE Pr.Naziv = "ЕТФ" AND R.SifR NOT IN(
SELECT A.SifR
FROM Angazman A
WHERE A.SifJ = P.SifJ
)
)
Напомене
- ↑ При обиласку је речено да се термин тренутни односи на пројекте који нису завршени.