Witam,
Moje pytanie brzmi, jak zrobić taki fajny Tag Cloud jak na wiekszości stron webowo dwu-zerowych!
Nie wiem jak zorganizować tabele, żeby szybko tego szukać.
Założenia sa takie:
- dwie tabele: newsy:[id][tytul][tresc][tagi] i tags:[tags]/[counter]/
- przy wpisywaniu newsa/arta/dodawaniu plików do downloadu bedzie input type:text gdzie bedą dodawane tagi oddzielone spacją.
- przy dodawaniu wpisu do bazy najpierw bedą sprawdzane tagi (rozbite explodem) i sprawdzane, czy nie ma ich w tabeli "tags"
- jeżeli danego tagu nie bedzie to zostanie dodany
- możliwość wyświetlenia wystkiego co nawiązuje do danego tagu (LIKE %TAG%)
No i dobra, wszystko ładnie pieknie do tego momentu problemu nie ma, tylko zastanawiam się jak to rozwiązać. czy zbudować tabele "tags": [tag][couner], czy wystarczy samo "tags":[tag]. Przy założeniu pierwszej opcji przy dodawaniu newsa, bedą sprawdzane tagi jeżeli istnieje to oczywiście $tags['counter']+1; przy kasowaniu -1 i wyświetlanie tagowej chmurki nie bedzie trudne. Druga opcja wydaje mi sie jednak bardziej elastyczna i mniej podatna na błędy (np. 2 osoby w tym samym czasie skasują dwa różne pliki które miały ten sam tag to mysql może się wysypać), tylko niestety nie wiem jak ten drugi sposób ogarnąć, czy brać pokolei while'm wszystkie tagi i zliczać je z drugiej tabeli (patrz. ostatni punkt założeń) - po czym wywali ilość rzeczy w tagu. Przy kilku takich wpisach to nie ma problemu, ale załóżmy, że w db zdążyło zgromadzić się 100.000 tagów i 50.000 newsów, które korzystają z nich, njak to ma się do wydajności MySQL'a?
No chyba, że zna ktoś jeszcze inny sposób na robienie listy tagów.