DROP TABLE IF EXISTS
Instytucja,
Pracownik,
Galeria,
Eksponat,
Historia,
Artysta
CASCADE;
CREATE TABLE Instytucja (
ID INTEGER PRIMARY KEY,
nazwa VARCHAR(100) NOT NULL,
miasto VARCHAR(100) NOT NULL
);
CREATE TABLE Pracownik (
ID INTEGER PRIMARY KEY,
pracodawca INTEGER NOT NULL REFERENCES Instytucja(ID),
haslo VARCHAR(100) NOT NULL,
imie VARCHAR(100) NOT NULL,
nazwisko VARCHAR(100) NOT NULL
);
CREATE TABLE Galeria (
ID INTEGER PRIMARY KEY,
centrala INTEGER NOT NULL REFERENCES Instytucja(ID)
);
CREATE TABLE Artysta (
ID INTEGER PRIMARY KEY,
imie VARCHAR(100),
nazwisko VARCHAR(100),
urodzony DATE NOT NULL,
zmarly DATE
);
CREATE TABLE Eksponat (
ID INTEGER PRIMARY KEY,
autor INTEGER NOT NULL REFERENCES Artysta(ID),
lokalizacja INTEGER NOT NULL REFERENCES Galeria(ID),
tytul VARCHAR(200) NOT NULL,
typ VARCHAR(100) NOT NULL,
rozmiar_x INTEGER NOT NULL,
rozmiar_y INTEGER NOT NULL,
rozmiar_z INTEGER NOT NULL,
stan INTEGER
);
CREATE TABLE Historia (
ID INTEGER PRIMARY KEY,
przedmiot INTEGER NOT NULL REFERENCES Eksponat(ID),
najemca INTEGER NOT NULL REFERENCES Instytucja(ID),
poczatek DATE NOT NULL,
koniec DATE NOT NULL
);
/*
CREATE TRIGGER czy_galeria_ma_instytucje
- przy próbie wstawienia do tabeli Galeria sprawdza, czy
wartość podana dla pola centrala występuje w tabeli instytucja
CREATE TRIGGER czy_pracownik_ma_instytucje
- przy próbie wstawienia do tabeli Pracownik sprawdza, czy
wartość podana dla pola pracodawca występuje w tabeli instytucja
CREATE TRIGGER czy_eksponat_ma_artyste
- przy próbie wstawienia do tabeli Eksponat sprawdza, czy
wartość podana dla pola autor występuje w tabeli Artysta pod
warunkiem, że wartość ta jest NOT NULL
CREATE TRIGGER czy_eksponat_ma_galerie
- przy próbie wstawienia do tabeli Eksponat sprawdza, czy
wartość podana dla pola lokalizacja występuje w tabeli Galeria
*/
Join our mailing list to receive updates on new arrivals and special offers.