Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Relacja wiele do wielu - indeksy
Forum PHP.pl > Forum > Bazy danych > MySQL
sabat24
W relacji wiele do wielu mam trzecią tablicę łączącą. Są tam pola np. ID oraz ID2. Jakie powinienem założyć tam indeksy? Pojedyncze dla ID oraz ID2, czy też połączyć ID oraz ID2 oraz osobny dla ID2?
Mutakoss
Nie bardzo moze rozumiem o co chodzi ale

majac tabele pracownicy i zadania masz

pracownicy id

tabela laczaca PRACZAD z polami ID (id tej tabeli) ID_PRAC i ID_ZAD

tabela zadania ma ID
yevaud
generalnie tak czy inaczej powinienes miec indeks primary key(id, id2) i po indeksie foreign key na kazdy klucz = 3 rozne indeksy

w przypadku gdy chcesz jeszcze zliczac ilosc danej relacji (tzn. (id, id2) nie jest primary) powinienes miec wtedy jeszcze 3cie pole z identyfikatorem konkretnej relacji ale to oddzielna bajka
sabat24
Dziękuję za odpowiedź. Zwykle ustawiałem dwa indeksy primary (id, id2) oraz obcy (id2) stąd byłem ciekaw, czy dobrze robiłem. Akurat trzecie pole nie jest mi w tym wypadku potrzebne.
phpion
W sytuacji, gdy tabela spełnia rolę "łącznika" i zawiera pola:
- tab1_id,
- tab2_id
dobrze jest:

1. Założyć klucz główny na tab1_id + tab2_id.
2. Założyć klucz obcy na tab1_id.
3. Założyć klucz obcy na tab2_id.
4. Założyć indeks na tab2_id.

Dlaczego nie ma tutaj indeksu na tab1_id? Ponieważ załatwia go nam klucz główny.
yevaud
Cytat(phpion @ 26.12.2010, 20:30:50 ) *
4. Założyć indeks na tab2_id.

klucz obcy wiaze sie rowniez z indeksem
phpion
O widzisz. Na co dzień pracuję z PostgreSQL, gdzie takie zjawisko nie ma miejsca. Dzięki za zwrócenie uwagi.
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.