Mysql
 sql >> Database >  >> RDS >> Mysql

Vale davvero la pena normalizzare il modo Toxi? ( 3NF )

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.