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

Cách tạo hệ thống like bạn bè trên Facebook trong php với mysql

Danh sách bạn bè của người dùng 123:

SELECT u.* FROM users u INNER JOIN friend_requests f ON f.user_id = u.id WHERE f.user_id = 123 AND status = 'accepted';

Người dùng 123 là người hâm mộ của những người dùng này:

SELECT u.* FROM users u INNER JOIN friend_requests f ON f.user_id = u.id WHERE f.friend_id = 123 AND status = 'waiting';

Đừng quên thêm chỉ mục trên cột trạng thái.

Ngoài ra, tôi không chắc một bảng như thế này là lý tưởng cho việc này.

CHỈNH SỬA:

Tôi có thể sẽ chọn một lược đồ như thế này:

friend_request
    request_from (foreign key to users.user_id)
    request_to (foreign key to users.user_id)
    resolved (boolean 1 or 0, default is 0)

friend_xref
    friend (foreign key to users.user_id)
    is_friend_with (foreign key to users_user_id)

fan_xref
    user (foreign key to users.user_id)
    is_fan_of (foreign key to users.user_id)

Khi ai đó đưa ra yêu cầu kết bạn, hãy thêm hàng mới vào bảng friend_request. Khi người nhận yêu cầu chọn:

  • để chấp nhận yêu cầu:thêm hàng mới vào friend_xref và đặt đã giải quyết thành 1 trong bảng friend_request
  • để từ chối yêu cầu:thêm hàng mới vào fan_xref và đặt đã giải quyết thành 1 trong bảng friend_request

Nhưng sẽ tốt hơn nếu bạn hỏi điều này trong mysql, database-design hoặc một số thẻ tương tự để nhận được câu trả lời tốt nhất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tính năng tìm kiếm với nhiều tiêu chí - PHP / MySQL

  2. SUBDATE () so với DATE_SUB () trong MySQL:Sự khác biệt là gì?

  3. Hệ thống người dùng - Nhiều vai trò trong Cơ sở dữ liệu MySQL

  4. Làm cách nào để sử dụng orchestral / tenanti trong Laravel 5 để xây dựng một ứng dụng nhiều người thuê với nhiều cơ sở dữ liệu?

  5. Đặt hàng theo DESC nổi bật không hoạt động cho một biến tùy chỉnh