Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Basil en 2 Enero 2011, 02:54 am



Título: problema con base de datos
Publicado por: Basil en 2 Enero 2011, 02:54 am
hola, primero que nada feliz año nuevo.
tengo un problema con base de datos porque no entiendo, así que les pido su ayuda POR FAVOR  :-[

bueno tengo dos tablas, una llamada profesor y la otra grupo cuya relación es muchos a muchos, así que tengo la tabla intermedia profesor_grupo, la cosa que no entiendo es la siguiente:

tengo los grupos A1, B1, C1 y D1
y los profesores Fulano, Mengano, Zutano y Perengano

Fulano imparte a los grupos A1, C1 y D1
Mengano imparte a los grupos B1 y D1
Zutano imparte a D1, A1 y B1
y Perengano sólo a B1

mi tabla profesor_grupo quedaría así:

profesor_grupo
_____________
id
id_profesor
id_grupo

y los datos almacenados serían:

id  id_profesor  id_grupo
_____________________
1     1                1
2     2                2
3     3                3
4     4                4

cómo es que sé qué grupos le pertenecen a cada profesor??  :huh:
o eso lo tengo que hacer programando??
NO ENTIENDO  :-(
AYUDA POR FAVOR!!!  :-(


Título: Re: problema con base de datos
Publicado por: marlon_agz en 2 Enero 2011, 07:55 am
En que estas trabajando ??
asi a la rapida en Access se me ocurre algo asi

Código:
Id Profesores A1 B1 C1 D1
2 Fulano          Sí No No
3 Sutano        No No
4 Merengano       Sí No No
5 Pascual        No No

Las Columnas A1 B1 C1 D1 son bolean, en access es si/no, pero en MsSql server son True/False

Espero esto te sirva o de una idea (mejor dicho espero no equivocarme xD )
Salu2


Título: Re: problema con base de datos
Publicado por: Aberroncho en 2 Enero 2011, 19:41 pm
Tal y como lo planteas deberías tener tres tablas +/- así:

Código:

---------------
Tabla: PROFESOR
---------------

ID_PROFESOR   NOMBRE_PROFESOR
-----------   ---------------
P1            Fulano
P2            Mengano
P3            Zutano
P4            Perengano



------------
Tabla: GRUPO
------------

ID_GRUPO   NOMBRE_GRUPO
--------   ------------
G1         Grupo A1
G2         Grupo B1
G3         Grupo C1
G4         Grupo D1



---------------------
Tabla: PROFESOR_GRUPO
---------------------

ID_PROFESOR   ID_GRUPO
-----------   --------
P1            G1
P1            G3
P1            G4
P2            G2
P2            G4
P3            G1
P3            G2
P3            G4
P4            G2


A partir de ahí, cada vez que quieras recuperar a que grupos les da clase un profesor, es tan sencillo como hacer una join de tablas:

Código:

SELECT
       GRUPO.ID_GRUPO
     , GRUPO.NOMBRE_GRUPO
 FROM
       PROFESOR
     , PROFESOR_GRUPO
     , GRUPO
 WHERE
       PROFESOR.NOMBRE_PROFESOR = 'Fulano'
   AND PROFESOR.ID_PROFESOR = PROFESOR_GRUPO.ID_PROFESOR
   AND PROFESOR_GRUPO.ID_GRUPO = GRUPO.ID_GRUPO


Y a partir de aquí, ya es cuestión de que juegues con la consultas para ir obteniendo la información que quieras.

También podrías hacerlo por código. Según como sean las tablas, lo que quieras obtener, la base de datos con la que estés trabajando y el volumen de datos que esperes recuperar, podría incluso ser más rápido.



Título: Re: problema con base de datos
Publicado por: Basil en 3 Enero 2011, 09:02 am
estoy trabajando en sql server y programando en c#  ;D
pero ya entendi :D
muchisimas gracias por su ayuda  ;-)