owned this note
owned this note
Published
Linked with GitHub
---
tags: vaje, opb, nacrtovanje, er
hackmd: https://hackmd.io/nF9x0FvmRjy_nt3b5QFBSg
---
# Osnove podatkovnih baz - vaje 19.3.2020
---
## ER diagrami
## Naloga 1
Nariši ER diagram za podatkovno bazo `traktorji`! Popravi diagram tako, da je lahko v tabeli `deli` le en vnos istega tipa za istega lastnika in znamko!
----
[![](https://raw.githubusercontent.com/jaanos/OPB/gh-pages/zapiski/2020/2020-03-19/ER-traktorji.png)](https://raw.githubusercontent.com/jaanos/OPB/gh-pages/zapiski/2020/2020-03-19/ER-traktorji.dia)
---
## Naloga 2
Nariši ER diagram za sledečo univerzitetno podatkovno bazo:
- [x] Vsak profesor ima EMŠO, ime, starost, naziv in raziskovalno področje.
- [x] Vsak projekt ima svojo številko, pokrovitelja, začetni in končni datum ter sredstva.
- [x] Vsak podiplomski študent ima EMŠO, ime, starost in univerzitetni program.
- [x] Vsak oddelek ima svojo številko, ime in pisarno.
- [x] Vsak projekt upravlja natanko en profesor
- [x] Na vsakem projektu dela vsaj en profesor.
- [x] Profesorji lahko upravljajo in delajo na več projektih.
- [x] Na vsakem projektu dela vsaj en podiplomski študent.
- [x] Za vsak projekt, na katerem dela študent, je določen en profesor, ki ga nadzoruje (istega študenta lahko pri več različnih projektih nadzorujejo različni profesorji).
- [x] Vsak profesor dela na vsaj enem oddelku, pri čemer za vsak oddelek beležimo delež delovnega časa profesorja.
- [x] Vsak oddelek vodi natanko en profesor.
- [x] Vsak podiplomski študent opravlja raziskovalno dejavnost na natanko enem oddelku.
- [x] Podiplomski študentje imajo lahko enega starejšega kolega za svetovalca.
----
[![](https://raw.githubusercontent.com/jaanos/OPB/gh-pages/zapiski/2020/2020-03-19/ER-univerza.png)](https://raw.githubusercontent.com/jaanos/OPB/gh-pages/zapiski/2020/2020-03-19/ER-univerza.dia)
---
## Naloga 3
Nariši ER diagram za sledečo letališčno podatkovno bazo:
- [x] Vsako letalo ima registrsko številko in je nekega modela.
- [x] Za vsak model letala hranimo njegovo številko, kapaciteto in težo.
- [x] Zaposleni na letališču so letalski tehniki in kontrolorji letenja. Za vsakega hranimo EMŠO, ime, naslov, telefon in plačo.
- [x] Vsak tehnik je specialist za enega ali več modelov letal. Za vsak model imamo lahko več specialistov.
- [x] Vsak kontrolor mora prestati letni zdravniški pregled. Hranimo datum zadnjega pregleda.
- [x] Za preverjanje stanja letal so predpisani periodični testi. Za vsak test hranimo njegovo številko, ime in maksimalno doseženo oceno.
- [x] Vsakič, ko tehnik opravi test na nekem letalu, to zabeležimo. Za vsak tak dogodek hranimo datum, porabljen čas in doseženo oceno.
Ali lahko ER diagram priredimo tako, da lahko test na letalu opravi le tak tehnik, ki je specialist za njegov model?
----
[![](https://raw.githubusercontent.com/jaanos/OPB/gh-pages/zapiski/2020/2020-03-19/ER-letala.png)](https://raw.githubusercontent.com/jaanos/OPB/gh-pages/zapiski/2020/2020-03-19/ER-letala.dia)
----
```sql
CREATE TABLE model (
stevilka TEXT PRIMARY KEY,
kapaciteta INTEGER,
teza INTEGER
);
CREATE TABLE letalo (
registrska TEXT PRIMARY KEY,
model TEXT NOT NULL REFERENCES model(stevilka)
ON UPDATE CASCADE
ON DELETE RESTRICT,
UNIQUE (registrska, model)
);
CREATE TABLE test (
stevilka INTEGER PRIMARY KEY,
ime TEXT,
max_ocena INTEGER
);
CREATE TABLE zaposleni (
emso TEXT PRIMARY KEY,
ime TEXT,
naslov TEXT,
telefon TEXT,
placa INTEGER
);
CREATE TABLE tehnik (
emso TEXT PRIMARY KEY REFERENCES zaposleni(emso)
);
CREATE TABLE kontrolor (
emso TEXT PRIMARY KEY REFERENCES zaposleni(emso),
pregled DATE
);
CREATE TABLE specialist (
tehnik TEXT REFERENCES tehnik(emso),
model TEXT REFERENCES model(stevilka),
PRIMARY KEY (tehnik, model)
);
CREATE TABLE kontrola (
tehnik TEXT,
registrska TEXT,
model TEXT,
test INTEGER REFERENCES test(stevilka),
datum DATE,
cas INTERVAL,
ocena INTEGER,
FOREIGN KEY (tehnik, model)
REFERENCES specialist(tehnik, model),
FOREIGN KEY (registrska, model)
REFERENCES letalo(registrska, model),
PRIMARY KEY (tehnik, registrska, model, test, datum)
);
```