Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nó có thực sự đáng để bình thường hóa cách Toxi? (3NF)

Có tất cả các thẻ trong các bản ghi khác nhau (chuẩn hóa) có nghĩa là bạn sẽ có thể đổi tên các thẻ dễ dàng hơn nếu có nhu cầu và theo dõi lịch sử tên thẻ.

SO , chẳng hạn, đã đổi tên SQL Server thẻ liên quan ít nhất ba lần (mssql -> sqlserver -> sql-server ).

Có tất cả các thẻ trong một bản ghi (không chuẩn hóa) có nghĩa là bạn có thể lập chỉ mục cột này bằng FULLTEXT lập chỉ mục và tìm kiếm các bài đăng có hai hoặc nhiều thẻ cùng một lúc:

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

điều này cũng có thể thực hiện được nhưng kém hiệu quả hơn với thiết kế chuẩn hóa.

(Đừng quên điều chỉnh @ft_min_word_len để lập chỉ mục các thẻ của 3 ký tự trở xuống để điều này hoạt động)

Bạn có thể kết hợp cả hai thiết kế:lưu trữ cả bảng bản đồ và cột không chuẩn hóa. Tuy nhiên, điều này sẽ yêu cầu bảo trì nhiều hơn.

Bạn cũng có thể lưu trữ thiết kế chuẩn hóa trong cơ sở dữ liệu của mình và sử dụng truy vấn bạn đã cung cấp để cấp các thẻ cho Sphinx hoặc Lucene .

Bằng cách này, bạn có thể đào lịch sử với MySQL , tìm kiếm thẻ đầy đủ văn bản bằng cách sử dụng Sphinx và không cần bảo trì thêm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để thực hiện chèn và tải lên nhiều hình ảnh trong PHP?

  2. Lỗi toàn vẹn kỳ lạ trên MySQL:# 1452

  3. Tạo một ứng dụng web có thể hoạt động ngoại tuyến, lưu trữ dữ liệu và sau đó đồng bộ hóa nó với MySQL từ xa khi trực tuyến?

  4. Có sự khác biệt giữa hai truy vấn này không?

  5. Lệnh tùy chỉnh MySQL