Estoy trabajando en una aplicación de PHP que tiene varios objetos que se pueden comentar. Cada comentario puede votarse, y los usuarios pueden darle +1 o -1 (como Digg o Reddit). En este momento estoy planeando tener una tabla de 'votos' que contenga user_id y su información de voto, que parece funcionar bien.Práctica recomendada para la estructura de base de datos de votación de comentarios
El problema es que cada objeto tiene cientos de comentarios que se almacenan en una tabla de comentarios separada. Después de cargar los comentarios, tengo que contar los votos y luego verificar cada voto individualmente contra el usuario para asegurarme de que solo puedan votar una vez. Esto funciona, pero solo parece realmente una base de datos intensiva: muchas consultas solo por los comentarios.
¿Existe un método más simple de hacer esto que sea menos intensivo en DB? ¿Mi estructura de base de datos actual es la mejor opción?
Para ser más claro sobre la estructura de base de datos actual:
Comentarios de mesa:
- user_id
- object_id
- total_votes
mesa de Votos:
- comment_id
- user_id
- voto
Fin Objetivo:
- Permitir al usuario voto una sola vez en cada comentario con menos # de consultas MySQL (cada objeto tiene múltiples comentarios)
Eso ayuda mucho en realidad, ¡gracias! Esa idea de tener dos llaves principales ni siquiera se me pasó por la cabeza. – mdolon