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

Diseño de la base de datos. Duda de optimizacion.

Estas en el tema de Diseño de la base de datos. Duda de optimizacion. en el foro de Bases de Datos General en Foros del Web. Buenas. La cuestión es que tengo a unos usuarios que pueden votar una serie de artículos. Yo quiero que un usuario unicamente pueda votar un ...
  #1 (permalink)  
Antiguo 03/11/2007, 10:15
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 14
Sonrisa Diseño de la base de datos. Duda de optimizacion.

Buenas.

La cuestión es que tengo a unos usuarios que pueden votar una serie de artículos.
Yo quiero que un usuario unicamente pueda votar un mismo artículo una única vez.

Yo he estado haciendo esto mismo anteriormente, pero no me convence para nada el diseño que le he dado en la base de datos.

Hice lo siguiente:
Creé 2 atributos: id_articulo y idUsuario
De este modo si un usuario votaba un artículo, yo insertaba el id del artículo y el id del usuario en la tabla.
Si votaba otro artículo, VOLVÍA a insertar el mismo id de usurio, y luego insertaba otro id de artículo.
De este modo si quería que no votaran un mismo artículo 2 veces hacía una busqueda en la tabla por id de usuario y si no encontraba el id de artículo que estaba intentando votar en este momento, entonces se insertaba su voto, de lo contrario, salía un mensaje dicnedo que ya había votado.

Bueno, perdonaz por la parrafada, pero es para no dejar ningún cabo suelto.

La cuestión principal está en que me gustaría que no tuviera que insertar 100 veces el id de usuario en la tabla si ha votado 100 artículos diferentes.
Se me había ocurrido separar los artículos que vote por comas, y luego buscar el número dentro del campo de texto o lo que fuera, pero como no estoy muy seguro aún, he preferido preguntar a los expertos (vosotros), para que me aconsejeis sobre que acciones se toman en estas situaciones.

Gracias por todo.
  #2 (permalink)  
Antiguo 03/11/2007, 11:47
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Re: Diseño de la base de datos. Duda de optimizacion.

¿Ya intentaste crear esos 2 campos llaves concatenados? Al hacer una llave con esos campos concatenados, no tendrías que buscar si ya votó por determinado artículo porque cuando trate de dar su voto, te va a mandar un error la tabla diciendo que dicho ese usuario ya votó por el mismo.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 03/11/2007, 15:34
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Re: Diseño de la base de datos. Duda de optimizacion.

El diseño que tienes es el más correcto desde el punto de vista relacional. Lo malo que veo es que haces las validaciones por fuera del motor. Simplemente con declarar ambas columnas como llave primaria te ahorrarás el hacer búsquedas para saber si ya había votado por ese artículo.

Créeme, meter todo separado por comas es una mala idea.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #4 (permalink)  
Antiguo 03/11/2007, 15:53
Avatar de IMAC/  
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 14
Re: Diseño de la base de datos. Duda de optimizacion.

Pues muchas gracias por la respuesta a los dos, BrujoNic, Mithrandir

Aún nunca probé a hacer una clave compuesta, pero creo que es hora de aprender

Saludos y gracias por responder tan rápidamente.
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 03:44.