Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Vale mesmo a pena normalizar o modo Toxi? (3NF)


Ter todas as tags em registros diferentes (normalizados) significa que você poderá renomear as tags com mais facilidade, caso seja necessário, e acompanhar o histórico do nome da tag.

SO , por exemplo, renomeado para SQL Server tags relacionadas pelo menos três vezes (mssql -> sqlserver -> sql-server ).

Ter todas as tags em um registro (desnormalizado) significa que você pode indexar esta coluna com um FULLTEXT indexe e pesquise postagens com duas ou mais tags ao mesmo tempo:
SELECT  *
FROM    posts
WHERE   MATCH(tags) AGAINST('+mma +ufc')

o que também é possível, mas menos eficiente com design normalizado.

(Não se esqueça de ajustar @ft_min_word_len para indexar tags de 3 caracteres ou menos para que isso funcione)

Você pode combinar os dois designs:armazene a tabela de mapas e a coluna desnormalizada. Isso exigirá mais manutenção, no entanto.

Você também pode armazenar o design normalizado em seu banco de dados e usar a consulta fornecida para alimentar as tags para Sphinx ou Lucene .

Dessa forma, você pode pesquisar o histórico com MySQL , pesquisas de tags de texto completo usando Sphinx , e nenhuma manutenção extra será necessária.