Junior
¿Cómo se configuran las relaciones entre tablas en bases de datos relacionales?
sobes.tech AI
Respuesta de la IA
En las bases de datos relacionales, las relaciones entre tablas se configuran mediante claves externas (Foreign Keys).
Una clave externa es una columna o conjunto de columnas en una tabla que hace referencia a la clave primaria (Primary Key) de otra tabla. Establece una relación lógica entre los registros en dos tablas.
Al configurar la relación:
- Se define la clave primaria en la tabla "padre" (Parent). La clave primaria identifica de manera única cada registro.
- En la tabla "hija" (Child) se crea una columna (o conjunto de columnas) que servirá como clave externa.
- Esta columna en la tabla "hija" se vincula con la clave primaria de la tabla "padre".
- Se establecen restricciones de integridad de datos (Constraint):
- REFERENCES: Indica a qué tabla y columna (clave primaria) hace referencia la clave externa.
- ON UPDATE behavior: Define qué sucede con los registros en la tabla hija cuando se modifica la clave primaria en la tabla padre. Las opciones son:
CASCADE: Los cambios se aplican en cascada a los registros hijos.SET NULL: Los valores de la clave externa en la tabla hija se establecen en NULL.RESTRICT: La operación de modificación está prohibida si existen registros hijos relacionados.NO ACTION: Similar a RESTRICT en la mayoría de los SGBD.SET DEFAULT: Los valores de la clave externa se establecen en el valor por defecto.
- ON DELETE behavior: Define qué sucede con los registros en la tabla hija al eliminar registros en la tabla padre. Las opciones son las mismas que para
ON UPDATE.
Ejemplo de sintaxis SQL para crear una relación:
CREATE TABLE Customers (
customer_id INT PRIMARY KEY, -- Clave primaria en la tabla Customer
customer_name VARCHAR(255)
);
CREATE TABLE Orders (
order_id INT PRIMARY KEY,
customer_id INT, -- Clave externa que hace referencia a customer_id en la tabla Customers
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)
ON UPDATE CASCADE -- Cuando se modifica customer_id en Customers, también se modifica en Orders
ON DELETE CASCADE -- Cuando se elimina un Customer, también se eliminan sus Orders relacionados
);
Tipos de relaciones entre tablas:
| Tipo de relación | Descripción | Ejemplo |
|---|---|---|
| Uno a Uno (1:1) | Una fila en la primera tabla corresponde a una fila en la segunda y viceversa. Caso poco frecuente en bases de datos relacionales. | Usuario y su perfil. |
| Uno a Muchos (1:N) | Una fila en la primera tabla corresponde a muchas filas en la segunda, pero cada fila en la segunda corresponde solo a una en la primera. | Cliente y sus pedidos. |
| Muchos a Muchos (N:M) | Muchas filas en la primera tabla corresponden a muchas en la segunda, y viceversa. Se implementa mediante una tabla intermedia (de enlace). | Productos y categorías. |
Para la relación Many-to-Many, se crea una tercera tabla que contiene claves externas a ambas tablas relacionadas.
CREATE TABLE Products (
product_id INT PRIMARY KEY,
product_name VARCHAR(255)
);
CREATE TABLE Categories (
category_id INT PRIMARY KEY,
category_name VARCHAR(255)
);
CREATE TABLE ProductCategories ( -- Tabla de enlace
product_id INT,
category_id INT,
PRIMARY KEY (product_id, category_id), -- Clave primaria compuesta
FOREIGN KEY (product_id) REFERENCES Products(product_id),
FOREIGN KEY (category_id) REFERENCES Categories(category_id)
);