Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las relaciones son las asociaciones que se establecen entre dos o más tablas. Las relaciones se basan en campos comunes de más de una tabla y, a menudo, implican el uso de claves principales y externas.
Una clave principal es el campo o campos que se usan para identificar de forma única cada registro de una tabla. Las claves principales deben cumplir tres requisitos: no pueden ser NULL, deben ser únicas y solo puede definirse una por tabla. Para definir una clave principal, cree un índice de clave principal tras la creación de la tabla o use la cláusula CONSTRAINT en la declaración de la tabla, tal y como se muestra en los ejemplos que se detallan más adelante en esta sección. Una restricción limita o restringe los valores que especifican en un campo.
Una clave externa es un campo o campos de una tabla que hacen referencia a la clave principal de otra tabla. Los datos de los campos de ambas tablas son exactamente los mismos. Además, la tabla con el registro de clave principal (tabla principal) debe tener los registros existentes antes de que la tabla con el registro de clave externa (tabla externa) tenga los registros coincidentes o relacionados. Del mismo modo que con las claves principales, puede definir las claves externas en la declaración de la tabla mediante la cláusula CONSTRAINT.
Básicamente, existen tres tipos de relaciones:
- Uno a uno Por cada registro de la tabla principal hay un registro, y sólo uno, en la tabla externa.
- Uno a varios Por cada registro de la tabla principal hay varios registros relacionados en la tabla externa.
- Varios a varios Por cada registro de la tabla principal hay varios registros relacionados en la tabla externa, y por cada registro de la tabla externa hay varios registros relacionados en la tabla principal.
Por ejemplo, supongamos que quiere agregar un tabla de facturas a una base de datos de facturación. Cada cliente de la tabla de clientes puede tener varias facturas en la tabla de facturas (este es el típico caso de relación de uno a varios). Puede definir la clave principal de la tabla de clientes como clave externa en la tabla de facturas y establecer así la relación adecuada entre las tablas.
Cuando defina las relaciones entre tablas, deberá crear las declaraciones CONSTRAINT en el nivel de campo. Esto significa que las restricciones se definirán en una instrucción CREATE TABLE. Para aplicar las restricciones, use la palabra clave CONSTRAINT después de una declaración de campo, asigne un nombre a la restricción, otro a la tabla a la que hace referencia y otro al campo o campos de esa tabla que formarán la clave externa coincidente.
Con la siguiente instrucción, se asume que la tabla tblCustomers ya se ha creado y que tiene una clave principal definida en el campo CustomerID. Ahora, la instrucción creará la tabla tblInvoices y definirá su clave principal en el campo InvoiceID. También creará la relación de uno a varios entre las tablas tblCustomers y tblInvoices mediante la definición de otro campo CustomerID en la tabla tblInvoices. Este campo se definirá como clave externa que hará referencia al campo CustomerID de la tabla de clientes. Tenga en cuenta que el nombre de cada restricción se encuentra después de la palabra clave CONSTRAINT.
CREATE TABLE tblInvoices
(InvoiceID INTEGER CONSTRAINT PK_InvoiceID PRIMARY KEY,
CustomerID INTEGER NOT NULL CONSTRAINT FK_CustomerID
REFERENCES tblCustomers (CustomerID),
InvoiceDate DATETIME,
Amount CURRENCY)
Tenga en cuenta que el índice de clave principal (PK_InvoiceID) de la tabla de facturas se declara en la instrucción CREATE TABLE. Para mejorar el rendimiento de la clave principal, se le creará automáticamente un índice, por lo que no será necesario usar una instrucción CREATE INDEX independiente. Ahora, cree una tabla de envíos que contenga la dirección de envío de cada cliente. Supongamos que solo habrá un registro de envío para cada registro de cliente, por lo que establecerá una relación uno a uno.
CREATE TABLE tblShipping
(CustomerID INTEGER CONSTRAINT PK_CustomerID PRIMARY KEY
REFERENCES tblCustomers (CustomerID),
Address TEXT(50),
City TEXT(50),
State TEXT(2),
Zip TEXT(10))
Tenga en cuenta que el campo CustomerID es la clave principal de la tabla de envíos y la referencia de la clave externa a la tabla de clientes.
Restricciones
Las restricciones pueden usarse para establecer claves principales y la integridad referencial, así como para restringir los valores que pueden insertarse en un campo. En general, las restricciones pueden emplearse para preservar la integridad y la coherencia de los datos de la base de datos.
Existen dos tipos de restricciones: la restricción de campo único o nivel de campo y la restricción de varios campos o nivel de tabla. Ambos tipos de restricciones pueden usarse en las instrucciones CREATE TABLE o ALTER TABLE.
Una restricción de campo único, también conocida como restricción de nivel de columna, se declara con el propio campo, una vez que se han declarado el campo y el tipo de datos. Use la tabla de clientes y cree una clave principal de campo único en el campo CustomerID. Para agregar la restricción, use la palabra clave CONSTRAINT con el nombre del campo.
ALTER TABLE tblCustomers
ALTER COLUMN CustomerID INTEGER
CONSTRAINT PK_tblCustomers PRIMARY KEY
Fíjese en que se proporciona el nombre de la restricción. Podría utilizar un acceso directo para declarar la clave principal que omita totalmente la cláusula CONSTRAINT.
ALTER TABLE tblCustomers
ALTER COLUMN CustomerID INTEGER PRIMARY KEY
Sin embargo, el uso del método del acceso directo hará que Access genere al azar un nombre para la restricción, lo que dificultará las referencias que se le hagan en el código. Siempre es una buena idea asignar un nombre a las restricciones.
Para anular una restricción, use la cláusula DROP CONSTRAINT con la instrucción ALTER TABLE y proporcione el nombre de la restricción.
ALTER TABLE tblCustomers
DROP CONSTRAINT PK_tblCustomers
Las restricciones también se pueden usar para restringir los valores que se permiten para un campo. Puede restringir los valores a No NULL o ÚNICO, o bien puede definir una restricción CHECK, que es un tipo de regla de negocio que puede aplicarse a un campo. Supongamos que quiere restringir o delimitar los valores de los campos del nombre y los apellidos para que sean únicos, lo que significa que nunca debería haber una combinación de nombre y apellidos que sea la misma para dos registros de la tabla. Como se trata de una restricción de varios campos, se declara en el nivel de tabla, no de campo. Use la cláusula ADD CONSTRAINT y defina una lista de varios campos.
ALTER TABLE tblCustomers
ADD CONSTRAINT CustomerID UNIQUE
([Last Name], [First Name])
Una restricción CHECK es una característica avanzada de SQL que le permite agregar validación de datos a una tabla mediante la creación de una expresión que puede hacer referencia a un único campo o a varios de una o más tablas. Supongamos que quiere asegurarse de que los importes especificados en el registro de una factura sean siempre superiores a 0,00 €. Para ello, use una restricción CHECK declarando la palabra clave CHECK y su expresión de validación en la cláusula ADD CONSTRAINT de una instrucción ALTER TABLE.
ALTER TABLE tblInvoices
ADD CONSTRAINT CheckAmount
CHECK (Amount > 0)
La expresión que se usa para definir una restricción CHECK también puede hacer referencia a varios campos de la misma tabla, o de otras, y puede usar cualquier operación válida en Access SQL, como las instrucciones SELECT, los operadores matemáticos y las funciones de agregado. La expresión que define la restricción CHECK no puede tener más de 64 caracteres.
Supongamos que quiere comprobar el límite de crédito de cada cliente antes de agregarlo a la tabla de clientes. Mediante una instrucción ALTER TABLE con las cláusulas ADD COLUMN y CONSTRAINT, cree una restricción que busque el valor necesario en la tabla CreditLimit para comprobar el límite de crédito del cliente. Use las siguientes instrucciones SQL para crear la tabla tblCreditLimit, agregue el campo CustomerLimit a la tabla tblCustomers, agregue la restricción CHECK a la tabla tblCustomers y pruebe la restricción CHECK.
CREATE TABLE tblCreditLimit (
Limit DOUBLE)
INSERT INTO tblCreditLimit
VALUES (100)
ALTER TABLE tblCustomers
ADD COLUMN CustomerLimit DOUBLE
ALTER TABLE tblCustomers
ADD CONSTRAINT LimitRule
CHECK (CustomerLimit <= (SELECT Limit
FROM tblCreditLimit))
UPDATE TABLE tblCustomers
SET CustomerLimit = 200
WHERE CustomerID = 1
Tenga en cuenta que, cuando ejecute la instrucción UPDATE TABLE, recibirá un mensaje en el que se indicará que la actualización no se pudo realizar porque infringió la restricción CHECK. Si actualiza el campo CustomerLimit a un valor igual o menor que 100, la actualización se realizará correctamente.
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.