Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SQL] Ocena kodu i stosowanie wartości serial

Ostatnio zmodyfikowano 2017-06-12 16:17
Autor Wiadomość
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?

C/C++
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 )
);
P-162161
DejaVu
» 2017-06-06 23:34:28
P-162170
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).
P-162184
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.
P-162424
« 1 »
  Strona 1 z 1