Avere tutti i tag in record diversi (normalizzati) significa che sarai in grado di rinominare i tag più facilmente in caso di necessità e tenere traccia della cronologia dei nomi dei tag.
SO , ad esempio, rinominato SQL Server tag correlati almeno tre volte (mssql -> sqlserver -> sql-server ).
Avere tutti i tag in un record (denormalizzato) significa che puoi indicizzare questa colonna con un FULLTEXT indicizza e cerca post con due o più tag contemporaneamente:
SELECT *
FROM posts
WHERE MATCH(tags) AGAINST('+mma +ufc')
anche questo è possibile ma meno efficiente con il design normalizzato.
(Non dimenticare di modificare @ft_min_word_len per indicizzare i tag di 3 caratteri o meno affinché funzioni)
Puoi combinare entrambi i design:memorizza sia la tabella della mappa che la colonna denormalizzata. Tuttavia, ciò richiederà più manutenzione.
Puoi anche memorizzare il design normalizzato nel tuo database e utilizzare la query che hai fornito per inviare i tag a Sphinx o Lucene .
In questo modo, puoi scavare nella cronologia con MySQL , ricerche di tag fulltext utilizzando Sphinx e non sarà necessaria alcuna manutenzione aggiuntiva.