SQL
Tutorial SQL: Relaciones entre tablas
SQL tablas relaciones: integridad referencial. Aprende a asegurar la integridad referencial en SQL mediante relaciones de tablas con ejemplos prácticos.
Aprende SQL GRATIS y certifícateUno de los aspectos fundamentales de las bases de datos relacionales es el concepto de "relaciones" entre tablas. Estas relaciones permiten vincular información entre varias tablas, facilitando la organización, manipulación y recuperación de los datos.
Relaciones entre tablas en SQL
Hay tres tipos principales de relaciones en SQL:
Relaciones uno a uno (One-to-One, 1:1): Cada fila en la tabla A está vinculada a no más de una fila en la tabla B. Este es un caso bastante raro de ver en la práctica, ya que los datos de ambas tablas podrían almacenarse juntos.
Relaciones uno a muchos (One-to-Many, 1:N): Para cada fila en la tabla A, puede haber cero, una o muchas filas en la tabla B. Es el tipo más común de relación.
Relaciones muchos a muchos (Many-to-Many, M:N): Cada fila en la tabla A puede estar relacionada con varias filas en la tabla B y viceversa. Se maneja a través de una tabla intermedia o de unión.
Claves primarias y foráneas
Las relaciones entre tablas se establecen a través de claves primarias (PK) y claves foráneas (FK).
Clave primaria (Primary Key, PK): Campo único en una tabla que identifica de forma única cada fila. No puede ser nulo y no admite duplicados.
Clave foránea (Foreign Key, FK): Campo en una tabla que enlaza los datos de dos tablas, coincidiendo con la clave primaria de otra tabla.
Ejemplo de relación muchos a muchos (Many-to-Many)
Para ilustrar cómo funcionan estas relaciones en SQL, utilizaremos el ejemplo de una base de datos de una librería que tiene tablas para Autores
, Libros
y LibrosAutores
(la tabla de unión para una relación muchos a muchos).
CREATE TABLE Autores (
AutorID INT PRIMARY KEY,
Nombre VARCHAR(100),
Nacionalidad VARCHAR(50)
);
CREATE TABLE Libros (
LibroID INT PRIMARY KEY,
Titulo VARCHAR(100),
AñoPublicacion INT
);
-- Tabla de unión para la relación muchos a muchos
CREATE TABLE LibrosAutores (
AutorID INT,
LibroID INT,
PRIMARY KEY (AutorID, LibroID),
FOREIGN KEY (AutorID) REFERENCES Autores(AutorID),
FOREIGN KEY (LibroID) REFERENCES Libros(LibroID)
);
En este ejemplo:
La tabla Autores
consta de tres campos: AutorID
(la clave primaria que identifica de forma única a cada autor), Nombre
, y Nacionalidad
.
La tabla Libros
también consta de tres campos: LibroID
(la clave primaria que identifica de forma única a cada libro), Titulo
, y AñoPublicacion
.
La tabla LibrosAutores
es una tabla de unión que establece las relaciones entre autores y libros. Cada fila de esta tabla representa la relación entre un libro y un autor, lo que significa que un autor ha escrito un libro. AutorID
y LibroID
son claves foráneas que hacen referencia a las claves primarias de las tablas Autores
y Libros
, respectivamente. Juntos, AutorID
y LibroID
forman la clave primaria de la tabla LibrosAutores
, lo que significa que cada combinación de autor y libro debe ser única.
Al usar este esquema de base de datos, es posible tener varios autores por libro y varios libros por autor, lo cual define una relación de muchos a muchos.
Para insertar datos en estas tablas y establecer las relaciones, se podría hacer algo como lo siguiente:
INSERT INTO Autores (AutorID, Nombre, Nacionalidad) VALUES (1, 'Gabriel García Márquez', 'Colombiana');
INSERT INTO Libros (LibroID, Titulo, AñoPublicacion) VALUES (1, 'Cien años de soledad', 1967);
-- Establecer la relación entre García Márquez y 'Cien años de soledad'
INSERT INTO LibrosAutores (AutorID, LibroID) VALUES (1, 1);
Es importante destacar que las relaciones en SQL no sólo organizan los datos, sino que también imponen restricciones de integridad referencial que protegen los datos. Por ejemplo, si se intenta insertar una fila en LibrosAutores
con un AutorID
que no existe en la tabla Autores
, SQL generará un error y no permitirá la inserción. Estas restricciones ayudan a garantizar la consistencia y la fiabilidad de los datos en la base de datos.
Ejemplo de relación uno a muchos (One-to-Many)
Ahora, supongamos que queremos añadir una tabla Editoriales
a la base de datos. Una editorial puede publicar muchos libros, pero cada libro está publicado por una sola editorial. Por lo tanto, se tiene una relación uno a muchos entre las editoriales y los libros.
CREATE TABLE Editoriales (
EditorialID INT PRIMARY KEY,
Nombre VARCHAR(100),
Ubicacion VARCHAR(100)
);
-- Se añade una clave foránea a la tabla Libros para establecer la relación
ALTER TABLE Libros ADD COLUMN EditorialID INT,
ADD FOREIGN KEY (EditorialID) REFERENCES Editoriales(EditorialID);
Se usan ALTER TABLE
y ADD COLUMN
para añadir una nueva columna EditorialID
a la tabla Libros
ya existente, y se la declara como FOREIGN KEY
. En este caso, EditorialID
en la tabla Libros
es una clave foránea que hace referencia a la clave primaria en la tabla Editoriales
. De esta manera, es posible vincular cada libro a la editorial que lo publicó.
Para insertar datos en estas tablas y establecer las relaciones, se podría hacer algo como lo siguiente:
INSERT INTO Editoriales (EditorialID, Nombre, Ubicacion) VALUES (1, 'Editorial La Oveja Negra', 'Bogotá, Colombia');
-- Supongamos que 'Cien años de soledad' fue publicado por la Editorial La Oveja Negra
UPDATE Libros SET EditorialID = 1 WHERE LibroID = 1;
Conclusión
Las relaciones en SQL organizan los datos y establecen restricciones de integridad referencial para garantizar la consistencia y fiabilidad de los datos. Este conocimiento es esencial para cualquier persona que trabaje con bases de datos relacionales.
Ejercicios de esta lección Relaciones entre tablas
Evalúa tus conocimientos de esta lección Relaciones entre tablas con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Actualización de datos: UPDATE
Creación y uso de procedimientos almacenados
Uso de funciones agregadas: COUNT, SUM, AVG, MAX, MIN
Tipos de datos
Uso de índices y particiones
Uso de vistas
Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
Sentencias INSERT
Creación y uso de subqueries
Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
Instalación de MySQL
Relaciones entre tablas
Clasificación de resultados con ORDER BY
Creación y manejo de usuarios y roles
Eliminación de datos: DELETE
Creación y uso de funciones
Vaciar tablas y bases de datos: DROP
Consultas básicas de selección: SELECT y WHERE
Creación de bases de datos y tablas
Filtrado de valores únicos con DISTINCT
Alterar la estructura de tablas existentes: ALTER TABLE
Creación de tablas e inserción de datos con SQL
Asignación y gestión de permisos
Optimización de consultas
Introducción a SQL
Triggers y eventos
Copias de seguridad y restauración de bases de datos
Filtrado de grupos de resultados con HAVING
Eliminación de datos: DELETE
Inserción de datos: INSERT INTO
Instalación de PostgreSQL
Agrupación de resultados con GROUP BY
Actualización de datos: UPDATE
Renombrar tablas y bases de datos: RENAME
Creación de bases de datos y tablas: CREATE DATABASE, CREATE TABLE
Bases de datos y tablas
Consultas básicas de selección SELECT y WHERE
Relaciones entre tablas
Todas las lecciones de SQL
Accede a todas las lecciones de SQL y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Sql
Introducción Y Entorno
Ddl Y Dml
Introducción Y Entorno
Instalación De Mysql
Introducción Y Entorno
Instalación De Postgresql
Introducción Y Entorno
Tipos De Datos
Introducción Y Entorno
Bases De Datos Y Tablas
Introducción Y Entorno
Creación De Bases De Datos Y Tablas: Create Database, Create Table
Operaciones Básicas
Consultas Básicas De Selección: Select Y Where
Operaciones Básicas
Inserción De Datos: Insert Into
Operaciones Básicas
Actualización De Datos: Update
Operaciones Básicas
Eliminación De Datos: Delete
Operaciones Básicas
Clasificación De Resultados Con Order By
Filtros Y Clasificación
Filtrado De Valores Únicos Con Distinct
Filtros Y Clasificación
Uso De Funciones Agregadas: Count, Sum, Avg, Max, Min
Funciones Agregadas Y Agrupaciones
Agrupación De Resultados Con Group By
Funciones Agregadas Y Agrupaciones
Filtrado De Grupos De Resultados Con Having
Funciones Agregadas Y Agrupaciones
Relaciones Entre Tablas
Joins Y Subqueries
Uso De Inner Join, Left Join, Right Join, Full Join
Joins Y Subqueries
Creación Y Uso De Subqueries
Joins Y Subqueries
Alterar La Estructura De Tablas Existentes: Alter Table
Manipulación De Tablas Y Datos
Renombrar Tablas Y Bases De Datos: Rename
Manipulación De Tablas Y Datos
Vaciar Tablas Y Bases De Datos: Drop
Manipulación De Tablas Y Datos
Creación Y Uso De Funciones
Funciones Y Procedimientos Almacenados
Creación Y Uso De Procedimientos Almacenados
Funciones Y Procedimientos Almacenados
Creación Y Manejo De Usuarios Y Roles
Seguridad Y Administración De Bases De Datos Sql
Asignación Y Gestión De Permisos
Seguridad Y Administración De Bases De Datos Sql
Copias De Seguridad Y Restauración De Bases De Datos
Seguridad Y Administración De Bases De Datos Sql
Optimización De Consultas
Sintaxis Avanzada
Uso De Índices Y Particiones
Sintaxis Avanzada
Uso De Vistas
Sintaxis Avanzada
Triggers Y Eventos
Sintaxis Avanzada
Certificados de superación de SQL
Supera todos los ejercicios de programación del curso de SQL y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.
Objetivos de aprendizaje de esta lección
- Comprender los tres tipos principales de relaciones entre tablas en SQL: uno a uno, uno a muchos y muchos a muchos.
- Aprender cómo se utilizan las claves primarias y las claves foráneas para establecer las relaciones entre tablas.
- Entender cómo se puede usar la cláusula
FOREIGN KEY
para crear una clave foránea y vincular datos entre tablas. - Conocer la importancia de las restricciones de integridad referencial y cómo ayudan a mantener la consistencia y fiabilidad de los datos.