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

Duda sobre tablas y relaciones

Estas en el tema de Duda sobre tablas y relaciones en el foro de Mysql en Foros del Web. Buenas tardes, estoy teniendo una duda a la hora de confeccionar tablas para la base de datos.. que es mas conveniente en cuanto a velocidad ...
  #1 (permalink)  
Antiguo 22/06/2011, 21:20
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Pregunta Duda sobre tablas y relaciones

Buenas tardes,
estoy teniendo una duda a la hora de confeccionar tablas para la base de datos..
que es mas conveniente en cuanto a velocidad consumo y demás respecto a lo siguiente:

es mejor utilizar
Código MySQL:
Ver original
  1. SELECT COUNT(id) FROM comentarios WHERE post='$post'

o agregar un campo "comentario" en la tabla de los post para e irlo incrementando en 1 por cada comentairo creado a ese post, para luego hacer una consulta del tipo:
Código MySQL:
Ver original
  1. SELECT comentarios FROM post WHERE id='$post'

es un ejemplo simple, pero me sucede muy seguido y nose que es lo mas conveniente. Veo que de esta ultima forma se crean muchas relaciones quizás innecesarias entre las tablas pero me da la sensacion de ahorrar tiempo en las consutas.

que es lo masadecuado?

Gracias,
Saludos
  #2 (permalink)  
Antiguo 23/06/2011, 06:26
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Duda sobre tablas y relaciones

Las relaciones entre tablas ademas de para poder contar los comentarios relacionados sirven para mas cosas...

Es decir la alternativa para contar los comentarios que propones quizas es mas rapida aún que la bbdd no estaria normalizada (se podria aceptar si solo vas a contar comentarios). Pero ademas de contarlos es facil que quieras mostrarlos y es ahi donde vas a necesitar la relación... con lo que no vas a eliminarla.

Guardar una informacion, en tu caso el numero de comentarios, que se puede obtener de la propia base de datos no es bueno ya que ocupa un espació innecesario y pone en riesgo la coherencia de la bbdd, si por lo que sea se actualiza esa info pero no se guarda el comentario, o a la inversa se guarda el comentario y no se actualiza ese campo la base será incoherente.

Otra utilidad que le puedes sacar a la existencia de la relacion se da en el momento del mantenimiento de la bbdd si quieres borrar post antiguos, si declaras ON DELETE CASCADE en la relación, con solo borrar los post te aseguras que se van a borrar los comentarios relacionados....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 27/06/2011, 21:50
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Duda sobre tablas y relaciones

Gracias por tu respuesta quimfv,
me parecio que es mejor hacerlo de usa forma, para evitar hacer actualizaciones al eliminar comentarios y al cargar un nuevo comentario me evito una consulta también.

tengo el siguiente problema si lo hago de esa forma, si yo quiero ordenar los post segun la cantidad de comentarios, antes hacia asi:

Código MySQL:
Ver original
  1. SELECT * FROM posts ORDER BY comentarios DESC

per si ahora la cantidad de comentarios la tengo en otra tabla.. como hago para saber la cantidad de comentarios de cada post y ordenarlos?

Muchas gracias por cualquier sugerencia / ayuda..


Saludos
  #4 (permalink)  
Antiguo 28/06/2011, 00:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Duda sobre tablas y relaciones

Código MySQL:
Ver original
  1. Select post.id,post.post,count(*) as NumComentarios
  2. from post left join comentarios
  3. on post.post=comentarios.idpost
  4. group by post.id,post.post
  5. order by NumComentarios;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: relaciones, tablas
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 01:17.