PostgreSQL 9.6 Dane z tabeli importowane do drugiej tabeli

0

Witam, pytanie jak w temacie. Mianowicie mam dwie tabele pracownik i naprawa. Polaczone sa zwiazkiem wieloznacznym, wiec w tabeli pracownik mam klucz obcy naprawa_id , a w tabeli naprawa mam klucz obcy pracownik_id. Pracownik może mieć wiele napraw, naprawa moze byc wykonywana przez wielu pracownikow. Jak zrobić by w tabeli 'naprawa' w kolumnie pracownik_id mogly sie wyswietlac id kilku pracownikow oraz jak zrobic by w tabeli 'pracownik' w kolumnie naprawa_id mogly wyswietlac sie id kilku napraw? Z gory dzieki za odpowiedz. Muszę mieć klucze obce poniewaz wymaga tego prowadzacy laborki.

1

Moim zdaniem najlepszym rozwiązaniem w tym przypadku jest stworzenie dodatkowej tabeli która powiąże Ci pracowników z naprawami. Bez sensu jest trzymać kilka IDków napraw w tabeli Pracownicy lub kilka IDków pracowników w tabeli Naprawy. A co jeśli w danej naprawie jeden pracownik wykonał jedną czynność a drugi pracownik drugą ? ID-ki czynności (jeżeli w ogóle uwzględniasz w swojej bazie trzymanie takich rzeczy) też gdzieś chcesz grupować w jednym polu? Błąd!

Ja bym zrobił tak. Tworzy nową tabelę o nazwie np. pow_pn (skrót od "powiązanie pracownik naprawa") w której tworzysz minimalnie kolumny: ID, ID_pracownik, ID_naprawa. Jeżeli potrzebujesz (jak wspomniałem wcześniej) przechowywać inne dane np. jakiej czynności dokonał dany pracownik w danej naprawie to możesz np. dodać jeszcze pole ID_czynnosc itd (wtedy tworzysz dodatkową tabelę "czynnosci").

Połączenia będziesz miał takie: tabela Pracownik pole: ID (klucz główny) połączysz z tabelą pow_pn z polem ID_pracownik (klucz obcy). Następne powiązanie to tabela Naprawy pole ID (klucz główny) z tabelą pow_pn z polem ID_naprawa (klucz obcy).

I gotowe :)

Wtedy w tabeli Pracownicy tworzysz "unikalnych" pracowników a w tabeli Naprawy "unikalne" naprawy (po jednym rekordzie). A jak chcesz dopisywać konkretnych pracowników do konkretnych napraw robisz to w tabeli "pow_pn".

0

Ok, ale musze miec w diagramie zwiazek wiele do wiele, a jak stworze nowa tabele, ktora bedzie zawierala wylacznie id pracownika oraz id naprawy i nazwe ta tabele zalozmy prac_nap to jakich polaczen mam uzyc z tabeli pracownik ->prac_np oraz naprawa -> prac_nap?

0

ok, tak zrobilem ;) Dzieki

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