Tema de la clase
- Estructura de tablas
- Llaves primarias y foráneas
- Restricciones
NOT NULLyUNIQUE - Integridad referencial
Esta clase está pensada para trabajarse usando MySQL Workbench y phpMyAdmin, que son las herramientas que hemos venido utilizando para diseñar, crear y administrar bases de datos.
Propósito de la clase
Al finalizar la clase, el estudiante será capaz de:
- Identificar la estructura básica de una tabla en una base de datos relacional.
- Diferenciar entre una llave primaria y una llave foránea.
- Aplicar restricciones como
NOT NULLyUNIQUE. - Comprender la importancia de la integridad referencial.
Ejemplo conceptual
Supongamos una base de datos escolar.
Tabla alumnos
| id_alumno | nombre | apellido | correo |
|---|---|---|---|
| 1 | Ana | López | ana@email.com |
| 2 | Luis | Pérez | luis@email.com |
En esta tabla:
id_alumnoidentifica de forma única a cada alumno.nombre,apellidoycorreoalmacenan información del alumno.- Cada columna tiene un tipo de dato específico.
Elementos importantes al crear una tabla
- Nombre de la tabla
- Nombre de cada campo
- Tipo de dato de cada campo
- Longitud del campo cuando aplique
- Restricciones
- Llave primaria
- Relaciones con otras tablas
Una tabla bien diseñada evita errores, datos repetidos y problemas al relacionar información.
2. Llave primaria
La llave primaria o PRIMARY KEY es el campo que identifica de manera única cada registro de una tabla.
Características de una llave primaria
- No se repite
- No puede ser nula
- Debe identificar un solo registro
- Solo puede haber una llave primaria por tabla, aunque puede estar formada por más de un campo
Ejemplo
CREATE TABLE alumnos (
id_alumno INT PRIMARY KEY AUTO_INCREMENT,
nombre VARCHAR(50) NOT NULL,
apellido VARCHAR(50) NOT NULL,
correo VARCHAR(100) UNIQUE
);
En este caso:
id_alumnoes la llave primaria- Cada alumno tendrá un identificador distinto
AUTO_INCREMENThace que MySQL asigne automáticamente el siguiente número
¿Por qué es importante?
Porque permite:
- localizar un registro de manera exacta
- relacionar una tabla con otra
- evitar duplicidad en identificadores
3. Llave foránea
La llave foránea o FOREIGN KEY es un campo que conecta una tabla con otra.
Sirve para establecer relaciones entre tablas.
Ejemplo conceptual
Tabla grupos
| id_grupo | nombre_grupo |
|---|---|
| 1 | 5A |
| 2 | 5B |
Tabla alumnos
| id_alumno | nombre | id_grupo |
|---|---|---|
| 1 | Ana | 1 |
| 2 | Luis | 2 |
Aquí:
id_grupoengruposes llave primariaid_grupoenalumnoses llave foránea- Eso significa que cada alumno pertenece a un grupo ya existente
Ejemplo en SQL
CREATE TABLE grupos (
id_grupo INT PRIMARY KEY AUTO_INCREMENT,
nombre_grupo VARCHAR(20) NOT NULL UNIQUE
);
CREATE TABLE alumnos (
id_alumno INT PRIMARY KEY AUTO_INCREMENT,
nombre VARCHAR(50) NOT NULL,
apellido VARCHAR(50) NOT NULL,
correo VARCHAR(100) UNIQUE,
id_grupo INT,
FOREIGN KEY (id_grupo) REFERENCES grupos(id_grupo)
);
¿Qué logra una llave foránea?
- Relaciona información entre tablas
- Evita registrar datos que no existen en la tabla principal
- Mantiene orden y coherencia en la base de datos
4. Restricciones
Las restricciones son reglas que se aplican a los campos para controlar qué datos se pueden guardar.
4.1 Restricción NOT NULL
Indica que un campo no puede quedar vacío.
Ejemplo
nombre VARCHAR(50) NOT NULL
Esto obliga a que cada registro tenga un valor en el campo nombre.
Uso recomendado
Se usa en campos obligatorios como:
- nombre
- apellido
- matrícula
- fecha
- identificadores
Ejemplo completo
CREATE TABLE maestros (
id_maestro INT PRIMARY KEY AUTO_INCREMENT,
nombre VARCHAR(50) NOT NULL,
especialidad VARCHAR(50) NOT NULL
);
4.2 Restricción UNIQUE
Indica que los valores de un campo no deben repetirse.
Ejemplo
correo VARCHAR(100) UNIQUE
Esto significa que dos personas no pueden tener el mismo correo registrado en la misma tabla.
Casos donde conviene usar UNIQUE
- correo electrónico
- número de control
- CURP
- matrícula
- usuario de acceso
Ejemplo
CREATE TABLE usuarios (
id_usuario INT PRIMARY KEY AUTO_INCREMENT,
usuario VARCHAR(50) NOT NULL UNIQUE,
correo VARCHAR(100) NOT NULL UNIQUE,
contrasena VARCHAR(100) NOT NULL
);
NOT NULL obliga a capturar un dato.
UNIQUE evita que ese dato se repita.
5. Integridad referencial
La integridad referencial es la regla que asegura que las relaciones entre tablas sean válidas.
En otras palabras, si una tabla depende de otra, entonces los datos relacionados deben existir realmente.
Ejemplo
Si un alumno tiene asignado id_grupo = 3, entonces el grupo 3 debe existir en la tabla grupos.
Si no existe, la base de datos debe impedir ese registro.
¿Qué protege la integridad referencial?
- Evita referencias a datos inexistentes
- Evita registros “huérfanos”
- Mantiene consistencia entre tablas relacionadas
Ejemplo incorrecto
Si en grupos solo existen los grupos 1 y 2, no debería permitirse esto:
INSERT INTO alumnos (nombre, apellido, correo, id_grupo)
VALUES ('Carlos', 'Ramírez', 'carlos@email.com', 8);
Porque el grupo 8 no existe.
Ejemplo correcto
INSERT INTO grupos (nombre_grupo)
VALUES ('5A'), ('5B');
INSERT INTO alumnos (nombre, apellido, correo, id_grupo)
VALUES ('Carlos', 'Ramírez', 'carlos@email.com', 1);
6. Cómo trabajarlo en MySQL Workbench
MySQL Workbench permite diseñar y crear tablas de manera gráfica o mediante código SQL.
6.1 Crear una tabla desde el editor
- Abrir la conexión en MySQL Workbench.
- Seleccionar la base de datos.
- Crear una nueva tabla.
- Agregar los campos.
- Asignar tipo de dato a cada campo.
-
Marcar:
PKpara llave primariaNNparaNOT NULLUQparaUNIQUEAIparaAUTO_INCREMENT
6.2 Crear relación entre tablas
- Crear primero la tabla principal, por ejemplo
grupos. - Crear después la tabla dependiente, por ejemplo
alumnos. - En la tabla dependiente, agregar el campo
id_grupo. -
En la sección de Foreign Keys, indicar:
- nombre de la llave foránea
- columna local
- tabla referenciada
- columna referenciada
6.3 Ventajas de Workbench
- Permite visualizar relaciones
- Facilita el diseño
- Ayuda a detectar errores de estructura
- Permite generar automáticamente el script SQL
7. Cómo revisarlo en phpMyAdmin
phpMyAdmin permite verificar si las tablas fueron creadas correctamente y revisar su estructura.
7.1 Qué observar en phpMyAdmin
Al entrar a una tabla, revisar:
- nombre de los campos
- tipo de dato
- si el campo acepta
NULL - si tiene índice
- si es llave primaria
- si tiene restricción
UNIQUE - si existe relación con otra tabla
7.2 Pestañas útiles
- Estructura: muestra campos, tipos de datos e índices
- Examinar: muestra los registros almacenados
- SQL: permite ejecutar consultas
- Relación / Designer: permite revisar vínculos entre tablas según la configuración del servidor
Workbench se puede usar para diseñar y crear. phpMyAdmin se puede usar para comprobar, consultar y administrar.
8. Ejemplo completo para clase
A continuación se muestra un ejemplo sencillo de tablas relacionadas.
Tabla grupos
CREATE TABLE grupos (
id_grupo INT PRIMARY KEY AUTO_INCREMENT,
nombre_grupo VARCHAR(20) NOT NULL UNIQUE
);
Tabla alumnos
CREATE TABLE alumnos (
id_alumno INT PRIMARY KEY AUTO_INCREMENT,
nombre VARCHAR(50) NOT NULL,
apellido VARCHAR(50) NOT NULL,
correo VARCHAR(100) NOT NULL UNIQUE,
id_grupo INT NOT NULL,
FOREIGN KEY (id_grupo) REFERENCES grupos(id_grupo)
);