Att ha alla taggar i olika poster (normaliserade) innebär att du lättare kan byta namn på taggarna om behov uppstår och spåra taggnamnhistoriken.
SO , till exempel, bytt namn till SQL Server relaterade taggar minst tre gånger (mssql -> sqlserver -> sql-server ).
Att ha alla taggar i en post (denormaliserad) innebär att du kan indexera den här kolumnen med en FULLTEXT indexera och sök efter inlägg som har två eller flera taggar samtidigt:
SELECT *
FROM posts
WHERE MATCH(tags) AGAINST('+mma +ufc')
vilket också är möjligt men mindre effektivt med normaliserad design.
(Glöm inte att justera @ft_min_word_len för att indexera taggar för 3 tecken eller mindre för att detta ska fungera)
Du kan kombinera båda designerna:lagra både karttabellen och den denormaliserade kolumnen. Detta kommer dock att kräva mer underhåll.
Du kan också lagra den normaliserade designen i din databas och använda frågan du angav för att mata taggarna till Sphinx eller Lucene .
På så sätt kan du gräva historik med MySQL , fulltext-taggsökningar med Sphinx , och inget extra underhåll kommer att krävas.