Наличието на всички маркери в различни записи (нормализирани) означава, че ще можете да преименувате етикетите по-лесно, ако възникне необходимост, и да проследявате историята на имената на маркера.
SO
, например, преименуван на SQL Server
свързани маркери поне три пъти (mssql
-> sqlserver
-> sql-server
).
Наличието на всички тагове в един запис (денормализиран) означава, че можете да индексирате тази колона с FULLTEXT
индексирайте и търсете публикации с два или повече маркера наведнъж:
SELECT *
FROM posts
WHERE MATCH(tags) AGAINST('+mma +ufc')
което също е възможно, но по-малко ефективно с нормализиран дизайн.
(Не забравяйте да коригирате @ft_min_word_len
за индексиране на тагове на 3
символи или по-малко, за да работи това)
Можете да комбинирате и двата дизайна:съхранявайте както таблицата на картата, така и денормализираната колона. Това обаче ще изисква повече поддръжка.
Можете също така да съхраните нормализирания дизайн във вашата база данни и да използвате заявката, която сте предоставили, за да подадете етикетите на Sphinx
или Lucene
.
По този начин можете да копаете история с MySQL
, пълнотекстови маркери за търсене с помощта на Sphinx
, и няма да е необходима допълнителна поддръжка.