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.