Tema de la clase

  • Estructura de tablas
  • Llaves primarias y foráneas
  • Restricciones NOT NULL y UNIQUE
  • 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 NULL y UNIQUE.
  • 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_alumno identifica de forma única a cada alumno.
  • nombre, apellido y correo almacenan 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_alumno es la llave primaria
  • Cada alumno tendrá un identificador distinto
  • AUTO_INCREMENT hace 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_grupo en grupos es llave primaria
  • id_grupo en alumnos es 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

  1. Abrir la conexión en MySQL Workbench.
  2. Seleccionar la base de datos.
  3. Crear una nueva tabla.
  4. Agregar los campos.
  5. Asignar tipo de dato a cada campo.
  6. Marcar:

    • PK para llave primaria
    • NN para NOT NULL
    • UQ para UNIQUE
    • AI para AUTO_INCREMENT

6.2 Crear relación entre tablas

  1. Crear primero la tabla principal, por ejemplo grupos.
  2. Crear después la tabla dependiente, por ejemplo alumnos.
  3. En la tabla dependiente, agregar el campo id_grupo.
  4. 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)
);