Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql] optymalny schemat tabeli do przechowywania tagów
Forum PHP.pl > Forum > Bazy danych > MySQL
szczypior
Witam

Jak najefektywniej przechowywać tagi (z tzw. chmurki tagów), tak żeby można było je powiazac z postami z innej tabeli, ale i ograniczyć zajmowane przez nie miejsce?
Zbudować tabele
  1. id | tag | id_post | suma
i dodawać je kolejno nawet gdy będą sie powtarzać zwiększając tylko wartość w kolumnie "suma" ?

Jest jakiś lepszy patent?
phpion
Ja bym to zrobił w ten sposób:
tag = id, nazwa
post = id, tytul, tresc...
tagi_postu = post_id, tag_id
W tabeli tagi_postu oba pola bylyby kluczem głównym będącym równocześnie kluczami obcymi do tabel tag oraz post.
szczypior
ale jak bedzie trzeba pobrać tagi dla postu x to będę musiał zrobić mega joina, aby najpierw pobrać id tagów a potem ich treść z kolejnej tabeli. To rozwiązanie będzie chyba bardziej "męczące" dla bazy?
phpion
Mega join?
  1. SELECT tag.nazwa FROM tagi_postu LEFT JOIN tag ON tagi_postu.tag_id=tag.id WHERE tagi_postu.post_id=1234

Jeśli postawisz indexy na odpowiednich kolumnach (na obu kolumnach w tagi_postu) to będzie ok.
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.