DROP TABLE IF EXISTS Uzytkownik CASCADE;
DROP TABLE IF EXISTS Komisja_Wyborcza CASCADE;
DROP TABLE IF EXISTS Wyborca CASCADE;
DROP TABLE IF EXISTS Kandydat CASCADE;
DROP TABLE IF EXISTS Wybory CASCADE;

-- tables
-- Table: Kandydat
CREATE TABLE Kandydat (
    Wybory_id int  NOT NULL,
    Kandydat_indeks int  NOT NULL,
    liczba_glosow int  NOT NULL,
    CONSTRAINT Kandydat_pk PRIMARY KEY (Kandydat_indeks,Wybory_id)
);

-- Table: Komisja_Wyborcza
CREATE TABLE Komisja_Wyborcza (
    id int  NOT NULL,
    CONSTRAINT Komisja_Wyborcza_pk PRIMARY KEY (id)
);

-- Table: Uzytkownik
CREATE TABLE Uzytkownik (
    login int  NOT NULL,
    haslo varchar(20)  NOT NULL,
    CONSTRAINT Uzytkownik_pk PRIMARY KEY (login)
);

-- Table: Wyborca
CREATE TABLE Wyborca (
    indeks int  NOT NULL,
    imie varchar(50)  NOT NULL,
    nazwisko varchar(50)  NOT NULL,
    CONSTRAINT Wyborca_pk PRIMARY KEY (indeks)
);

-- Table: Wybory
CREATE TABLE Wybory (
    id int  NOT NULL,
    nazwa varchar(50)  NOT NULL,
    lba_posad varchar(85)  NOT NULL,
    termin_kandudatur date  NOT NULL,
    termin_rozpoczecia timestamp  NOT NULL,
    termin_zakonczenia timestamp  NOT NULL,
    Komisja_Wyborcza_id int  NOT NULL,
    CONSTRAINT Wybory_pk PRIMARY KEY (id)
);

-- foreign keys
-- Reference: Kandydat_Wyborca (table: Kandydat)
ALTER TABLE Kandydat ADD CONSTRAINT Kandydat_Wyborca
    FOREIGN KEY (Kandydat_indeks)
    REFERENCES Wyborca (indeks)  
    NOT DEFERRABLE 
    INITIALLY IMMEDIATE
;

-- Reference: Kandydat_Wybory (table: Kandydat)
ALTER TABLE Kandydat ADD CONSTRAINT Kandydat_Wybory
    FOREIGN KEY (Wybory_id)
    REFERENCES Wybory (id)  
    NOT DEFERRABLE 
    INITIALLY IMMEDIATE
;

-- Reference: Uzytkownik_Komisja_Wyborcza (table: Uzytkownik)
ALTER TABLE Uzytkownik ADD CONSTRAINT Uzytkownik_Komisja_Wyborcza
    FOREIGN KEY (login)
    REFERENCES Komisja_Wyborcza (id)  
    NOT DEFERRABLE 
    INITIALLY IMMEDIATE
;

-- Reference: Uzytkownik_Wyborca (table: Uzytkownik)
ALTER TABLE Uzytkownik ADD CONSTRAINT Uzytkownik_Wyborca
    FOREIGN KEY (login)
    REFERENCES Wyborca (indeks)  
    NOT DEFERRABLE 
    INITIALLY IMMEDIATE
;

-- Reference: Wybory_Komisja_Wyborcza (table: Wybory)
ALTER TABLE Wybory ADD CONSTRAINT Wybory_Komisja_Wyborcza
    FOREIGN KEY (Komisja_Wyborcza_id)
    REFERENCES Komisja_Wyborcza (id)  
    NOT DEFERRABLE 
    INITIALLY IMMEDIATE
;

-- End of file.

