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

Thiết kế cơ sở dữ liệu cho các ứng dụng sử dụng thẻ bắt đầu bằng #

Tôi khuyên bạn nên sử dụng mối quan hệ nhiều-nhiều điển hình giữa thông điệp và thẻ.

Điều đó có nghĩa là bạn cần 3 bảng.

  • Messages (các cột Id , UserIdContent )
  • Tags (các cột IdTagName )
  • TagMessageRelations (các cột:MessageIdTagId - để tạo kết nối giữa tin nhắn và thẻ - thông qua các khóa ngoại trỏ đến Messages.Id / Tags.Id )

Bằng cách đó, bạn không lưu trữ một thẻ nhiều lần mà chỉ tạo một mối quan hệ mới với một thư (tất nhiên là nếu thẻ đó đã tồn tại trong bảng thẻ).

Bằng cách này, bạn có thể

  • dễ dàng đếm có bao nhiêu thẻ có (SELECT COUNT(*) FROM Tags )
  • chỉ lưu mỗi thẻ một lần và tìm kiếm các thẻ có thể được lập chỉ mục dễ dàng
  • hoặc đếm số lần một thẻ nhất định đã được sử dụng mỗi người dùng - ví dụ:

SELECT COUNT(*) FROM Tags INNER JOIN TagMessageRelations ON Tags.Id = TagMessageRelations.TagId INNER JOIN Messages ON TagMessageRelations.MessageId = Messages.Id GROUP BY Messages.UserId




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqldump với tạo dòng cơ sở dữ liệu

  2. Chỉ mục tháng của JavaScript Date Object bắt đầu bằng 0

  3. Ghi đè các bảng MySQL bằng AWS Glue

  4. MYSQL - Chèn Nếu Bảng trống

  5. Cột không xác định trong 'danh sách trường' khi trình giữ chỗ của câu lệnh đã chuẩn bị nằm trong truy vấn con