Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy naprawdę warto znormalizować sposób Toxi? ( 3NF )

Posiadanie wszystkich tagów w różnych rekordach (znormalizowanych) oznacza, że ​​w razie potrzeby będziesz mógł łatwiej zmieniać nazwy tagów i śledzić historię nazw tagów.

SO , na przykład przemianowana na SQL Server powiązane tagi co najmniej trzy razy (mssql -> sqlserver -> sql-server ).

Posiadanie wszystkich tagów w jednym rekordzie (zdenormalizowanym) oznacza, że ​​możesz indeksować tę kolumnę za pomocą FULLTEXT indeksuj i szukaj postów posiadających dwa lub więcej tagów jednocześnie:

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

co jest również możliwe, ale mniej wydajne przy znormalizowanym projekcie.

(Nie zapomnij dostosować @ft_min_word_len do indeksowania tagów 3 znaków lub mniej, aby to zadziałało)

Możesz łączyć oba projekty:przechowywać zarówno tabelę map, jak i zdenormalizowaną kolumnę. Będzie to jednak wymagało większej konserwacji.

Możesz również przechowywać znormalizowany projekt w swojej bazie danych i użyć podanego zapytania, aby przekazać tagi do Sphinx lub Lucene .

W ten sposób możesz kopać historię za pomocą MySQL , pełnotekstowe wyszukiwanie tagów za pomocą Sphinx i nie będą wymagane żadne dodatkowe czynności konserwacyjne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przenoszenie kolumn tekstowych szerokości/długości geograficznej do kolumny typu „punkt”

  2. Błąd Mysql 1452 - Nie można dodać lub zaktualizować wiersza podrzędnego:ograniczenie klucza obcego nie powiodło się

  3. Kolumny CONCAT z elokwentnym Laravel 5

  4. Zwróć ostatni identyfikator (tożsamość) po wstawieniu wiersza VB.NET MySQL

  5. Wyświetl otwarte transakcje w MySQL