Witam!
Potrzebuję trochę informacji jak najlepiej zorganizować system tagów dla wpisów, żeby działało to w miarę optymalnie.
Uproszczona struktura bazy:
tabela wpis (id_wpisu, nazwa_wpisu)
tabela tagi (id_tagu, nazwa_tagu)
tabela wpisy_tagi (id_wpisu, id_tagu)
Za pomocą formularza odbieram dane, sprawdzam i jeśli wszystko jest ok to wrzucam do bazy. Głównym problemem są tagi - jak to zrobić żeby nie tworzyć niepotrzebnych zapytań.
Tagi są wpisywane jako tekst oddzielony przecinkiem np "tag1, długi tag2, tag3, tag4" etc. Pobieram dane, czyszczę z różnych śmieci, robię explode po "," i mam tagi w tabeli.
Teraz zaczynają się schody. Dla każdego taga robię trim i sprawdzam czy jest w tabeli "tagi". Zależnie od wyniku:
- jeśli jest to pobieramy id_tagu
- jeśli nie ma to dodajemy do tabeli i pobieramy nowoutworzone id_tagu
Do tabeli "wpisy_tagi" wrzucamy id_wpisu, id_tagu
Jak to najoptymalniej rozwiązać? Pobrać całą zawartość tabeli "tagi", czy też może dla każdego tagu tworzyć osobne zapytanie sprawdzające? Orientacyjnie każdy wpis będzie miał do kilkunastu tagów, wpisów może być sporo więc sama tabela "tagi" po pewnym czasie urośnie.