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

Duda conceptual de relaciones entre tablas

Estas en el tema de Duda conceptual de relaciones entre tablas en el foro de SQL Server en Foros del Web. Buenos días, Me he encontrado con una duda que no sé cómo resolver. Tengo cuatro tablas T1, T2, T3 y T4. Cada registro de cada ...
  #1 (permalink)  
Antiguo 09/10/2014, 04:35
 
Fecha de Ingreso: mayo-2008
Mensajes: 2
Antigüedad: 15 años, 11 meses
Puntos: 0
Pregunta Duda conceptual de relaciones entre tablas

Buenos días,

Me he encontrado con una duda que no sé cómo resolver.

Tengo cuatro tablas T1, T2, T3 y T4. Cada registro de cada tabla puede tener varios documentos en la tabla D1.

Para resolver esto veo dos opciones:

Solución 1:

Relacionar cada tabla con los documentos directamente creando tablas intermedias:

- T1 ->T1_D1 -> D1
- T2 ->T2_D1 -> D1
- T3 ->T3_D1 -> D1
- T4 ->T4_D1 -> D1

El problema de esta solución es que salen muchas tablas intermedias.

Solución 2:

La siguiente solución que me he encontrado hacer que la tabla de documentos (D1) lo controle todo.

De esta forma la tabla D1 tendrá los siguientes campos:

- ID
- TargetID
- Document

En este contexto para buscar todos los documentos de un registro de la T1 lo que tendría que hacer es buscar todos los que su TargetID empiece por T1 mas el identificador de la tabla, por ejemplo 40.

Quedaría así:

SELECT * FROM D1 WHERE TargetID Like "T140%"


De esta forma me ahorro las 4 tablas intermedias, pero no lo veo del todo claro.

Si alguien tiene una solución mejor que me la explique por favor, que me estoy volviendo un poco loco dándole vueltas a la cabeza.

Saludos y muchisimas gracias.
  #2 (permalink)  
Antiguo 09/10/2014, 06:01
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, 4 meses
Puntos: 2658
Respuesta: Duda conceptual de relaciones entre tablas

Estás hablando de "ahorrarte" tablas, cuando lo que debes hacer es establecer cuál es el esquema de entidades que requiere el sistema y partir de alli para definir las que son necesarias.
Da la impresión que estás mirando el modelado de datos de un modo algo algo rudimentario.

¿Por qué no nos explicas qué es lo que estás modelando, en base a qué relaciones?
Será mucho más facil ayudarte si nos explcias la realidad.

No nos hables de T1, T2, T3, etc. Eso no ayuda a definir lo que hay que hacer realmente. Podría ser que en lugar de 4 tablas necesites 37, pero no lo sabemos porque no vemos lo que es.
__________________
¿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 09/10/2014, 06:29
 
Fecha de Ingreso: mayo-2008
Mensajes: 2
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Duda conceptual de relaciones entre tablas

Hola gnzsoloyo,

Te traduzco los nombres de las tablas:

T1: Proyecto
T2: Promotor
T3: Proyecto_Centro (Intermedia entre proyecto y centro)
T4: Proyecto_Centro_Promotor (Intermedia entre proyecto, centro y promotor)


De momento no tengo más tablas que requieran de documento, pero el proyecto puede crecer bastante y aún no sé si en un futuro puedo necesitarlo.

Gracias de nuevo.
  #4 (permalink)  
Antiguo 09/10/2014, 07:16
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, 4 meses
Puntos: 2658
Respuesta: Duda conceptual de relaciones entre tablas

Ok, pero estás dando información incompleta...
¿Un Promotor puede estar relacionado con 0, 1 o N proyectos?
¿Cada proyecto puede estar relacionado con más de un promotor?
¿Un Centro puede tener relacion con 0, 1 o N proyectos?
¿Los proyectos poseen categorizaciones, epecificidades, o bien atributos con el mismo dominio entre ellos?
¿Todos los proyectos tienen los mismos atributos?
¿Hay atributos no compartidos entre dos o más Promotores?

El diseño cambia mucho de acuerdo a la cardinalidad que se define para las relaciones, y las catracterísticas de los proyectos de acuerdo a los atributos planteados en el requerimiento, pueden obligar a diseñar un esquema de herencia.
Los atribuitos y sus dominios definen, entre otras cosas, si se requerirá algún nivel de normalziación, lo que puede crear más tablas.

Como anécdota, en cierto proyecto recibía sólo cinco tablas de datos, de las cuales dos eran paramétricas. Con eso para los ingenieros que diseñaron la toma de datos alcanzaba y sobraba.
Pero al momento de analizar lo que contenían esas tablas de datos, la base necesaria para almacenar esas cinco, implicaba 17 tablas sólo para comenzar. La base completa tenía 58...

Lo que quiero expresar es que una vez que analizas lo que el sistema requiere, al construir la base y normalziarla puede que no sean 3, 5, o 9 tablas. Puedes terminar con muchas más, que no se ven a simple vista, pero se necesitan para cumplir con la funcionalidad.
Y esa parte no se ve hasta que se analizan las entidades.

¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 09/10/2014, 09:41
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Duda conceptual de relaciones entre tablas

Manda el diagrama ENTIDAD-RELACION...
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 16/10/2014, 14:55
Avatar de murdoc92  
Fecha de Ingreso: mayo-2012
Ubicación: Santiago
Mensajes: 58
Antigüedad: 11 años, 11 meses
Puntos: 3
Respuesta: Duda conceptual de relaciones entre tablas

La solución es crear una tabla "Detalle D1".

Las relaciones son así:

- D.D1 tiene un FK de D1

- D.D1 tiene un FK de T1
- D.D1 tiene un FK de T2
- D.D1 tiene un FK de T3
- D.D1 tiene un FK de T4

De esta manera tu tienes distintos D.D1 relacionados a un mismo D1. Y un D.D1 es una combinación de T1, T2, T3 y T4.

Tienes que colocar como clave única la combinación de D1, T1, T2, T3, T4 en D.D1 para prevenir registros duplicados.

Saludos.
Erick Muñoz S.

Etiquetas: relaciones, select, siguiente, tabla, tablas
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 05:37.