Clase 03 · 17 minGratis
Llaves primarias, foráneas y bases no relacionales
Clase 3 del curso gratis SQL desde Cero: cómo identificar cada registro con una llave primaria, cómo relacionar tablas con llaves foráneas y cuándo aparecen las bases de datos no relacionales.
Toca cualquier marca ▸ 0:00 de los apuntes y el video salta a ese momento. Abrir en YouTube
Llave primaria: el documento de identidad del registro
La llave primaria (primary key) es una columna cuyos valores no se repiten y nunca están vacíos: identifica cada registro sin ambigüedad. En una tabla de clientes, el nombre no sirve (hay muchas Ana Gómez); el número de documento, sí .
Si los datos no traen nada único, se le delega al sistema: una columna que se llena sola con un número que va aumentando .
Dos clientes con el mismo nombre, pero con id distinto: ya no hay
confusión. Ahora intenta insertar a mano un id que ya existe
(INSERT INTO clientes VALUES (1, 'Luis', 20);) y mira el error.
Llave foránea: la referencia a otra tabla
Una llave foránea (foreign key) es una columna que apunta a la llave
primaria de otra tabla . La tabla de órdenes no repite el
nombre ni la edad del cliente: guarda su id, y con eso se va a buscar el
resto a la tabla de clientes .
- En
ordenes, elcliente_idsí se repite: un cliente puede tener muchas órdenes . - Cada tabla tiene una llave primaria (que puede combinar varias columnas), pero puede tener varias foráneas.
- Nombrarla
cliente_ides convención, no obligación. Sigue una convención y tu yo del futuro (o quien herede tu código) te lo agradecerá .
La línea FOREIGN KEY … REFERENCES se lee casi literal: la llave foránea
cliente_id hace referencia al id de clientes . Agrega
al final INSERT INTO ordenes VALUES (4, 99, 10); y ejecuta: el cliente 99 no
existe y la base se niega. Esa es la integridad referencial.
Bases de datos no relacionales
En una base relacional, agregar un tipo de dato nuevo implica cambiar la estructura de la tabla . Cuando los datos crecieron a escala de redes sociales (millones de usuarios, formatos que cambian todo el tiempo) aparecieron las no relacionales (NoSQL), que no necesariamente guardan tablas :
- Grafos: nodos y relaciones, ideales para redes de amigos o recomendaciones (Neo4j) .
- Clave-valor: rapidísimas para lecturas simples (Redis) .
- Columnares: Cassandra, por ejemplo.
- Documentos: guardan objetos JSON (JavaScript Object Notation), como MongoDB .
Las marcas relacionales y sus dialectos
MySQL, PostgreSQL, SQL Server, Oracle y SQLite hablan SQL estándar, con pequeñas diferencias: un comando que funciona en una puede escribirse distinto en otra . En este curso usamos SQLite, y cuando algo cambie respecto a otros motores lo vas a ver señalado.
El reto de esta clase
Crea autores y libros. Cada libro tiene un id, un titulo y un
autor_id que es llave foránea hacia autores(id). Inserta un autor y dos
libros suyos.
