Temat: Liga Piłkarska, problem z tabelami
Ostatnio edytowany przez Konrad Stepinski (2014-06-05 07:27:03)
PostgreSQL to najbardziej zaawansowany system relacyjnych baz danych Open Source.
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
Ostatnio edytowany przez Konrad Stepinski (2014-06-05 07:27:03)
Nie skupiałem sie na analizowaniu sensu twojej bazy a tylko poprawiłem błędy składni ale na twoim miejscu poczytał bym o kluczach obcych a zwłaszcza co oznacza i jak działa klauzula "ON UPDATE CASCADE ON DELETE CASCADE"
SET client_encoding='utf-8';
CREATE TABLE klub
(
id_klub CHAR(6),
rok_powstania INT not null,
nazwa VARCHAR(32) not null,
adres VARCHAR(40) not null,
wlasciciel VARCHAR(40) not null,
CONSTRAINT klub_id_klub_pk PRIMARY KEY(id_klub)
);
---------------------------------------------------------
CREATE TABLE gosc
(
id_gosc CHAR(6),
CONSTRAINT gosc_id_gosc_pk PRIMARY KEY(id_gosc)
);
---------------------------------------------------------
CREATE TABLE gospodarz
(
id_gospodarz CHAR(6),
CONSTRAINT gospodarz_id_gospodarz_pk PRIMARY KEY(id_gospodarz)
);
---------------------------------------------------------
CREATE TABLE mecz
(
id_mecz CHAR(6),
gosc_k CHAR(6) not null,
id_gospodarz CHAR(6) not null,
widownia INT not null,
kolejka INT not null,
data DATE not null,
wynik_do_przerwy CHAR(5) not null,
wynik_koncowy CHAR(5) not null,
CONSTRAINT mecz_id_mecz_pk PRIMARY KEY(id_mecz),
CONSTRAINT mecz_gosc_k_fk FOREIGN KEY(gosc_k) REFERENCES gosc(id_gosc) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT mecz_id_gospodarz_fk FOREIGN KEY(id_gospodarz) REFERENCES gospodarz(id_gospodarz) ON UPDATE CASCADE ON DELETE CASCADE
);
---------------------------------------------------------
CREATE TABLE sedzia
(
id_sedzia CHAR(6) not null,
imie VARCHAR(32) not null,
nazwisko VARCHAR(32) not null,
miasto VARCHAR(25) not null,
CONSTRAINT sedzia_id_sedzia_pk PRIMARY KEY(id_sedzia)
);
---------------------------------------------------------
CREATE TABLE pilkarz
(
id_pilkarz CHAR(6),
imie VARCHAR(32) not null,
nazwisko VARCHAR(32) not null,
pozycja VARCHAR(3) not null,
CONSTRAINT pilkarz_id_pilkarz_pk PRIMARY KEY(id_pilkarz)
);
---------------------------------------------------------
CREATE TABLE statystyki
(
id_statystyki CHAR(6),
pilkarz_id CHAR(6) not null,
rodzaj VARCHAR(15) not null,
liczba INT not null,
id_meczu CHAR(6) not null,
CONSTRAINT statystyki_id_statystyki_pk PRIMARY KEY(id_statystyki),
CONSTRAINT pilkarz_fk FOREIGN KEY(pilkarz_id) REFERENCES pilkarz(id_pilkarz)
);
---------------------------------------------------------
CREATE TABLE mecz_sedzia
(
id_sedzia CHAR(6) not null,
id_mecz CHAR(6) not null,
CONSTRAINT mecz_sedzia_id_sedzia_fk FOREIGN KEY(id_sedzia) REFERENCES sedzia(id_sedzia) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT mecz_sedzia_id_mecz_fk FOREIGN KEY(id_mecz) REFERENCES mecz(id_mecz) ON UPDATE CASCADE ON DELETE CASCADE
);
---------------------------------------------------------
CREATE TABLE mecz_pilkarz
(
id_pilkarz CHAR(6) not null,
id_mecz CHAR(6) not null,
CONSTRAINT mecz_pilkarz_id_pilkarz_fk FOREIGN KEY(id_pilkarz) REFERENCES pilkarz(id_pilkarz) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT mecz_pilkarz_id_mecz_fk FOREIGN KEY(id_mecz) REFERENCES mecz(id_mecz) ON UPDATE CASCADE ON DELETE CASCADE
);
Ogolnie zeby powiazac tabele pilkarz z tabela klub, to musze to zrobic jakos poprzez tabele mecz ? Zaraz poczytam o tym "ON UPDATE CASCADE ON DELETE CASCADE" bo przyznam ze wrzucilem to troche na pale. Oczywiscie dzieki za poprawienie tych bledow,bo teraz tabele wczytuja sie bez zarzutu . Wezme sie za inserty i zobacze jak te rozne SELECT'y beda dzialac lub nie dzialac ( zapewne to drugie ) tu takie przykladowe wykazy ktore moze zawierac:
"historia występów zawodnika, stan rozgrywek (liczba punktów w sezonie), najbardziej skuteczni strzelcy" , o ile najskuteczniejszy strzelec to nie problem, o tyle historia wystepow czy stan rozgrywek pewnie bede musial te tabele inaczej skonstruowac
Ostatnio edytowany przez Konrad Stepinski (2014-06-05 14:08:23)
SET client_encoding='utf-8';
CREATE TABLE klub
(
id_klub CHAR(6),
nazwa VARCHAR(32) not null,
rok_powstania INT not null,
stadion VARCHAR(40) not null,
trener VARCHAR(40) not null,
CONSTRAINT klub_id_klub_pk PRIMARY KEY(id_klub)
);
---------------------------------------------------------
CREATE TABLE gosc
(
id_gosc CHAR(6),
CONSTRAINT gosc_id_gosc_pk PRIMARY KEY(id_gosc),
CONSTRAINT gosc_id_gosc_fk FOREIGN KEY(id_gosc) REFERENCES klub(id_klub)
ON UPDATE CASCADE ON DELETE CASCADE
);
---------------------------------------------------------
CREATE TABLE gospodarz
(
id_gospodarz CHAR(6),
CONSTRAINT gospodarz_id_gospodarz_pk PRIMARY KEY(id_gospodarz),
CONSTRAINT gospodarz_id_gospodarz_fk FOREIGN KEY(id_gospodarz) REFERENCES klub(id_klub)
ON UPDATE CASCADE ON DELETE CASCADE
);
---------------------------------------------------------
CREATE TABLE mecz
(
kolejka INT not null,
id_gospodarz CHAR(6) not null,
gosc_k CHAR(6) not null,
widownia INT not null,
id_mecz CHAR(6),
data DATE not null,
wynik CHAR(15) not null,
CONSTRAINT mecz_id_mecz_pk PRIMARY KEY(id_mecz),
CONSTRAINT mecz_gosc_k_fk FOREIGN KEY(gosc_k) REFERENCES gosc(id_gosc)
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT mecz_id_gospodarz_fk FOREIGN KEY(id_gospodarz) REFERENCES gospodarz(id_gospodarz) ON UPDATE CASCADE ON DELETE CASCADE
);
---------------------------------------------------------
CREATE TABLE sedzia
(
id_sedzia CHAR(6) not null,
imie VARCHAR(32) not null,
nazwisko VARCHAR(32) not null,
miasto VARCHAR(25) not null,
rodzaj VARCHAR(25) not null,
CONSTRAINT sedzia_id_sedzia_pk PRIMARY KEY(id_sedzia)
);
---------------------------------------------------------
CREATE TABLE pilkarz
(
id_pilkarz CHAR(6),
imie VARCHAR(32) not null,
nazwisko VARCHAR(32) not null,
pozycja VARCHAR(3) not null,
CONSTRAINT pilkarz_id_pilkarz_pk PRIMARY KEY(id_pilkarz)
);
---------------------------------------------------------
CREATE TABLE statystyki
(
id_statystyki CHAR(6),
pilkarz_id CHAR(6) not null,
rodzaj VARCHAR(15) not null,
liczba INT not null,
id_meczu CHAR(6) not null,
CONSTRAINT statystyki_id_statystyki_pk PRIMARY KEY(id_statystyki),
CONSTRAINT pilkarz_fk FOREIGN KEY(pilkarz_id) REFERENCES pilkarz(id_pilkarz)
);
---------------------------------------------------------
CREATE TABLE mecz_sedzia
(
id_sedzia CHAR(6) not null,
id_mecz CHAR(6) not null,
CONSTRAINT mecz_sedzia_id_sedzia_fk FOREIGN KEY(id_sedzia) REFERENCES sedzia(id_sedzia) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT mecz_sedzia_id_mecz_fk FOREIGN KEY(id_mecz) REFERENCES mecz(id_mecz) ON UPDATE CASCADE ON DELETE CASCADE
);
---------------------------------------------------------
CREATE TABLE mecz_pilkarz
(
id_pilkarz CHAR(6) not null,
id_mecz CHAR(6) not null,
CONSTRAINT mecz_pilkarz_id_pilkarz_fk FOREIGN KEY(id_pilkarz) REFERENCES pilkarz(id_pilkarz) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT mecz_pilkarz_id_mecz_fk FOREIGN KEY(id_mecz) REFERENCES mecz(id_mecz) ON UPDATE CASCADE ON DELETE CASCADE
);
DROP TABLE mecz_pilkarz;
DROP TABLE mecz_sedzia;
DROP TABLE mecz;
DROP TABLE sedzia;
DROP TABLE statystyki;
DROP TABLE pilkarz;
DROP TABLE gospodarz;
DROP TABLE gosc;
DROP TABLE klub;
I nie wiem czy na podstawie tych tabel,ktore do tej pory stworzylem jest mozliwosc wskazania w jakim klubie gra jaki pilkarz, na bank mam zle tabele gospodarz i gosc. Zastanawiam sie w jaki sposob zrobic to tak, ze strzelone gole w danym spotkaniu bylyby jednoczesnie przypisywane do danego pilkarza.
Posty [ 4 ]
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
[ Wygenerowano w 0.008 sekund, wykonano 10 zapytań ]