Relaciones en una base de datos
Una vez creadas tablas diferentes para cada tema de la base de datos de Microsoft Access (base de datos de Microsoft Access: colección de datos y objetos (como tablas, consultas o formularios), que está relacionada con un tema o propósito concreto. El motor de base de datos Microsoft Jet administra los datos.), necesita una forma de indicarte a Microsoft Access cómo debe volver a combinar esa información. El primer paso de este proceso es definir relaciones (relación: asociación que se establece entre campos comunes (columnas) en dos tablas. Una relación puede ser uno a uno, uno a varios o varios a varios.) entre las tablas.
Una vez realizada esta operación, puede crear consultas, formularios e informes para mostrar información de varias tablas a la vez. Por ejemplo, este formulario incluye información de cuatro tablas:
- La tabla Clientes
- La tabla Pedidos
- La tabla Productos
- La tabla Detalles de pedidos
Cómo funcionan las relaciones
Siguiendo en el ejemplo anterior, los campos de las cuatro tablas deben coordinarse de modo que muestren información acerca del mismo pedido. Esta coordinación se lleva a cabo mediante las relaciones entre las tablas. Una relación hace coincidir los datos de los campos clave (normalmente un campo con el mismo nombre en ambas tablas). En la mayoría de los casos, estos campos coincidentes son la clave principal (clave principal: uno o más campos (columnas) cuyos valores identifican de manera exclusiva cada registro de una tabla. Una clave principal no puede permitir valores Nulo y debe tener siempre un índice exclusivo. Una clave principal se utiliza para relacionar una tabla con claves externas de otras tablas.) de una tabla, que proporciona un identificador único para cada registro, y una clave externa (clave externa: uno o más campos de tabla (columnas) que hacen referencia al campo o campos de clave principal de otra tabla. Una clave externa indica cómo están relacionadas las tablas.) de la otra tabla. Por ejemplo, los empleados pueden asociarse a los pedidos de los que son responsables mediante la creación de una relación entre los campos Id. de empleado.
- Id. de empleado aparece en ambas tablas, como clave principal ...
- ... y como clave externa.
Una relación uno a varios
La relación uno a varios es el tipo de relación más común. En este tipo de relación, un registro de la Tabla A puede tener muchos registros coincidentes en la Tabla B, pero un registro de la Tabla B sólo tiene un registro coincidente en la Tabla A.
- Un proveedor ...
- ... puede suministrar más de un producto ...
- ... pero cada producto tiene un único proveedor.
Una relación varios a varios
En una relación varios a varios, un registro de la Tabla A puede tener muchos registros coincidentes en la Tabla B, y viceversa. Este tipo de relación sólo es posible si se define una tercera tabla (denominada tabla de unión) cuya clave principal (clave principal: uno o más campos (columnas) cuyos valores identifican de manera exclusiva cada registro de una tabla. Una clave principal no puede permitir valores Nulo y debe tener siempre un índice exclusivo.
Una clave principal se utiliza para relacionar una tabla con claves externas de otras tablas.) consta de dos campos : las claves externas (clave externa: uno o más campos de tabla (columnas) que hacen referencia al campo o campos de clave principal de otra tabla. Una clave externa indica cómo están relacionadas las tablas.) de las Tablas A y B. Una relación de varios a varios no es sino dos relaciones de uno a varios con una tercera tabla. Por ejemplo, la tabla Pedidos y la tabla Productos tienen una relación de varios a varios que se define mediante la creación de dos relaciones de uno a varios con la tabla Detalles de pedidos. Un pedido puede incluir muchos productos, y cada producto puede aparecer en muchos pedidos.
- Clave principal de la tabla Pedidos
- Clave principal de la tabla Productos
- Un pedido puede incluir muchos productos ...
- ... y cada producto puede aparecer en muchos pedidos.
Una relación uno a uno
En una relación uno a uno, cada registro de la Tabla A sólo puede tener un registro coincidente en la Tabla B y viceversa. Este tipo de relación no es habitual, debido a que la mayoría de la información relacionada de esta forma estaría en una sola tabla. Puede utilizar la relación uno a uno para dividir una tabla con muchos campos, para aislar parte de una tabla por razones de seguridad o para almacenar información que sólo se aplica a un subconjunto de la tabla principal. Por ejemplo, puede crear una tabla que registre los empleados participantes en un partido de fútbol benéfico. Cada jugador de fútbol de la tabla Jugadores de fútbol tiene un registro coincidente en la tabla Empleados.
- Cada jugador de fútbol tiene un registro coincidente en la tabla Empleados.
- Este conjunto de valores es un subconjunto del campo Id. de empleado y la tabla Empleados.
Definición de relaciones
El tipo de relación que crea Microsoft Access depende de cómo están definidos los campos relacionados.
- Una relación de uno a varios se crea si sólo uno de los campos relacionados es una qclave principal (clave principal: uno o más campos (columnas) cuyos valores identifican de manera exclusiva cada registro de una tabla. Una clave principal no puede permitir valores Nulo y debe tener siempre un índice exclusivo. Una clave principal se utiliza para relacionar una tabla con claves externas de otras tablas.) o tiene un índice único (índice único: índice que se define al establecer la propiedad Indexado de un campo como Sí (Sin duplicados). Un índice único no permite entradas duplicadas en el campo indizado. Al establecer un campo como clave principal, queda automáticamente definido como exclusivo.).
- Se crea una relación uno a uno si ambos campos relacionados son claves principales o tienen índices únicos.
- Una relación de varios a varios es, en realidad, dos relaciones de uno a varios con una tercera tabla cuya clave principal consta de dos campos: las claves externas (clave externa: uno o más campos de tabla (columnas) que hacen referencia al campo o campos de clave principal de otra tabla. Una clave externa indica cómo están relacionadas las tablas.) de las otras dos tablas.
También se puede crear una relación entre una tabla y los elementos que contiene. Esto es útil en situaciones en que deba realizar una búsqueda dentro de la misma tabla. Por ejemplo, en la tabla Empleados se puede definir una relación entre los campos Id. de empleado y Jefe, por lo que el campo Jefe puede mostrar datos de empleado que procedan de un Id. de empleado coincidente.
Nota Si arrastra un campo que no es una clave principal y no tiene un índice único hasta otro campo que tampoco es una clave principal ni tiene un índice único, se crea una relación indeterminada. En las consultas que contienen tablas con una relación indeterminada, Microsoft Access muestra una línea de combinación (combinación: asociación entre un campo de una tabla o consulta y un campo del mismo tipo de datos de otra tabla o consulta. Las combinaciones indican al programa cómo se relacionan los datos. Los registros que no coinciden pueden incluirse o excluirse, dependiendo del tipo de combinación.) predeterminada entre las tablas, pero no se exige la integridad referencial (integridad referencial: reglas que se siguen para preservar las relaciones definidas entre las tablas cuando se especifican o eliminan registros.) y no hay garantías de que los registros sean únicos en ninguna tabla.
Integridad referencial
La integridad referencial es un sistema de reglas que utiliza Microsoft Access para garantizar que las relaciones entre los registros de tablas relacionadas son válidas y que no se eliminan ni modifican accidentalmente datos relacionados. Puede establecer la integridad referencial cuando se cumplen todas las condiciones siguientes:
- El campo coincidente de la tabla principal (tabla principal: extremo "uno" de dos tablas unidas por una relación "de uno a varios". En la tabla principal debe haber una clave principal y cada registro debe ser único.) es una clave principal (clave principal: uno o más campos (columnas) cuyos valores identifican de manera exclusiva cada registro de una tabla. Una clave principal no puede permitir valores Nulo y debe tener siempre un índice exclusivo. Una clave principal se utiliza para relacionar una tabla con claves externas de otras tablas.) o tiene un índice único (índice único: índice que se define al establecer la propiedad Indexado de un campo como Sí (Sin duplicados). Un índice único no permite entradas duplicadas en el campo indexado. Al establecer un campo como clave principal, queda automáticamente definido como exclusivo.).
- Los campos relacionados tienen el mismo tipo de datos (tipo de datos: característica de un campo que determina el tipo de datos que puede albergar. Los tipos de datos son: Booleano, Entero, Largo, Moneda, Simple, Doble, Fecha, Cadena y Variant (predeterminado).). Hay dos excepciones. Un campo Autonumérico (tipo de datos Autonumérico: tipo de datos de campo que, en una base de datos de Microsoft Access, almacena automáticamente un número exclusivo para cada registro en el momento en que éste se agrega a una tabla. Se pueden generar tres tipos de números: secuencial, aleatorio e Id. de réplica.) puede estar relacionado con un campo Numérico con la propiedad TamañoDelCampo (FieldSize) establecida en Entero Largo, y un campo Autonumérico con la propiedad TamañoDelCampo (FieldSize) establecida en Id. de réplica puede estar relacionado con un campo Numérico con la propiedad TamañoDelCampo (FieldSize) establecida en Id. de réplica.
- Ambas tablas pertenecen a la misma base de datos de Microsoft Access. Si las tablas son tablas vinculadas (tabla vinculada: tabla almacenada en un archivo fuera de la base de datos abierta desde donde Access puede tener acceso a los registros. Puede agregar, eliminar y editar registros de una tabla vinculada, pero no puede cambiar su estructura.), deben ser tablas en el formato de Microsoft Access y debe abrir la base de datos en la que están almacenadas para poder establecer la integridad referencial. La integridad referencial no puede exigirse para tablas vinculadas procedentes de bases de datos en otros formatos.
Cuando se utiliza la integridad referencial, se aplican las reglas siguientes:
- No puede introducir un valor en el campo de clave externa (clave externa: uno o más campos de tabla (columnas) que hacen referencia al campo o campos de clave principal de otra tabla. Una clave externa indica cómo están relacionadas las tablas.) de la tabla relacionada que no exista en la clave principal de la tabla principal. No obstante, puede introducir un valor Nulo (Null: valor que puede especificarse en un campo o utilizarse en expresiones o consultas para indicar datos desconocidos o ausentes. En Visual Basic, la palabra clave Null indica un valor Null. Algunos campos, como los de clave principal, no pueden contener Null.) en la clave externa, especificando que los registros no están relacionados. Por ejemplo, no puede tener un pedido asignado a un cliente que no existe, pero puede tener un pedido asignado a nadie mediante la introducción de un valor Nulo en el campo Id. de cliente.
- No puede eliminar un registro de una tabla principal si existen registros coincidentes en una tabla relacionada. Por ejemplo, no puede eliminar un registro de empleados de la tabla Empleados si existen pedidos asignados al empleado en la tabla Pedidos.
- No puede cambiar un valor de clave principal en la tabla principal si ese registro tiene registros relacionados. Por ejemplo, no puede cambiar el Id. de un empleado en la tabla Empleados si existen pedidos asignados a ese empleado en la tabla Pedidos.
Actualizaciones y eliminaciones en cascada
Para las relaciones en las que se exige la integridad referencial (integridad referencial: reglas que se siguen para preservar las relaciones definidas entre las tablas cuando se especifican o eliminan registros.), puede especificar si desea que Microsoft Access actualice en cascada (actualización en cascada: para relaciones que aplican integridad referencial entre tablas, la actualización de todos los registros relacionados de la tabla o tablas relacionadas cuando cambia un registro de la tabla principal.) y elimine en cascada (eliminación en cascada: para las relaciones que aplican integridad referencial entre tablas, la eliminación de todos los registros relacionados de la tabla o tablas relacionadas cuando se elimina un registro de la tabla principal.) automáticamente los registros relacionados. Si establece estas opciones, las operaciones de eliminación y actualización que normalmente impediría la integridad referencial se permiten ahora.
Al eliminar registros o al cambiar los valores de clave principal (clave principal: uno o más campos (columnas) cuyos valores identifican de manera exclusiva cada registro de una tabla. Una clave principal no puede permitir valores Nulo y debe tener siempre un índice exclusivo. Una clave principal se utiliza para relacionar una tabla con claves externas de otras tablas.) de una tabla principal (tabla principal: extremo "uno" de dos tablas unidas por una relación "de uno a varios".
En la tabla principal debe haber una clave principal y cada registro debe ser único.), Microsoft Access realiza los cambios necesarios en las tablas relacionadas con el fin de conservar la integridad referencial.
SI activa la casilla de verificación Actualizar en cascada los campos relacionados al definir una relación, siempre que cambie la clave principal de un registro de la tabla principal, Microsoft Access actualizará automáticamente la clave principal con el nuevo valor en todos los registros relacionados. Por ejemplo, si cambia un Id. de cliente en la tabla Clientes, el campo Id. de cliente de la tabla Pedidos se actualizará automáticamente en cada uno de los pedidos de ese cliente, de modo que la relación no se rompa. Microsoft Access actualiza en cascada sin mostrar ningún mensaje.
Nota Si la clave principal de la tabla principal es un campo Autonumérico (tipo de datos Autonumérico: tipo de datos de campo que, en una base de datos de Microsoft Access, almacena automáticamente un número exclusivo para cada registro en el momento en que éste se agrega a una tabla. Se pueden generar tres tipos de números: secuencial, aleatorio e Id. de réplica.)la activación de la casilla de verificación Actualizar en cascada los campos relacionados no tendrá ningún efecto, porque no puede cambiar el valor de un campo Autonumérico.
Si selecciona la casilla de verificación Eliminar en cascada los registros relacionados al definir una relación, siempre que elimine registros de la tabla principal, Microsoft Access eliminará automáticamente los registros relacionados de la tabla relacionada. Por ejemplo, si elimina el registro de un cliente de la tabla Clientes, todos los pedidos del cliente se eliminarán automáticamente de la tabla Pedidos (esto incluye los registros de la tabla Detalles de pedidos relacionados con los registros de Pedidos).
Al eliminar registros de un formulario u hoja de datos con la casilla de verificación Eliminar en cascada los registros relacionados activada, Microsoft Access le avisa que es posible que también se eliminen los registros relacionados. No obstante, al eliminar registros mediante una consulta de eliminación (consulta de eliminación: consulta (instrucción SQL) que quita las filas que coinciden con el criterio especificado de una o más tablas.), Microsoft Access elimina automáticamente los registros de las tablas relacionadas sin mostrar un aviso.