To, že budete mít všechny značky v různých záznamech (normalizované), znamená, že v případě potřeby budete moci značky snadněji přejmenovat a sledovat historii názvů značek.
SO
, například přejmenován na SQL Server
související značky alespoň třikrát (mssql
-> sqlserver
-> sql-server
).
Mít všechny značky v jednom záznamu (denormalizované) znamená, že můžete tento sloupec indexovat pomocí FULLTEXT
indexovat a hledat příspěvky se dvěma nebo více štítky najednou:
SELECT *
FROM posts
WHERE MATCH(tags) AGAINST('+mma +ufc')
což je také možné, ale méně efektivní s normalizovaným designem.
(Nezapomeňte upravit @ft_min_word_len
k indexování značek 3
znaků nebo méně, aby to fungovalo)
Oba návrhy můžete kombinovat:uložit jak tabulku mapy, tak denormalizovaný sloupec. To však bude vyžadovat více údržby.
Můžete také uložit normalizovaný návrh do své databáze a použít zadaný dotaz k načtení značek do Sphinx
nebo Lucene
.
Tímto způsobem můžete prohledávat historii pomocí MySQL
, fulltextové vyhledávání značek pomocí Sphinx
a nebude vyžadována žádná další údržba.