[PG-SQL] Relacja wiele-do-wielu

0

Hej, w sumie to dopiero zaczynam przygodę z bazami, a problem zapewne jest banalny, no ale już nie mam pomysłów.

http://www.wklejto.pl/708009

I problem się zaczyna w momencie, gdy w czwartej tabeli (TU_umowa) chce utworzyć relacje. Chcę, aby ta umowa dotyczyła osób, które je zawarły, ale przy każdej próbie użycia constraint, albo tworzenia osobnego id w TU_spotkanie i użycia go w TU_historia przez foreign keya wywala mi błąd o unikalnych ograniczeniach (???), to samo dotyczy tabeli TU_historia.

Gdzie tkwi błąd?

1
  1. po co Ci w TU_historia idKlienta skoro masz idUmowy, która ma idSpotkania, które ma idKlienta
  2. czy przewidujesz taki przypadek, że na jednym spotkaniu będzie podpisane kilka umów? Jeśli nie to tabela TU_spotkanie jest zbędna
  3. wg mnie ten schemat jest średnio poprawny - jak choćby klient ma zgłosić szkodę?
0
  1. Właśnie miałem zagwozdkę czy to idKlienta zawiera się w idUmowy. Usunąłem tylko tą jedną linijkę i bez błędów, dzięki.
  2. Tak.
  3. Jest to mini projekt z oddanym już diagramem (zaakceptowanym), dlatego takie tabele... Mam świadomość, że baza nie jest idealna (albo nawet prostu średnia, tak jak ująłeś). Nie uwzględniałem zgłaszania szkód tylko wgląd w jej historię (i tu też mam świadomość, że logika leży).

Jeszcze szybkie pytanko odnośnie perspektywy

CREATE VIEW TU_view AS SELECT * FROM TU_agent,TU_klient,TU_spotkanie,TU_umowa,TU_historia;

Wyskakuje błąd
BŁĄD kolumna "idagenta" określona więcej niż raz
Jeżeli to ma być perspektywa, to czemu mi pokazuje taki błąd?

0

bo select jest niepoprawny. Poza tym select * from wszystko utworzy Ci w wyniku iloczyn kartezjański (czyli każdy z każdym) dla 5 tabel - jeśli w każdej tabeli będziesz miał TYLKO po 5 rekordów to w wyniku dostaniesz 5*5*5*5*5 = 3125 rekordów...

1

Powinien być zakaz uzywania we view *.

1 użytkowników online, w tym zalogowanych: 0, gości: 1