Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Base de Datos para Foro con Respuestas y Votos

Estas en el tema de Base de Datos para Foro con Respuestas y Votos en el foro de Mysql en Foros del Web. Hola todos. Estoy desarrollando un foro para un grupo de conversación en el que las respuestas podrán ser votadas (como stackoverflow), y no estoy seguro ...
  #1 (permalink)  
Antiguo 13/01/2014, 17:01
Avatar de stormearth  
Fecha de Ingreso: octubre-2013
Ubicación: Quito
Mensajes: 68
Antigüedad: 10 años, 6 meses
Puntos: 2
Base de Datos para Foro con Respuestas y Votos

Hola todos. Estoy desarrollando un foro para un grupo de conversación en el que las respuestas podrán ser votadas (como stackoverflow), y no estoy seguro si el diseño de la base de datos que he planteado está bien.

Tablas:

Perfil: ID, Nombre, mail, descripción, puntos.

Perfil_Posts: ID, fecha, FK(foreign key) Posts_Tema.

Posts_Tema: ID, fecha, texto, Votos Positivos, Votos Negativos, FK Votos_Post, FK Respuesta_Post.

Votos_Post: ID, fecha, tipo de Voto (+1,-1), FK Perfil.

Tema: ID, nombre, fecha_creación, descripción, activo, FK Posts_Tema.

Respuestas_Post: fecha, texto, FK Perfil, FK Votos_Respuesta

Votos_Respuesta: ID, fecha, tipo de Voto, FK Perfil.

Entonces,
- Creo una tabla Perfil_Posts para no estar haciendo un Query largo cada vez que necesite encontrar los Posts hechos por el Usuario.
- Cada Tema tiene su tabla Posts_Tema para poder hacer querys más rápidos (otra opción sería una sola tabla Post con posts que tengan FK Tema?, pero creo que sería lento manejar una tabla con todos los Posts del sitio web..)
- Cada Post tiene relación con una tabla Votos_Post que contiene los votos que ha recibido el post como +1 o -1: asi cuando necesito el puntaje total del post hago un query SUM.
- Cada Post tiene relación con una tabla Respuestas_Post y ésta a su vez tiene una tabla Votos_Respuesta que contiene los votos que ha obtenido la respuesta al Post.
- Guardo la cantidad de Votos Positivos y Votos Negativos en la tabla Post porque tal vez sea muy lento hacer una query a la tabla Votos_Posts que busque y cuente todos los votos con "1" o "-1" cada vez que necesite encontrar la cantidad de votos positivos de un Post.

Primero, quisiera saber su opinión pues estoy seguro que tienen más experiencia con bases de datos que yo.

Segundo, tengo una duda específica: ¿Cómo me aseguro que un usuario solo vote una vez por cada Post/Respuesta?. Mi idea es revisar si ya existe el ID del usuario guardado en la columna FK_Perfil de las tablas Votos_Post y Votos_Respuesta. Pero luego surge el problema de si un usuario ya voto positivo pero quiere cambiar su voto a negativo... tengo algunas ideas pero no sé si sean lo mejor.

Como está la base de datos, cada vez que se crea un Post o una Respuesta, se crean dos tablas: la tabla Post_Tema y la tabla Votos_Post o la tabla Respuesta_Post y la tabla Votos_Respuesta. ¿Esto es correcto?.

De antemano, muchas gracias por cualquier sugerencia. Saludos

Última edición por stormearth; 13/01/2014 a las 17:10 Razón: estilo

Etiquetas: comunidad, tablas, temas, votos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:13.