Als alle tags in verschillende records staan (genormaliseerd), kunt u de tags gemakkelijker hernoemen als dat nodig mocht zijn en de geschiedenis van de tagnaam volgen.
SO
, bijvoorbeeld hernoemd tot SQL Server
gerelateerde tags minstens driemaal (mssql
-> sqlserver
-> sql-server
).
Het hebben van alle tags in één record (gedenormaliseerd) betekent dat u deze kolom kunt indexeren met een FULLTEXT
indexeer en zoek naar berichten met twee of meer tags tegelijk:
SELECT *
FROM posts
WHERE MATCH(tags) AGAINST('+mma +ufc')
wat ook mogelijk is, maar minder efficiënt met een genormaliseerd ontwerp.
(Vergeet niet om @ft_min_word_len
aan te passen om tags van 3
. te indexeren tekens of minder om dit te laten werken)
U kunt beide ontwerpen combineren:sla zowel de kaarttabel als de gedenormaliseerde kolom op. Dit vereist echter meer onderhoud.
U kunt het genormaliseerde ontwerp ook in uw database opslaan en de door u opgegeven zoekopdracht gebruiken om de tags aan Sphinx
te geven. of Lucene
.
Op deze manier kunt u geschiedenis graven met MySQL
, fulltext-tag zoeken met Sphinx
, en er is geen extra onderhoud nodig.