CREATE TABLE osoba ( id INTEGER PRIMARY KEY CHECK (id > 0), imie VARCHAR(15) NOT NULL, nazwisko VARCHAR(20) NOT NULL, data_urodzenia DATE DEFAULT SYSDATE NOT NULL, id_matki INTEGER CONSTRAINT osoba_fk_matka REFERENCES osoba, id_ojca INTEGER CONSTRAINT osoba_fk_ojciec REFERENCES osoba ); CREATE TABLE dowod ( nr INTEGER PRIMARY KEY CHECK (nr > 0), id_wl INTEGER REFERENCES osoba NOT NULL, data_wydania DATE NOT NULL, data_koniec DATE ); CREATE TABLE adres ( id_osoby INTEGER REFERENCES osoba, data_pocz DATE, data_kon DATE, ulica VARCHAR(10) NOT NULL, nr_domu VARCHAR(5) NOT NULL, nr_mieszk VARCHAR(5), kod CHAR(6) NOT NULL, poczta VARCHAR(10) NOT NULL, PRIMARY KEY (id_osoby, data_pocz), CHECK (data_pocz < data_kon or data_kon is null) ); CREATE TABLE malzenstwo ( id_zony INTEGER REFERENCES osoba, id_meza INTEGER REFERENCES osoba, data_pocz DATE, data_kon DATE, PRIMARY KEY (id_zony, id_meza, data_pocz), CHECK (data_pocz < data_kon or data_kon is null), CHECK (id_zony != id_meza) );