Tôi đang làm việc trên một ứng dụng PHP có một số đối tượng có thể được nhận xét. Mỗi bình luận có thể được bình chọn, với người dùng có thể cho nó +1 hoặc -1 (như Digg hoặc Reddit). Ngay bây giờ tôi đang có kế hoạch có một bảng 'phiếu' đã mang user_id và thông tin bỏ phiếu của họ, mà dường như làm việc tốt.Thực hành tốt nhất cho cấu trúc cơ sở dữ liệu bình chọn bỏ phiếu
Vấn đề là mỗi đối tượng có hàng trăm nhận xét được lưu trữ trong một bảng nhận xét riêng biệt. Sau khi tôi tải các bình luận, tôi phải kiểm phiếu và sau đó kiểm tra từng cuộc bỏ phiếu với người dùng để đảm bảo họ chỉ có thể bình chọn một lần. Điều này hoạt động nhưng dường như thực sự là cơ sở dữ liệu chuyên sâu - rất nhiều truy vấn chỉ cho các bình luận.
Có phương pháp đơn giản hơn để làm điều này ít tốn kém hơn không? Cấu trúc cơ sở dữ liệu hiện tại của tôi có phải là cách tốt nhất để đi không?
Để được rõ ràng hơn về cấu trúc cơ sở dữ liệu hiện hành:
Comments bảng:
- user_id
- object_id
- TOTAL_VOTES
Votes bảng:
- comment_id
- user_id
- phiếu
End Mục tiêu:
- Cho phép người dùng bỏ phiếu chỉ một lần trên mỗi comment với ít nhất # truy vấn MySQL (mỗi đối tượng có nhiều ý kiến)
Điều đó giúp ích rất nhiều, cảm ơn! Ý nghĩ về việc có hai khóa chính thậm chí không vượt qua tâm trí của tôi .. – mdolon