Modelado Base de Datos
El modelado y la normalización son pasos cruciales en el diseño de cualquier base de datos robusta. Invertir tiempo en estas fases asegura que tu base de datos sea eficiente, fácil de mantener y capaz de manejar la complejidad de los datos de tu aplicación.
¿De que trata?
El modelado de bases de datos es el proceso de crear una representación abstracta y conceptual de la información que un sistema necesita almacenar. Su objetivo principal es diseñar la estructura de la base de datos de manera eficiente, lógica y coherente, antes de que se implemente físicamente. Es el "dibujo" o "plano" de cómo se organizarán los datos, definiendo no solo qué información se guardará, sino también cómo se relacionará entre sí y qué reglas garantizarán su calidad.
Los aspectos clave del modelado son:
Comprender los requisitos del negocio: Identificar qué datos son necesarios y cómo se usarán.
Representar la información de manera estructurada: Definir las entidades (cosas o conceptos importantes), sus atributos (características) y las relaciones entre ellas.
Garantizar la integridad y consistencia de los datos: Establecer reglas para evitar datos duplicados, inconsistentes o incorrectos.
Optimizar el rendimiento y la escalabilidad: Diseñar la base de datos para que sea rápida y pueda crecer con el tiempo.
Dos de los conceptos más importantes en el modelado de bases de datos relacionales son el Modelo Relacional y la Normalización.
¿Cómo se hace el Modelado?
1. El Modelo Relacional
¿De qué trata? El modelo relacional es el modelo de base de datos más utilizado y es la base de la mayoría de los sistemas de gestión de bases de datos (SGBD) modernos como MySQL, PostgreSQL, SQL Server y Oracle. Fue propuesto por Edgar F. Codd en 1970. Se basa en la idea de que los datos se organizan en tablas (también llamadas "relaciones"), donde cada tabla tiene filas (registros) y columnas (campos o atributos).
Principios Clave del Modelo Relacional:
Tablas (Relaciones): Cada tipo de entidad (ej. Clientes, Productos, Pedidos) se representa como una tabla separada.
Filas (Tuplas / Registros): Cada fila en una tabla representa una instancia única de esa entidad (ej. un cliente específico, un producto específico).
Columnas (Atributos / Campos): Cada columna representa una característica o propiedad de la entidad (ej. nombre_cliente, precio_producto).
Claves Primarias (Primary Keys - PK): Una o más columnas que identifican de forma única cada fila en una tabla. Son esenciales para asegurar la integridad de los datos y para establecer relaciones.
Claves Foráneas (Foreign Keys - FK): Una o más columnas en una tabla que hacen referencia a la clave primaria de otra tabla. Son el mecanismo para establecer relaciones entre tablas.
Relaciones: Las conexiones lógicas entre tablas se establecen a través de las claves primarias y foráneas.
¿Cómo se hace? El modelo relacional es la estructura conceptual que se materializa al crear las tablas en SQL (o cualquier otro lenguaje de definición de datos).
SQL:


Para copiar:
CREATE TABLE Clientes (
ID_Cliente INT PRIMARY KEY,
Nombre VARCHAR(100),
Email VARCHAR(100) UNIQUE,
Telefono VARCHAR(20)
);
CREATE TABLE Productos (
ID_Producto INT PRIMARY KEY,
NombreProducto VARCHAR(100),
Precio DECIMAL(10, 2),
Stock INT
);
CREATE TABLE Pedidos (
ID_Pedido INT PRIMARY KEY,
ID_Cliente INT, -- Clave Foránea a Clientes
FechaPedido DATE,
FOREIGN KEY (ID_Cliente) REFERENCES Clientes(ID_Cliente)
);
CREATE TABLE Detalles_Pedido (
ID_Detalle INT PRIMARY KEY,
ID_Pedido INT, -- Clave Foránea a Pedidos
ID_Producto INT, -- Clave Foránea a Productos
Cantidad INT,
PrecioUnitario DECIMAL(10, 2),
FOREIGN KEY (ID_Pedido) REFERENCES Pedidos(ID_Pedido),
FOREIGN KEY (ID_Producto) REFERENCES Productos(ID_Producto)
);
2. Normalización
¿De qué trata? La normalización es un proceso sistemático para organizar las columnas y tablas de una base de datos relacional con el fin de minimizar la redundancia de datos y mejorar la integridad de los datos. Consiste en aplicar un conjunto de reglas, conocidas como "formas normales", para asegurar que la base de datos esté bien estructurada.
Objetivos de la Normalización:
Reducir la redundancia: Evitar que la misma información se almacene en varios lugares.
Eliminar anomalías de actualización: Prevenir inconsistencias cuando los datos se modifican (ej. si el precio de un producto se actualiza en un lugar pero no en otro).
Mejorar la integridad de los datos: Asegurar que los datos sean lógicos y consistentes.
Optimizar el almacenamiento y el rendimiento de las consultas: Aunque a veces una desnormalización controlada se usa para rendimiento, la normalización es el punto de partida para una base de datos robusta.
Las Formas Normales Más Comunes (y cómo se hacen):
a) Primera Forma Normal (1NF)
¿De qué trata? Una tabla está en 1NF si:
Todos los valores en cada columna son atómicos (indivisibles). Es decir, una celda no puede contener una lista de valores o múltiples piezas de información.
Cada columna tiene un nombre único.
El orden de las filas no importa.
Hay una clave primaria que identifica de forma única cada fila.
¿Cómo se hace? Identificando y separando los grupos repetitivos de datos en nuevas tablas, y asegurándose de que cada columna contenga un solo valor.
Ejemplo de tabla NO en 1NF:


Transformación a 1NF: Necesitamos una tabla Detalles_Pedido que relacione Pedidos y Productos.


b) Segunda Forma Normal (2NF)
¿De qué trata? Una tabla está en 2NF si:
Está en 1NF.
Todos los atributos no clave (columnas que no forman parte de la clave primaria) son totalmente dependientes de la clave primaria completa. Esto es relevante cuando la clave primaria es una clave compuesta (formada por dos o más columnas). Si un atributo no clave solo depende de una parte de la clave compuesta, debe moverse a otra tabla.
¿Cómo se hace? Creando nuevas tablas para los atributos que no dependen de la clave primaria completa.
Ejemplo de tabla NO en 2NF:


Problema: NombreProducto y PrecioUnitario dependen solo de ID_Producto, no de la combinación ID_Pedido y ID_Producto. Esto genera redundancia (Laptop y 1200.00 se repiten).
Transformación a 2NF:


c) Tercera Forma Normal (3NF)
¿De qué trata? Una tabla está en 3NF si:
Está en 2NF.
No contiene dependencias transitivas. Es decir, ningún atributo no clave depende de otro atributo no clave. Si un atributo no clave puede determinarse por otro atributo no clave, deben separarse.
¿Cómo se hace? Creando nuevas tablas para los atributos que tienen dependencias transitivas y estableciendo una clave foránea en la tabla original.
Ejemplo de tabla NO en 3NF:


Problema: NombreCarrera depende de ID_Carrera, y ID_Carrera es un atributo no clave de Estudiante (es decir, NombreCarrera no depende directamente de ID_Estudiante, sino de ID_Carrera). Esto es una dependencia transitiva.
Transformación a 3NF:

