Tener todas las etiquetas en diferentes registros (normalizados) significa que podrá cambiar el nombre de las etiquetas más fácilmente si surge la necesidad y realizar un seguimiento del historial de nombres de etiquetas.
SO , por ejemplo, renombrado SQL Server etiquetas relacionadas al menos tres veces (mssql -> sqlserver -> sql-server ).
Tener todas las etiquetas en un registro (desnormalizado) significa que puede indexar esta columna con un FULLTEXT indexe y busque publicaciones que tengan dos o más etiquetas a la vez:
SELECT *
FROM posts
WHERE MATCH(tags) AGAINST('+mma +ufc')
que también es posible pero menos eficiente con el diseño normalizado.
(No olvide ajustar @ft_min_word_len para indexar etiquetas de 3 caracteres o menos para que esto funcione)
Puede combinar ambos diseños:almacene tanto la tabla del mapa como la columna desnormalizada. Sin embargo, esto requerirá más mantenimiento.
También puede almacenar el diseño normalizado en su base de datos y usar la consulta que proporcionó para enviar las etiquetas a Sphinx o Lucene .
De esta manera, puede hacer una búsqueda histórica con MySQL , búsquedas de etiquetas de texto completo usando Sphinx , y no se requerirá mantenimiento adicional.