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

Diseño relacional de tablas

Estas en el tema de Diseño relacional de tablas en el foro de Bases de Datos General en Foros del Web. Muy buenos días! Estoy diseñando una base de datos y me ha surgido un problema que no consigo resolver. Tengo tres tablas: INCIDENCIA, MODELO, SUBMODELO. ...
  #1 (permalink)  
Antiguo 22/06/2009, 02:59
 
Fecha de Ingreso: diciembre-2008
Mensajes: 16
Antigüedad: 15 años, 5 meses
Puntos: 0
Diseño relacional de tablas

Muy buenos días!

Estoy diseñando una base de datos y me ha surgido un problema que no consigo resolver. Tengo tres tablas: INCIDENCIA, MODELO, SUBMODELO. La tabla INCIDENCIA está relacionada con MODELO con cardinalidad n:n (una incidencia puede contener varios modelos o ninguno, y un modelo varias incidencias o ninguna). A su vez MODELO se relaciona con SUBMODELO también con cardinalidad n:n y finalmente INCIDENCIA también se relaciona con SUBMODELO con n:n. En definitiva, es un triángulo en el que todas las relaciones son n:n. ¿Cómo puedo solucionar este caso?

Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 22/06/2009, 05:29
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, 6 meses
Puntos: 2658
Respuesta: Diseño relacional de tablas

Para que te haya resultado una relación triangular de esas características, lo que está mal definido es el nivel lógico de las entidades. y te está faltando al menos un nivel de desagregación:
Suponiendo que Modelo se trata de modelos de hardware, Submodelo una entidad débil de la misma e Incidencia un tipo de falla (en otro esquema donde incidencias fuesen reclamos de usuarios, seguiría siendo igual), incidencias debería ser una clasificación de fallas posibles y por tanto una entidad fuerte y a su vez una tabla primaria. Lo que estaría faltando es una tabla que relacione ambas, digamos Modelo_Incidencia
A su vez, si lo que existen son Modelos y Submodelos, se puede inferir que cualquier objeto de existencia real pertenece a un Submodelo, con lo que (estamos ya en nivel de clases) podemos inferir la existencia de una jerarquía, o bien que la relación no es entre Incidencia y Modelo sino entre Incidencia y Submodelo.
¿Se entiende la idea?
Para estar seguro del esquema de tablas finales necesitaría saber qué es lo que estás modelando, pero de todos modos, si no te convence lo que te planteo, entonces aplica la regla básica de la transformación de modelo lógico a modelo físico (tablas): Toda relación de cardinalidad N:N entre dos entidades genera una tabla que las relaciona y que contiene las claves primarias de cada entidad como clave primaria de la nueva tabla.
Si no me crees, consigue una herramienta CASE que te permita modelar a nivel lógico, crea las entidades y genera la transformación a tablas y verás que aparecen nuevas tablas con el nombre de la relación N:N. Yo ya lo experimenté con Case Studio hace 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)
  #3 (permalink)  
Antiguo 23/06/2009, 01:00
 
Fecha de Ingreso: diciembre-2008
Mensajes: 16
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Diseño relacional de tablas

Muchas gracias por tu interés y ayuda.

Quizás no aportara todos los detalles necesarios, pero te comento que cualquier objeto de existencia real no tiene por qué pertenecer a un submodelo. Resulta lo siguiente. Cada INCIDENCIA puede afectar a ninguno/alguno o varios MODELOS, además una vez definido un modelo se puede elegir un submodelo, ninguno o varios. Al final he hecho lo siguiente, a ver si te parece que puedo estar en lo correcto o no:

He definido una tabla INCIDENCIA, otra tabla MODELO y otra SUBMODELO. Fruto de las relaciones he creado una tabla MODELO_SUBMODELO que he relacionado con INCIDENCIA y por otro lado he relacionado INCIDENCIA y MODELO mediante una tabla como dices también con la clave primaria de cada una como clave primaria de la nueva tabla. De esta manera consigo una tabla que relaciona INCIDENCIA y MODELO y otra que relaciona INCIDENCIA y MODELO_SUBMODELO, el problema que veo es que si elijo un submodelo hay información redundante en esta tabla...

un saludo
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 10:01.