Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [sql]relacja wiele do wielu - tworzenie tabeli pośredniej - jak?
zielonyjestem
post 1.01.2014, 20:58:20
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 1.01.2014

Ostrzeżenie: (0%)
-----


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)

Ten post edytował zielonyjestem 1.01.2014, 20:59:26
Go to the top of the page
+Quote Post
thek
post 1.01.2014, 21:26:17
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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,


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
rad11
post 1.01.2014, 21:31:42
Post #3





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Mniej wiecej tak to powinno wygladac wiele do wielu

Ten post edytował rad11 1.01.2014, 21:35:00
Go to the top of the page
+Quote Post
zielonyjestem
post 1.01.2014, 21:54:27
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 1.01.2014

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
thek
post 2.01.2014, 22:08:27
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.05.2025 - 09:53