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

Relación entre tablas

Estas en el tema de Relación entre tablas en el foro de SQL Server en Foros del Web. Buenos días a todos los foristas... espero me puedan ayudar: Para el ejemplo que pongo abajo supongamos que se tienen las tablas Clientes, Facturas, Detalle_Factura, ...
  #1 (permalink)  
Antiguo 11/04/2008, 09:38
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Relación entre tablas

Buenos días a todos los foristas... espero me puedan ayudar:

Para el ejemplo que pongo abajo supongamos que se tienen las tablas Clientes, Facturas, Detalle_Factura, Entidades y Municipios, yo sé que entre estas tablas existen relaciones de llave foranea, pero no tengo conocimiento claro de sobre qué tablas o campos están especificadas.

Describo rápidamente la estructura de las tablas:
Clientes: id_Cliente, Nombre_cliente
Facturas: id_Factura, fk_Cliente, Fecha
Detalle_factura: id_Detalle, fk_Factura, Producto, Cantidad
Entidades: id_Entidad, desc_Entidad
Municipios: id_Muncipio, fk_Entidad, desc_Municipio

Sé que en la tabla de sistema de sql server 2000 sysobjects se guarda (entre muchas otras cosas) un registro por cada una de las restricciones de llave foranea que existen en la base de datos. Estas están identificadas con el tipo 'F'.

Quisiera saber si es posible a partir de esta información obtener las dos tablas que están involucradas en la restricción así como sus respectivos campos involucrados para obtener una consulta parecida a esto:

Tipo Tabla1 Campo1 Tabla2 Campo2
--------------------------------------------------------------------------------------------------------FK Facturas fk_Cliente Clientes id_Cliente
FK Detalle_Factura fk_Factura Facturas id_Factura
FK Municipios fk_Entidad Entidades id_Entidad


Estoy utilizando SQL Server 2000.

De antemano muchas gracias y espero su valiosa ayuda.
  #2 (permalink)  
Antiguo 11/04/2008, 12:50
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Re: Relación entre tablas

Hola de nuevo, gracias a otro foro encontré la respuesta a lo que estoy solicitando. Pueden encontrarla en la siguiente dirección:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3162704&SiteID=1&mode=1

El query resultante para sql server 2000 sería:

select 'FK', o1.name as [FKName], o2.name [FKeyTable], c1.name, o3.name, c2.name
from sysforeignkeys fk
join sysobjects o1 on fk.constid = o1.id
join sysobjects o2 on fk.fkeyid = o2.id
join sysobjects o3 on fk.rkeyid = o3.id
join syscolumns c1 on fk.fkey = c1.colid and fk.fkeyid = c1.id
join syscolumns c2 on fk.rkey = c2.colid and fk.rkeyid = c2.id
order by 4

Saludos
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:06.