sql >> Base de Datos >  >> RDS >> Mysql

¿Realmente vale la pena normalizar la forma Toxi? ( 3FN )

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.