Compartir a través de


Establecer relaciones temporales entre tablas

Al establecer una relación temporal entre tablas, se provoca que el puntero de registro de una tabla (la tabla secundaria) siga automáticamente los movimientos del puntero de registro de la otra tabla (la tabla primaria). Esto le permite seleccionar un registro en el lado “uno”, o primario, de una relación y tener acceso automáticamente a los registros relacionados del lado “varios”, o secundario.

Por ejemplo, puede relacionar las tablas customer y orders de forma que al colocar el puntero de registro en un cliente determinado de la tabla customer, el puntero de registro de la tabla orders se desplace hasta el registro con el mismo número de cliente.

Puede utilizar las áreas de trabajo y los alias de las tablas al establecer relaciones entre dos tablas abiertas con el comando SET RELATION. Si utiliza un formulario para trabajar con las tablas, puede almacenar estas relaciones como parte del entorno de datos del formulario.

Tablas relacionadas temporalmente

Puede utilizar la ventana Sesión de datos o el lenguaje para crear relaciones temporales entre las tablas.

Para relacionar tablas temporalmente

  • En la ventana Sesión de datos, seleccione las tablas y utilice el botón Relaciones para crear las relaciones.

    –O bien–

  • Utilice el comando SET RELATION.

Con el comando SET RELATION puede establecer una relación entre una tabla abierta en el área de trabajo seleccionada actualmente y otra tabla abierta en otra área. Normalmente se relacionan tablas que tienen un campo común y la expresión utilizada para establecer la relación es habitualmente la expresión del índice que controla la tabla secundaria.

Por ejemplo, puede que un cliente tenga varios pedidos asociados a su registro de cliente. Si crea una relación entre el campo común a ambas tablas, podrá ver fácilmente todos los pedidos de un cliente determinado. En el programa siguiente se utiliza un campo común a las dos tablas, cust_id, para crear una relación entre ambas, basada en el campo cust_id de la tabla customer y la etiqueta de índice cust_id de la tabla orders.

Uso de SET RELATION para establecer una relación entre dos tablas

Código Comentarios
USE customer IN 1
Abre la tabla customer (tabla primaria) en el área de trabajo 1
USE orders IN 2
Abre la tabla orders (tabla secundaria) en el área de trabajo 2
SELECT orders
Selecciona el área de trabajo secundaria.
SET ORDER TO TAG cust_id
Especifica el orden de la tabla secundaria mediante la etiqueta de índice cust_id.
SELECT customer
Selecciona el área de trabajo primaria.
SET RELATION TO cust_id
INTO orders
Crea la relación entre la tabla primaria y el índice que controla la tabla secundaria.
SELECT orders
BROWSE NOWAIT
SELECT customer
BROWSE NOWAIT
Abre dos ventanas Examinar. Observe que al mover el puntero de registro en la tabla primaria, los datos de la tabla secundaria cambian.

La ventana Sesión de datos muestra las dos tablas abiertas, Orders y Customer, y la relación establecida con el comando SET RELATION.

La ventana Sesión de datos muestra los alias y las relaciones temporales de las tablas abiertas

El índice creado para la tabla secundaria, orders, ordena los registros de la tabla orders por grupos, según el cliente que ha realizado el pedido. Al establecer una relación entre la tabla primaria y el índice de la tabla secundaria, Visual FoxPro selecciona solamente los registros de la tabla secundaria cuya clave de índice coincide con la del registro primario seleccionado.

En el ejemplo anterior se ha establecido una relación simple entre dos tablas. También puede utilizar el comando SET RELATION para establecer relaciones múltiples entre una tabla primaria y varias tablas secundarias.

Guardar relaciones entre tablas en un entorno de datos

Si va a crear un formulario que utiliza más de una tabla, puede utilizar el entorno de datos para crear relaciones entre tablas y almacenarlas en el formulario. Las relaciones establecidas en el entorno de datos se abren automáticamente al ejecutar el formulario. Para obtener más información acerca de la creación de un entorno de datos, consulte Crear formularios

Relacionar registros de una sola tabla

También puede crear una relación entre registros de una sola tabla. Esta relación, denominada con referencia a sí misma, puede ser útil en aquellas situaciones en las que se tiene toda la información necesaria almacenada en una sola tabla. Por ejemplo, puede ser conveniente desplazarse por los supervisores de la tabla Employees haciendo que los empleados a cargo de cada supervisor cambien automáticamente al mover el puntero de registro de un supervisor a otro.

Para relacionar temporalmente registros de una sola tabla

  • En la ventana Sesión de datos, seleccione las tablas y utilice el botón Relaciones para crear las relaciones.

    –O bien–

  • Utilice el comando SET RELATION.

Para crear una relación con referencia a sí misma, debe abrir la misma tabla dos veces, la primera de ellas en un área de trabajo, y la segunda con el comando USE AGAIN en otra área distinta. A continuación utilizará un índice para relacionar los registros. Por ejemplo, el código siguiente establece y examina una relación con referencia a sí misma creando una etiqueta de índice llamada mgr_id que ordena la tabla Employee por el campo reports_to:

SELECT 0
USE employee ALIAS managers
SELECT 0
USE employee AGAIN ALIAS employees
INDEX ON reports_to TAG mgr_id
SET ORDER TO mgr_id
SELECT managers
SET RELATION TO emp_id INTO employees
BROWSE
SELECT employees
BROWSE

Al desplazar el puntero de registro de la ventana Examinar managers, la ventana Examinar employees se actualiza y sólo muestra los empleados que dependen del supervisor seleccionado.

Vea también

Trabajar con alias de tablas | Establecer relaciones persistentes entre índices | Trabajar con registros | Sesión de datos | SET RELATION | Trabajar con múltiples tablas