CCbolt Temat założony przez niniejszego użytkownika |
[SQL] Ocena kodu i stosowanie wartości serial » 2017-06-06 20:57:17 Możecie ocenić kod? Jak stosuje się serial w insercie? SET client_encoding = 'utf-8';
create table typ_nieruchomosci ( ID_typnieruchomosci serial NOT NULL, typ_nieruchomosci varchar NOT NULL, CONSTRAINT typ_nieruchomosci_pk PRIMARY KEY( ID_typnieruchomosci ) );
create table stanowisko ( ID_stanowisko serial NOT NULL, nazwa_stanowiska varchar NOT NULL, pensja char NOT NULL, nr_telefonu char NOT NULL, email varchar NOT NULL, data_zatrudnia date NOT NULL, CONSTRAINT stanowisko_pk PRIMARY KEY( ID_stanowisko ) );
create table pracownicy ( ID_pracownik serial NOT NULL, stanowisko2 varchar, imie varchar NOT NULL, nazwisko varchar NOT NULL, data_urodzenia date NOT NULL, data_zatrudnia date NOT NULL, stanowisko varchar NOT NULL, CONSTRAINT pracownicy_pk PRIMARY KEY( ID_pracownik ), CONSTRAINT stanowisko_fk FOREIGN KEY( stanowisko2 ) REFERENCES stanowisko( ID_stanowisko ) ON UPDATE CASCADE ON DELETE CASCADE );
create table nieruchomosc ( ID_nieruchomosc serial NOT NULL, typ_nieruchomosci char, nr_kw varchar( 6 ) NOT NULL, metraz char NOT NULL, adres varchar NOT NULL, CONSTRAINT nieruchomosc_pk PRIMARY KEY( ID_nieruchomosc ), CONSTRAINT typ_nieruchomosci_fk FOREIGN KEY( typ_nieruchomosci ) REFERENCES typ_nieruchomosci( ID_typnieruchomosci ) );
create table klient ( ID_klient serial NOT NULL, nieruchomosc serial, pracownik serial, PESEL char NOT NULL, imie varchar NOT NULL, nazwisko varchar NOT NULL, nr_telefonu char NOT NULL, adres char NOT NULL, email varchar NOT NULL,
CONSTRAINT klient_pk PRIMARY KEY( ID_klient ), CONSTRAINT nieruchomosc_fk FOREIGN KEY( nieruchomosc ) REFERENCES nieruchomosc( ID_nieruchomosc ), CONSTRAINT pracownicy_fk FOREIGN KEY( pracownik ) REFERENCES pracownicy( ID_pracownik ) );
create table biuro ( ID_biuro serial NOT NULL, pracownicy serial, nieruchomosc serial, klient serial, CONSTRAINT biuro_pk PRIMARY KEY( ID_biuro ), CONSTRAINT pracownicy_fk FOREIGN KEY( pracownicy ) REFERENCES pracownicy( ID_pracownik ), CONSTRAINT nieruchomosc_fk FOREIGN KEY( nieruchomosc ) REFERENCES nieruchomosc( ID_nieruchomosc ), CONSTRAINT klient_fk FOREIGN KEY( klient ) REFERENCES klient( ID_klient ) );
|
|
DejaVu |
» 2017-06-06 23:34:28 |
|
hit |
» 2017-06-07 08:25:00 Brakuje mi tu spójności: ID_typnieruchomosci serial NOT NULL, typ_nieruchomosci char, Ponadto przyjęło się, żeby tabele nazywać w liczbie mnogiej (pola w pojedynczej). |
|
bombatom69 |
» 2017-06-12 16:17:28 To nie ma prawa działać. Tabela pracownicy: Pomijam fakt, że nie rozumiem po co są pola typu varchar "stanowisko2" i "stanowisko".
FK w tej tabeli wiąże pole stanowisko2(varchar) z polem stanowisko.ID_stanowisko, które jest serialem. Nie wiem jak w pgsql ale ja nie słyszałem aby takie wiązanie było możliwe.
Serial w Postgresie(jak się domyślam) działa podobnie jak pole integer + sequence w Oracle-u.
Dalej nie sprawdzam, bo ten kod nie powinien się wykonać.
Gdy już ostatecznie zdecydujesz się na pgsql, to poczytaj też o działaniu logiki w tym silniku, bo z tego co wyczytałem, nie jest ona taka jak w innych bazach. |
|
« 1 » |