Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/03/2016, 18:19
Avatar de gnzsoloyo
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, 5 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