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

Bảng bạn bè trong MySQL

Giả sử tất cả bạn bè của bạn cũng ở trong bảng người dùng, bạn sẽ cần một bảng bạn bè xác định mối quan hệ một-nhiều đơn giản - liên kết bảng người dùng lại với chính nó. Vì vậy,

User Table
UserID int identity not null
[other attribute fields]

Friends Table
UserIDLink1 int
UserIDLink2 int 
[other attribute field]

Trong đó cả UserIDLink1 và UserIDLink2 đều là khóa ngoại trên bảng Người dùng.

Ví dụ:nếu tôi có ba người dùng

1 Joe
2 Bill
3 Jane

và Joe và Jane là bạn thì bảng Bạn bè sẽ chứa một hàng duy nhất

1 3

Phần trên mặc nhiên giả định rằng nếu A là bạn của B thì B là bạn của A - nếu không phải trường hợp này, bạn có thể muốn đổi tên UserIDLink1 và UserIDLink2 thành UserID và FriendID hoặc tương tự - trong trường hợp đó bạn sẽ cũng có gấp đôi bản ghi.

Ngoài ra đối với cấu hình hai chiều (A là bạn của B nếu B là bạn của A), bạn nên thiết lập các chỉ mục trên bảng Friends cho (UserIDLink1, UserIDLink2) và (UserIDLink2, UserIDLink1) để đảm bảo quyền truy cập luôn hiệu quả nếu chúng tôi đang tìm kiếm bạn bè của joe hoặc bạn bè của jane (nếu bạn không thiết lập chỉ mục thứ hai thì truy vấn đầu tiên sẽ là tra cứu chỉ mục hiệu quả nhưng truy vấn thứ hai sẽ yêu cầu quét toàn bộ bảng).

Nếu các liên kết của bạn không phải là hai chiều, điều này không cần thiết để tìm bạn của A là ai, nhưng có lẽ bạn vẫn sẽ yêu cầu nó nhiều nhất vì bạn cũng có thể cần tìm xem B là bạn của ai.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cardinality trong MySQL là gì?

  2. SQL - in nhiều từ giữa mọi cột với nhiều điều kiện

  3. Đã vượt quá thời gian chờ của Fixing Lock; thử khởi động lại giao dịch cho một 'bảng Mysql bị kẹt?

  4. MySQL chuyển đổi Bằng, Phút, Giây sang Độ thập phân

  5. Mysql giải pháp cho các chức năng cửa sổ