CREATE TABLE liczba_wypozyczen
(
id_l_w SERIAL NOT NULL, /* Tworzenie kolumny id_l_w o typie SERIAL z NOT NULL. */
liczba_w INTEGER NOT NULL,
CONSTRAINT liczba_wypozyczen_pkey PRIMARY KEY (id_l_w)
/* CONSTRAINT nazwa_tabeli_pkey PRIMARY KEY (nazwa kolumny, która ma być kluczem głównym) */
/* Tworzenie klucza głównego w tabeli słownikowej liczba_wypozyczen na kolumnie id_l_w. */
);
CREATE TABLE kategoria
(
id_ka SERIAL NOT NULL,
kategoria_k VARCHAR(50) NOT NULL,
CONSTRAINT kategoria_pkey PRIMARY KEY (id_ka)
);
CREATE TABLE status_ksiazki
(
id_s_k SERIAL NOT NULL,
status_k VARCHAR(20) NOT NULL,
CONSTRAINT status_ksiazki_pkey PRIMARY KEY (id_s_k)
);
CREATE TABLE zwrot
(
id_z SERIAL NOT NULL,
status_zwrotu VARCHAR(20) NOT NULL,
CONSTRAINT zwrot_pkey PRIMARY KEY (id_z)
);
CREATE TABLE czytelnik
(
id_cz SERIAL NOT NULL,
liczba_wypozyczen INTEGER NOT NULL, /* Z tabeli słownikowej liczba_wypozyczen z kolumny liczba_w */
nazwisko VARCHAR(50) NOT NULL,
imie VARCHAR(50) NOT NULL,
pesel BIGINT NOT NULL,
email VARCHAR(100) NOT NULL,
województwo VARCHAR(20) NOT NULL,
kod_pocztowy VARCHAR(6) NOT NULL,
miasto VARCHAR(50) NOT NULL,
adres VARCHAR(50) NOT NULL,
CONSTRAINT czytelnik_pkey PRIMARY KEY (id_cz),
CONSTRAINT fk_czytelnik_liczba_wypozyczen FOREIGN KEY (liczba_wypozyczen)
/* Tworzenie klucza obcego na tabeli czytelnik prowadzącej do tabeli liczba_wypozyczen */
/* FOREIGN KEY (liczba_wypozyczen) - Tworzenie klucza obcego na tabeli liczba_wypozyczen */
REFERENCES liczba_wypozyczen (id_l_w)
/* Klucz obcy odnosi się do tabeli liczba_wypozyczen i kolumny id_l_w */
);
CREATE TABLE logowanie
(
id_l SERIAL NOT NULL,
nazwisko_l INTEGER NOT NULL,
imie_l INTEGER NOT NULL,
login BIGINT NOT NULL,
hasło VARCHAR(8) NOT NULL,
CONSTRAINT logowanie_pkey PRIMARY KEY (id_l),
CONSTRAINT fk_logowanie_czytelnik FOREIGN KEY (imie_l)
/* Tworzenie klucza obcego na tabeli logowowanie prowadzącej do tabeli czytelnik */
/* FOREIGN KEY (czytelnik_l) - Tworzenie klucza obcego na kolumnie czytelnik_l tabeli logowanie */
REFERENCES czytelnik (id_cz),
/* Klucz obcy odnosi się do tabeli czytelnik i kolumny id_cz */
CONSTRAINT fk_logowanie_czytelnik_1 FOREIGN KEY (nazwisko_l)
/*
Tworzenie klucza obcego na tabeli logowowanie prowadzącej do tabeli czytelnik, ale wpisujemy czytelnik_1
Wpisując czytelnik pokaże błąd bo w tej samej tabeli nie może być dwóch takich samych constaint
*/
REFERENCES czytelnik (id_cz)
);
CREATE TABLE ksiazka
(
id_ks SERIAL NOT NULL,
status_ks INTEGER NOT NULL,
kategoria_k INTEGER NOT NULL,
isbn BIGINT NOT NULL,
tytul VARCHAR(200) NOT NULL,
autor1 VARCHAR(100) NOT NULL,
autor2 VARCHAR(100) NULL,
rok_wydania INTEGER NOT NULL,
CONSTRAINT ksiazka_pkey PRIMARY KEY (id_ks),
CONSTRAINT fk_ksiazka_status_ksiazki FOREIGN KEY (status_ks)
REFERENCES status_ksiazki (id_s_k),
CONSTRAINT fk_ksiazka_kategoria FOREIGN KEY (kategoria_k)
REFERENCES kategoria (id_ka)
);
CREATE TABLE wypozyczenia
(
id_w SERIAL NOT NULL,
pesel_w INTEGER NOT NULL,
ksiazka_w INTEGER NOT NULL,
data_zarezerwowania DATE NOT NULL,
data_odebrania TIMESTAMP(2) WITHOUT TIME ZONE NOT NULL,
data_zwrotu TIMESTAMP(2) WITHOUT TIME ZONE NOT NULL,
termin_zwrotu TIMESTAMP(2) WITHOUT TIME ZONE NOT NULL,
status_zwrotu_w INTEGER NOT NULL,
CONSTRAINT wypozyczenia_pkey PRIMARY KEY (id_w),
CONSTRAINT fk_wypozyczenia_czytelnik FOREIGN KEY (pesel_w)
REFERENCES czytelnik (id_cz),
CONSTRAINT fk_wypozyczenia_ksiazka FOREIGN KEY (ksiazka_w)
REFERENCES ksiazka (id_ks),
CONSTRAINT fk_wypozyczenia_zwrot FOREIGN KEY (status_zwrotu_w)
REFERENCES zwrot (id_z)
);