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

Er det virkelig det værd at normalisere Toxi-måden? (3NF)

At have alle tags i forskellige poster (normaliseret) betyder, at du lettere kan omdøbe taggene, hvis behovet skulle opstå, og spore tagnavnehistorikken.

SO , for eksempel omdøbt SQL Server relaterede tags mindst tre gange (mssql -> sqlserver -> sql-server ).

At have alle tags i én post (denormaliseret) betyder, at du kan indeksere denne kolonne med en FULLTEXT indekser og søg efter indlæg med to eller flere tags på én gang:

SELECT  *
FROM    posts
WHERE   MATCH(tags) AGAINST('+mma +ufc')

hvilket også er muligt, men mindre effektivt med normaliseret design.

(Glem ikke at justere @ft_min_word_len for at indeksere tags af 3 tegn eller færre for at dette virker)

Du kan kombinere begge designs:gem både korttabellen og den denormaliserede kolonne. Dette vil dog kræve mere vedligeholdelse.

Du kan også gemme det normaliserede design i din database og bruge den forespørgsel, du har angivet, til at sende taggene til Sphinx eller Lucene .

På denne måde kan du grave historie med MySQL , fuldtekst-tag-søgninger ved hjælp af Sphinx , og der kræves ingen ekstra vedligeholdelse.



  1. GROUP_CONCAT kommaseparator - MySQL

  2. Tips til migrering fra MySQL-replikering til MySQL Galera Cluster 4.0

  3. Hvordan gemmer man telefonnumre på MySQL-databaser?

  4. Hvordan kan jeg udskrive den SQL-forespørgsel, der udføres efter Perls DBI udfylder pladsholderne?