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

Duda diseño de base de datos

Estas en el tema de Duda diseño de base de datos en el foro de Mysql en Foros del Web. Hola, estoy trabajando en un pequeño proyecto y tengo una duda en cuanto al diseño de una base de datos, el caso es el siguiente: ...
  #1 (permalink)  
Antiguo 01/05/2011, 19:15
Avatar de rampaign  
Fecha de Ingreso: febrero-2010
Ubicación: Lima, Peru, Peru
Mensajes: 12
Antigüedad: 14 años, 2 meses
Puntos: 3
Pregunta Duda diseño de base de datos

Hola, estoy trabajando en un pequeño proyecto y tengo una duda en cuanto al diseño de una base de datos, el caso es el siguiente:

Tengo la lista de carreras profesionales de una universidad, con un codigo que identifique cada una, tambien tengo una lista de los cursos que se dictan en esa universidad,cada uno tambien con un codigo identificador, y otros datos, como el ciclo a partir del cual se puede llevar ese curso, una descripcion, etc.

El punto es que hay algunos cursos que todas las carreras llevan, otros que 3 o 4 carreras llevan, y otros mas que solo pueden ser llevados por una unica carrera.

Mi pregunta es, ¿como puedo guardar esa informacion en una base de datos? creo que se resume en relacionar los id's de las carreras con los id's de los cursos que pueden llevar, pero no estoy muy seguro de como hacer eso, considerando que el numero de relaciones entre esos 2 puede ser 1,2,3 o hasta el numero maximo de carreras que ofrece la universidad. Pense en tener 3 tablas: carreras, cursos, y una tercera tabla que guarde las relaciones: id_curso - id_carrera_que_lo_lleva, al final quedaria algo como:

id_curso1 - id_carrera_que_lo_lleva1
id_curso1 - id_carrera_que_lo_lleva2
id_curso1 - id_carrera_que_lo_lleva3
id_curso1 - id_carrera_que_lo_lleva4
id_curso2 - id_carrera_que_lo_lleva1
id_curso2 - id_carrera_que_lo_lleva2
id_curso3 - id_carrera_que_lo_lleva1
id_curso4 - id_carrera_que_lo_lleva1
(...)

seria repetir muchos datos?, o al menos lo siento asi

La verdad recien estoy empezando a manejar bases de datos mysql por eso la duda que quiza sea simple xD
Espero que alguien pueda ayudarme, gracias de antemano.

Saludos
  #2 (permalink)  
Antiguo 02/05/2011, 06:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Duda diseño de base de datos

Eso es una relación N:M y se soluciona con una tercera tabla tal y como correctamente has intuido....

La tercera tabla solo guarda los identificadores relacionados entre si, "idRel" podrias opcionalmente agregar un id de la relacion para simplificar la llave primaria y un indice unico sobre idCarrera,idCurso.

idCarrera puede aparecer N veces en la tabla RelCarreraCurso y idCurso puede aparecer M veces, pero un par (idCarrera,idCurso)=(X,Y) solo puede aparecer una vez...

Eso minimiza la info repetida que guardas, puesto que solo prepites ids...

No uses como id el codigo oficial puesto que puede ser muy largo lo mejor es tener un id Integer Auto inc, y controlas la repeticion de codigos con un indice unico...

Si tienes

Carreras
idCarrera Codigo....... Nombre...
1..............FyLCG254...CarreraFyLCG254...
2..............FyLCG255...CarreraFyLCG255...
....

Cursos
idCurso...Codigo.........Nombre...
1.............CFyLCG257..CursoCFyLCG257...
2.............CFyLCG258..CursoCFyLCG258...
...

RelCarreraCurso
diRel...IdCarrera...idCuros
1...............1...............1
2...............1...............2
3...............2...............1
4...............2...............2
...

La info guardada de mas es mínima.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 02/05/2011 a las 06:24
  #3 (permalink)  
Antiguo 02/05/2011, 07:50
 
Fecha de Ingreso: abril-2011
Mensajes: 3
Antigüedad: 13 años
Puntos: 0
Respuesta: Duda diseño de base de datos

Bueno, se soluciona con una tercera tabla, que almacena los identificadores (id) de las tablas carreras y cursos; (almacena las relaciones). Como magistralmente lo ha explicado el forista Quimfv. Si bien existe una redundancia de datos; esta es mínima y aceptable en favor de la integridad relacional del modelo.
  #4 (permalink)  
Antiguo 02/05/2011, 19:38
Avatar de rampaign  
Fecha de Ingreso: febrero-2010
Ubicación: Lima, Peru, Peru
Mensajes: 12
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Duda diseño de base de datos

Tuve un buen razonamiento entonces xD
Gracias por las respuestas, implementare una tabla asi y vere que tal funciona.
Saludos.

Etiquetas: diseño
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 23:16.