PostgreSQL andmebaasis on loodud tabelid järgmiste lausetega.

CREATE TABLE Isik (
isikukood d_eesti_isikukood,
kasutajanimi d_kasutajanimi,
e_mail d_e_mail,
eesnimi d_isiku_nime_osa,
perenimi d_isiku_nime_osa,
parool d_parool,
elukoht d_elukoht,
CONSTRAINT Isik_isikukood_on_unikaalne UNIQUE(isikukood),
CONSTRAINT Isik_e_mail_on_unikaalne UNIQUE(e_mail),
CONSTRAINT Isik_kasutajanimi_on_unikaalne UNIQUE(kasutajanimi),
CONSTRAINT Kas_isik_eesnimi_voi_perenimi_voi_molemad_maaratud CHECK((eesnimi IS NOT NULL) OR (perenimi IS NOT NULL))
) WITH (fillfactor=90);

CREATE TABLE Yliopilane (
matrikli_nr d_matrikli_nr,
yliopilase_seisundi_liik_R_id SMALLINT NOT NULL DEFAULT 1,
pilt BYTEA,
CONSTRAINT Matrikli_nr_on_primaarvoti PRIMARY KEY (matrikli_nr),
CONSTRAINT Yliopilane_isikukood_on_unikaalne UNIQUE(isikukood),
CONSTRAINT Yliopilane_e_mail_on_unikaalne UNIQUE(e_mail),
CONSTRAINT Yliopilane_kasutajanimi_on_unikaalne UNIQUE(kasutajanimi),
CONSTRAINT Yliopilane_on_mingis_seisundis FOREIGN KEY (yliopilase_seisundi_liik_R_id) REFERENCES Yliopilase_seisundi_liik_R(yliopilase_seisundi_liik_R_id) ON UPDATE CASCADE
) INHERITS (Isik) WITH (fillfactor=90);

CREATE TABLE Tootaja (
tootaja_id SERIAL, 
amet_R_id SMALLINT NOT NULL,
tootaja_seisundi_liik_R_id SMALLINT NOT NULL DEFAULT 1,
CONSTRAINT Tootaja_id_on_primaarvoti PRIMARY KEY (tootaja_id),
CONSTRAINT Tootaja_isikukood_on_unikaalne UNIQUE(isikukood),
CONSTRAINT Tootaja_e_mail_on_unikaalne UNIQUE(e_mail),
CONSTRAINT Tootaja_kasutajanimi_on_unikaalne UNIQUE(kasutajanimi),
CONSTRAINT Tootajal_on_amet FOREIGN KEY (amet_R_id) REFERENCES Amet_R(amet_R_id) ON UPDATE CASCADE,
CONSTRAINT Tootaja_on_mingis_seisundis FOREIGN KEY (tootaja_seisundi_liik_R_id) REFERENCES Tootaja_seisundi_liik_R(tootaja_seisundi_liik_R_id) ON UPDATE CASCADE
) INHERITS (Isik) WITH (fillfactor=90);

CREATE TABLE Hoone (
hoone_kood d_hoone_kood,
nimi d_nimetus,
CONSTRAINT Hoone_kood_on_primaarvoti PRIMARY KEY (hoone_kood),
CONSTRAINT Hoone_nimi_on_unikaalne UNIQUE (nimi)
);

CREATE TABLE Ruum (
ruum_id SERIAL,
hoone_kood d_hoone_kood,
ruum_kood d_ruum_kood,
korrus SMALLINT NOT NULL,
CONSTRAINT Ruum_id_on_primaarvoti PRIMARY KEY (ruum_id),
CONSTRAINT Hoone_koodi_ruumi_koodi_korruse_kombinatsioon_on_unikaalne UNIQUE (hoone_kood, ruum_kood),
CONSTRAINT Ruum_asub_hoones FOREIGN KEY (hoone_kood) REFERENCES Hoone (hoone_kood) ON UPDATE CASCADE,
CONSTRAINT Korrus_peab_olema_vahemikus_miinus_5_ja_10 CHECK (korrus BETWEEN -5 AND 10)
);

CREATE TABLE Vastuvott (
vastuvott_id SERIAL,
ruum_id INTEGER,
vastuvotja_id INTEGER NOT NULL,
toimumise_kuupaev d_kuupaev_kohustuslik,
kommentaar d_kirjeldus,
CONSTRAINT Vastuvott_id_on_primaarvoti PRIMARY KEY (vastuvott_id),
CONSTRAINT Vastuvott_toimub_ruumis FOREIGN KEY (ruum_id) REFERENCES Ruum (ruum_id),
CONSTRAINT Tootaja_votab_vastu FOREIGN KEY (vastuvotja_id) REFERENCES Tootaja (tootaja_id) ,
CONSTRAINT Kas_vastuvott_ruum_voi_kommentaar_voi_molemad_maaratud CHECK (ruum_id IS NOT NULL OR kommentaar IS NOT NULL)
) WITH (fillfactor=90);

