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

[SOLUCIONADO] ¿Crear una tabla nueva o contar filas?¿Qué opción recomiendan?

Estas en el tema de ¿Crear una tabla nueva o contar filas?¿Qué opción recomiendan? en el foro de Mysql en Foros del Web. Hola, mi pregunta es muy simple. Estoy armando una base de datos donde tengo una tabla "GRUPOS" que tiene otra tabla "USUARIOS". Cada grupo puede ...
  #1 (permalink)  
Antiguo 25/03/2016, 15:53
 
Fecha de Ingreso: febrero-2012
Ubicación: Aca en la Tierra.
Mensajes: 17
Antigüedad: 12 años, 2 meses
Puntos: 0
¿Crear una tabla nueva o contar filas?¿Qué opción recomiendan?

Hola, mi pregunta es muy simple. Estoy armando una base de datos donde tengo una tabla "GRUPOS" que tiene otra tabla "USUARIOS".
Cada grupo puede tener muchos USUARIOS y un USUARIO solo puede pertencer a un grupo. Si yo quisiera mostrar una lista de GRUPOS con la cantidad de usuarios que tienen cada uno tengo que recorrer la tabla de USUARIOS por cada grupo. Si yo hago eso estoy usando tiempo de ejecución.
La otra opción sería poner una columna mas a GRUPOS con el atributo CANTIDAD_USUARIOS. Entonces solo tendría que actualizar ese campo cada vez que un usuario se agrega. Pero tendría mas espacio ocupado.

¿Que tengo que priorizar. El tiempo de ejecución o la cantidad de datos?

Espero que se entienda.. gracias por su atención

Última edición por gnzsoloyo; 25/03/2016 a las 18:14
  #2 (permalink)  
Antiguo 25/03/2016, 18:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿Crear una tabla nueva o contar filas?¿Qué opción recomiendan?

Cita:
Cada grupo puede tener muchos USUARIOS y un USUARIO solo puede pertencer a un grupo.
Eso sólo requiere formalmente que la FK del grupo de pertenencia esté en la tabla USUARIO.
Cita:
Si yo quisiera mostrar una lista de GRUPOS con la cantidad de usuarios que tienen cada uno tengo que recorrer la tabla de USUARIOS por cada grupo.
No tienes nada que recorrer. No entiendo por qué lo dices.
¿Nunca has usar GROUP BY?
Algo tan simple como esto lo puedes encontrar en cualquier tutorial básico:
Código MySQL:
Ver original
  1. SELECT G.grupo_id, G.grupo_nombre, COUNT(U.usuario_id) cantidad
  2. FROM grupo G INNER JOIN usuario U ON G.grupo_id = U.grupo_id
  3. GROUP BY G.grupo_id
No necesitas más que eso...
Cita:
La otra opción sería poner una columna mas a GRUPOS con el atributo CANTIDAD_USUARIOS. Entonces solo tendría que actualizar ese campo cada vez que un usuario se agrega.
Eso se llama "campo calculable" y están prohibidos en las bases de datos relacionales. Se consideran un defecto grave de diseño, y sólo tienen sentido en los DataWarehouse. Un campo calculable sólo se puede usar en tablas históricas, donde a información ya no sufre NINGUNA modificación. Es información "congelada" en el tiempo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 10/04/2016 a las 07:45

Etiquetas: bd, 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 05:38.