sabat24
25.12.2010, 15:57:31
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
26.12.2010, 01:02:07
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
26.12.2010, 02:08:10
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
26.12.2010, 19:14:01
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
26.12.2010, 20:30:50
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
26.12.2010, 23:34:21
Cytat(phpion @ 26.12.2010, 20:30:50 )

4. Założyć indeks na tab2_id.
klucz obcy wiaze sie rowniez z indeksem
phpion
27.12.2010, 08:04:35
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.