Baze podataka 2/K1 2024

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

Prvi kolokvijum 2024. godine je održan 31. marta i trajao je sat vremena. Bilo je dozvoljeno korišćenje alata Relax.

Postavka

U sistemu bolničkog lečenja prate se informacije o lekarima koji rade u bolnici i pregledima koji su ti lekari obavili. Svaki pacijent može imati najviše jedan karton u svakoj od bolnica. Svaki karton se povremeno overava kada se upisuje naziv poslodavca preko koga je pacijent osiguran. U slučajevima kada je to potrebno pacijenti mogu biti hospitalizovani, tj. primljeni na bolničko lečenje (datum otpuštanja se popunjava tek nakon što se lečenje završi, a do tada je NULL).
Odgovarajuća šema baze je:

Mesto(IDMes, Naziv)
Bolnica (IDBol, Naziv, Kapacitet, Iskoriscenost, IDMes)
Pacijent(IDPac, Ime, JMBG, GodineStarosti, IDMes)
Lekar(IDLek, Ime, JMBG, Specijalizacija)
Karton(IdKar, IDPac, IDBol)
Pregled(IdPre, Datum, ObjektivniNalaz, Dijagnoza, IDKar, IdLek)
Hospitalizacija(IDHos, DatumPri, DatumOtp, Dijagnoza, KlinickaSlika, IDPac, IDBol)
Overa(IDKar, RedBr, DatumOd, NazivPoslodavca)
Radi(IDLek, IDBol)
Iskoriscenost: N- Niska, S - Srednja, V - Visoka

1. zadatak

Napisati iskaz relacione algebre koji daje šifre pacijenata koji je lečio isti lekar, ali u različitim bolnicama.[1]

Rešenje

2. zadatak

Napisati iskaz relacione algebre koji daje šifre pacijenata koji su tačno dva puta bili hospitalozovani zbog iste dijagnoze, bez obzira u kojoj bolnici. Dozvoljeno je korišćenje operator za preimenovanje, ali ne i za grupisanje.

Rešenje

3. zadatak

Za dati SQL upit dati ekvivalentan iskaz relacione algebre.[2]

SELECT IDPac
FROM Pacijent P
WHERE P.GodineStarosti>40 AND NOT EXISTS(
	SELECT IDBol
    FROM Bolnica B
    WHERE B.IDBol NOT IN(
    	SELECT K.IDBol
        FROM Knjizica K
        WHERE K.IDPac = P.IDPac
    )
)

Rešenje

Objašnjenje upita: Najdublji upit dohvata sve bolnice u kojima pacijent ima otvoren karton. Prvi okružujići upit dohvata sve bolnice koje nisu tu, tj. sve bolnice u kojima pacijent nema karton. Samim tim, ceo upit dohvata sve pacijente starije od 40 godina koji imaju karton u svakoj bolnici.

Kao što je i poznato sa predavanja, "svi-sve" odmah signalizira da je u rešenju potrebno odraditi deljenje. Moguće rešenje se nalazi ispod.

Napomene

  1. Pri obilaksu profesor je napomenuo da se upit odnosi na istog pacijenta.
  2. Ovde je bilo moguće koristiti sve operatore.