Principales respuestas
Consulta de Modelar tablas de grupos

Pregunta
-
Hola.
En un SS2012.
Tengo tabla Estudiantes:
ID_Estudiante INT
Tabla Grupo:
Id_Grupo INT
Pues bien, debo agrupar Estudiantes en Grupos, asi que haria lo siguiente:
Tabla Agrupaciones
Id_Agrupacion INT
Id_Grupo INT
Id_Estudiante INT
Mi problema es que existe la necesidad de agrupar también grupos, ejemplo:
Estudiante 1 pertenece al grupo 1
Estudiante 2 pertenece al grupo 2
Grupo 1 y 2 pertenece al grupo 3.
Como podría modelar aquello.
Saludos.
DBA SQL Server Santiago/Chile
Respuestas
-
Hola CMAPM:
Tabla Estudiantes
Id int
Id_grupo int
Tabla grupos
Id_Grupo int
Padre int
-----
Cada estudiante tiene exclusivamente un grupo.
Cada grupo tiene un grupo al cual pertenece. De manera que con padre te montas una estructura jerárquica de padre/hijo
Un saludo
- Marcado como respuesta Pablo RubioModerator lunes, 20 de agosto de 2018 16:30
-
Hola CMAPM:
Supongo que eso no varía mucho el escenario. Desde mi opinión la manera más fácil de implementar.
create table estu (id_estudiante int identity (1,1), nombre varchar(10)) go create table grupo (id_grupo int, padre int, nombre varchar(10)) go create table agrupa (id_agrupa int identity(1,1), id_grupo int, id_estudiante int) go insert into estu (nombre) values ('a'),('b'),('c'),('d'),('e'),('f'),('g'),('h'),('i'),('j') go insert into grupo (id_grupo, padre, nombre) values (0, null, 'raiz'), (1, 0, 'Deportes'), (2, 0, 'Prensa'), (3, 1, 'Equipo'), (4, 1, 'individ.'), (5, 3, 'Fútbol'), (6, 3, 'Baloncesto'), (7, 4, 'Atletismo'), (6, 4, 'Natación') go insert into agrupa (id_grupo, id_estudiante) values (5,1),(5,2),(7,1),(2,3) go select * from estu e inner join agrupa a on e.id_estudiante = a.id_estudiante inner join grupo g on a.id_grupo = g.id_grupo order by e.nombre
La tabla grupo, tiene un padre y utilizas la tabla de agrupaciones. Pero la jerarquía la mantienes con los grupos.
Un saludo
- Marcado como respuesta CMAPM martes, 21 de agosto de 2018 12:51
Todas las respuestas
-
Hola CMAPM:
Tabla Estudiantes
Id int
Id_grupo int
Tabla grupos
Id_Grupo int
Padre int
-----
Cada estudiante tiene exclusivamente un grupo.
Cada grupo tiene un grupo al cual pertenece. De manera que con padre te montas una estructura jerárquica de padre/hijo
Un saludo
- Marcado como respuesta Pablo RubioModerator lunes, 20 de agosto de 2018 16:30
-
Hola Javi.
La tabla Grupo NO contiene los estudiantes, la tabla grupo es una tabla para dar un nombre al grupo, ejemplo:
Grupo1 Deportes
Grupo2 Prensa
Entonces debe exisir la tabla llamada Agrupaciones, pues es ahi donde se le indica que estudiantes componen ciertos grupos, cada estudiantes puede tener N grupos y no es exclusivo de 1 solo grupo.
Saludos Cordiales.
DBA SQL Server Santiago/Chile
-
Hola CMAPM:
Supongo que eso no varía mucho el escenario. Desde mi opinión la manera más fácil de implementar.
create table estu (id_estudiante int identity (1,1), nombre varchar(10)) go create table grupo (id_grupo int, padre int, nombre varchar(10)) go create table agrupa (id_agrupa int identity(1,1), id_grupo int, id_estudiante int) go insert into estu (nombre) values ('a'),('b'),('c'),('d'),('e'),('f'),('g'),('h'),('i'),('j') go insert into grupo (id_grupo, padre, nombre) values (0, null, 'raiz'), (1, 0, 'Deportes'), (2, 0, 'Prensa'), (3, 1, 'Equipo'), (4, 1, 'individ.'), (5, 3, 'Fútbol'), (6, 3, 'Baloncesto'), (7, 4, 'Atletismo'), (6, 4, 'Natación') go insert into agrupa (id_grupo, id_estudiante) values (5,1),(5,2),(7,1),(2,3) go select * from estu e inner join agrupa a on e.id_estudiante = a.id_estudiante inner join grupo g on a.id_grupo = g.id_grupo order by e.nombre
La tabla grupo, tiene un padre y utilizas la tabla de agrupaciones. Pero la jerarquía la mantienes con los grupos.
Un saludo
- Marcado como respuesta CMAPM martes, 21 de agosto de 2018 12:51