Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql]relacja wiele do wielu - tworzenie tabeli pośredniej - jak?
Forum PHP.pl > Forum > Bazy danych
zielonyjestem
Witam,
otóż jestem zielony jeśli chodzi o SQL, a muszę wykonać projekt i mam problem przy relacji wiele do wielu. Mam następujące tabele PRODUKTY i PLAN PRODUKCYJNY - występuje tutaj relacja wiele do wielu jak utworzyć tabele pośrednią, która musi zawierać dwa klucze obce? Jak zakodować tą tabele pośrednia w sql?

Create Table produkty (
id_produktu int primary key,
nazwa_produktu varchar (20),
ilość varchar (10))

Create Table plan_produkcyjny (
id_planu int primary key,
nazwa_planu varchar (20),
data datetime)
thek
Najprościej? Stwórz taką, która ma jako kolumny klucze z obu tabel i załóż na nie klucz unique. W zależności od tago jaki silnik tabeli, możesz jeszcze mieć ustawione w odpowiedniej z nich, że w razie kasowania rekordu, poleci także rekord w tabeli pośredniej,
rad11
Mniej wiecej tak to powinno wygladac wiele do wielu
zielonyjestem
Cytat(thek @ 1.01.2014, 21:26:17 ) *
Najprościej? Stwórz taką, która ma jako kolumny klucze z obu tabel i załóż na nie klucz unique. W zależności od tago jaki silnik tabeli, możesz jeszcze mieć ustawione w odpowiedniej z nich, że w razie kasowania rekordu, poleci także rekord w tabeli pośredniej,


A mógłbyś mi to napisać jak ma to wyglądać, jak założyć ten klucz unique?


jak stworzę tabele i będę dodawał te klucze takie kodowanie będzie prawidłowe?

id_produktu INT CONSTRAINT produkty_FK REFERENCES produkty ON DELETE CASCADE
id_planu INT CONSTRAINT plan_produkcyjny_FK REFERENCES plan_produkcyjny ON DELETE CASCADE
thek
Unique tworzysz jak każdy inny index w tabeli. Tyle że teraz podajesz wszystkich kolumn, które razem utworzą index. W Twoim wypadku możesz zastosować unique, ale jako że jest to złączeniowa, to de faco może on być także primary keyem. Gdyby więc zastosować się do Twojego nazewnictwa, można by do już istniejącej tabeli pośredniej (nie podałeś nazwy więc ją wymyślę wink.gif ) tylko dołożyć indeks:
  1. ALTER TABLE produkty2plan_produkcyjny ADD PRIMARY KEY (id_produktu, id_planu);


Po prawdzie bardzo zbliżony przykład masz w dokumentacji developerskiem MySQL... Zresztą sam zobacz tutaj: http://dev.mysql.com/doc/refman/5.6/en/cre...reign-keys.html a konkretniej przy paragrafie "Examples of Foreign Key Clauses", gdzie masz przykład z klientem, produktem i tabelą zamówienia smile.gif Popatrz na przykład i przemyśl. Masz tam zarówno klucze złożone jak i klucze obce w jednym.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.