CREATE TABLE Vastuvotuaeg (
vastuvott_id INTEGER NOT NULL,
alguse_kellaaeg TIME NOT NULL,
CONSTRAINT Vastuvott_id_alguse_kellaaeg_kombinatsioon_on_primaarvoti PRIMARY KEY (vastuvott_id, alguse_kellaaeg),
CONSTRAINT Vastuvotuaeg_on_seotud_vastuvotuga FOREIGN KEY (vastuvott_id) REFERENCES Vastuvott (vastuvott_id) ON DELETE CASCADE
);

CREATE TABLE Vastuvotule_tulek (
vastuvott_id INTEGER NOT NULL,
alguse_kellaaeg TIME NOT NULL,
matrikli_nr d_matrikli_nr,
kommentaar d_kirjeldus,
CONSTRAINT Vastuvott_id_algus_kellaaeg_kombinatsioon_on_tuleku_primaarvoti PRIMARY KEY (vastuvott_id, alguse_kellaaeg),
CONSTRAINT Vastuvotule_tulek_on_seotud_vastuvotuga FOREIGN KEY (vastuvott_id, alguse_kellaaeg) REFERENCES Vastuvotuaeg (vastuvott_id, alguse_kellaaeg) ON DELETE CASCADE,
CONSTRAINT Vastuvotule_tulek_on_seotud_yliopilasega FOREIGN KEY (matrikli_nr) REFERENCES Yliopilane (matrikli_nr) ON UPDATE CASCADE
) WITH (fillfactor=90);

Palun loo nende tabelite põhjal vaade, mis realiseerib järgnevas kasutusjuhus oleva operatsiooni 7.1.
Kuna üliõpilasega seotud vastuvõtule tulekud leitakse tema kasutajanime järgi, siis vaates peab olema üliõpilase kasutajanimi.
Palun kasuta CREATE OR REPLACE lauset. 
Vaate nimi peab olema aktiivsed_vastuvotule_tulekud
Vaatel peab olema security_barrier omadus.
Palun loo ka vaate kommenteerimise lause. Kommentaaris tuleb muuhulgas öelda, et vaade on tehisintellekti genereeritud.
Palun loo ka lause, millega antakse vaate lugemise õigus kasutajale yliopilane_vastuvotud
Palun loo ka vaate kustutamise lause.

Kasutusjuht: Otsi enda aktiivseid vastuvõtule tulekuid
Primaarne tegutseja: Üliõpilane
Osapooled ja nende huvid:
Üliõpilane: Soovib saada konsultatsiooni mingis õppetööga seotud küsimuses.
Õppejõud: Soovib anda konsultatsioone õppetööga seotud küsimustes, et parandada õppe- ja teadustöö kvaliteeti.
Käivitav sündmus: Üliõpilane soovib vaadata, lisada või tühistada enda aktiivset vastuvõtule tulekut.
Eeltingimused: Üliõpilane on autenditud ja autoriseeritud.
Järeltingimused: Üliõpilasega seotud aktiivsed vastuvõtule tulekud on leitud.
Stsenaarium (tüüpiline sündmuste järjestus):
1. Üliõpilane avaldab soovi vaadata, lisada või tühistada enda aktiivset vastuvõtule tulekut.
2. Süsteem kuvab nimekirja otsingut tegeva üliõpilasega seotud aktiivsetest vastuvõtule tulekutest. Need tulekud on seotud vastuvõtuaegadega, mille algus on tulevikus või mis algavad vaatamise hetkel. Süsteem kuvab iga vastuvõtule tuleku kohta vastuvõtu kuupäeva, vastuvõtuaja kellaaja, õppejõu ees- ja perenime, õppejõu e-posti aadressi, hoone ja ruumi, kus vastuvõtt toimub, üliõpilase lisatud kommentaari ning vastuvõtuga seotud kommentaari. Vastuvõtule tulekud on sorteeritud kuupäeva alusel kahanevalt ning selle sees kellaaja alusel kahanevalt (OP7.1).
3. Üliõpilane võib leitud vastuvõtule tulekute andmeid vastuvõtu kuupäeva kellaja, õppejõu ees- ja perenime ning e-posti aadressi, hoone, ruumi ja kommentaari alusel sorteerida või filtreerida.
4. Süsteem kuvab vastuvõtule tulekud soovitud järjekorras või piirab filtri alusel vastuvõtule tulekute hulka (OP7.1).
Laiendused  (või alternatiivne sündmuste käik):
2a – Kui üliõpilasel ei ole ühtegi seotud aktiivset vastuvõtule tulekut, siis ei kuva süsteem vastuvõtule tulekute andmeid.