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.

Uno 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.

Certifícate en SQL con CertiDevs PLUS

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

Código

Creación y uso de procedimientos almacenados

Test

Uso de funciones agregadas: COUNT, SUM, AVG, MAX, MIN

Test

Tipos de datos

Test

Uso de índices y particiones

Test

Uso de vistas

Test

Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN

Test

Sentencias INSERT

Código

Creación y uso de subqueries

Test

Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN

Código

Instalación de MySQL

Test

Relaciones entre tablas

Código

Clasificación de resultados con ORDER BY

Test

Creación y manejo de usuarios y roles

Test

Eliminación de datos: DELETE

Código

Creación y uso de funciones

Test

Vaciar tablas y bases de datos: DROP

Test

Consultas básicas de selección: SELECT y WHERE

Test

Creación de bases de datos y tablas

Código

Filtrado de valores únicos con DISTINCT

Test

Alterar la estructura de tablas existentes: ALTER TABLE

Test

Creación de tablas e inserción de datos con SQL

Proyecto

Asignación y gestión de permisos

Test

Optimización de consultas

Test

Introducción a SQL

Test

Triggers y eventos

Test

Copias de seguridad y restauración de bases de datos

Test

Filtrado de grupos de resultados con HAVING

Test

Eliminación de datos: DELETE

Test

Inserción de datos: INSERT INTO

Test

Instalación de PostgreSQL

Test

Agrupación de resultados con GROUP BY

Test

Actualización de datos: UPDATE

Test

Renombrar tablas y bases de datos: RENAME

Test

Creación de bases de datos y tablas: CREATE DATABASE, CREATE TABLE

Test

Bases de datos y tablas

Test

Consultas básicas de selección SELECT y WHERE

Código

Relaciones entre tablas

Test

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

Sublenguajes De Sql: Data Definition Language Y Data Manipulation Language

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.

En esta lección

Objetivos de aprendizaje de esta lección

  1. Comprender los tres tipos principales de relaciones entre tablas en SQL: uno a uno, uno a muchos y muchos a muchos.
  2. Aprender cómo se utilizan las claves primarias y las claves foráneas para establecer las relaciones entre tablas.
  3. Entender cómo se puede usar la cláusula FOREIGN KEY para crear una clave foránea y vincular datos entre tablas.
  4. Conocer la importancia de las restricciones de integridad referencial y cómo ayudan a mantener la consistencia y fiabilidad de los datos.