sql >> Database >  >> RDS >> Mysql

Is het echt de moeite waard om de Toxi-manier te normaliseren? ( 3NF )

Als alle tags in verschillende records staan ​​(genormaliseerd), kunt u de tags gemakkelijker hernoemen als dat nodig mocht zijn en de geschiedenis van de tagnaam volgen.

SO , bijvoorbeeld hernoemd tot SQL Server gerelateerde tags minstens driemaal (mssql -> sqlserver -> sql-server ).

Het hebben van alle tags in één record (gedenormaliseerd) betekent dat u deze kolom kunt indexeren met een FULLTEXT indexeer en zoek naar berichten met twee of meer tags tegelijk:

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

wat ook mogelijk is, maar minder efficiënt met een genormaliseerd ontwerp.

(Vergeet niet om @ft_min_word_len aan te passen om tags van 3 . te indexeren tekens of minder om dit te laten werken)

U kunt beide ontwerpen combineren:sla zowel de kaarttabel als de gedenormaliseerde kolom op. Dit vereist echter meer onderhoud.

U kunt het genormaliseerde ontwerp ook in uw database opslaan en de door u opgegeven zoekopdracht gebruiken om de tags aan Sphinx te geven. of Lucene .

Op deze manier kunt u geschiedenis graven met MySQL , fulltext-tag zoeken met Sphinx , en er is geen extra onderhoud nodig.



  1. Hoe de versie van de MySQL-engine in ClearDB bijwerken?

  2. het nieuwe rij-ID ophalen van pySpark SQL schrijven naar externe mysql db (JDBC)

  3. Is het een goede gewoonte om ContentProvider te gebruiken voor databasebewerkingen?

  4. ORD() Voorbeelden – MySQL