Posiadanie wszystkich tagów w różnych rekordach (znormalizowanych) oznacza, że w razie potrzeby będziesz mógł łatwiej zmieniać nazwy tagów i śledzić historię nazw tagów.
SO , na przykład przemianowana na SQL Server powiązane tagi co najmniej trzy razy (mssql -> sqlserver -> sql-server ).
Posiadanie wszystkich tagów w jednym rekordzie (zdenormalizowanym) oznacza, że możesz indeksować tę kolumnę za pomocą FULLTEXT indeksuj i szukaj postów posiadających dwa lub więcej tagów jednocześnie:
SELECT *
FROM posts
WHERE MATCH(tags) AGAINST('+mma +ufc')
co jest również możliwe, ale mniej wydajne przy znormalizowanym projekcie.
(Nie zapomnij dostosować @ft_min_word_len do indeksowania tagów 3 znaków lub mniej, aby to zadziałało)
Możesz łączyć oba projekty:przechowywać zarówno tabelę map, jak i zdenormalizowaną kolumnę. Będzie to jednak wymagało większej konserwacji.
Możesz również przechowywać znormalizowany projekt w swojej bazie danych i użyć podanego zapytania, aby przekazać tagi do Sphinx lub Lucene .
W ten sposób możesz kopać historię za pomocą MySQL , pełnotekstowe wyszukiwanie tagów za pomocą Sphinx i nie będą wymagane żadne dodatkowe czynności konserwacyjne.