Diseño de bases de datos relacionales

Fundamentos para el diseño de bases de datos relacionales

Conceptos Fundamentales

Antes de iniciar el diseño, es importante comprender los conceptos clave:

  • Base de datos relacional: Organiza los datos en tablas (relaciones) con filas (tuplas) y columnas (atributos).
  • Esquema: La estructura de una base de datos, que incluye tablas, columnas y relaciones.
  • Clave primaria (Primary Key): Identificador único para cada registro en una tabla.
  • Clave foránea (Foreign Key): Atributo que establece una relación entre tablas.
  • Normalización: Proceso para organizar los datos y eliminar redundancias.

Proceso de Diseño

Fase 1: Recolección y Análisis de Requisitos

Identificar los objetivos del sistema: ¿Qué problema resolverá la base de datos?
Entrevistar a los usuarios: Recoger requisitos funcionales y no funcionales.
Identificar las entidades: ¿Qué objetos o conceptos del sistema necesitan ser representados en la base de datos?

  • Ejemplo: En un sistema de ventas, las entidades podrían ser Clientes, Productos y Pedidos.

Definir relaciones entre entidades: ¿Cómo interactúan las entidades entre sí?


Fase 2: Modelo Conceptual

Diagrama Entidad-Relación (E-R):

  • Representa gráficamente las entidades, atributos y relaciones.

Componentes principales:

  • Entidades: Representadas por rectángulos.
  • Atributos: Representados por óvalos.
  • Relaciones: Representadas por rombos, que conectan entidades.

Ejemplo:

  • Entidades: Cliente, Pedido.
  • Relación: "Realiza" entre Cliente y Pedido.


Definir cardinalidades:

  • 1:1 (uno a uno): Un cliente tiene una única dirección.
  • 1:N (uno a muchos): Un cliente puede realizar varios pedidos.
  • N:M (muchos a muchos): Un producto puede pertenecer a varios pedidos y un pedido puede incluir varios productos.

Fase 3: Modelo Lógico


Convertir el diagrama E-R en tablas:

  • Cada entidad se convierte en una tabla.
  • Los atributos se convierten en columnas.
  • Las relaciones se convierten en claves foráneas.

Ejemplo:

  • Entidad: Cliente → Tabla: Cliente con columnas id_cliente, nombre, email.
  • Relación: Pedido → Tabla: Pedido con columnas id_pedido, fecha, id_cliente (clave foránea).

Aplicar normalización:

  • Elimina redundancias y asegura consistencia.

Formas normales:

  • 1FN: Cada celda de la tabla debe contener un único valor.
  • 2FN: Cumple con 1FN y cada atributo no clave depende completamente de la clave primaria.
  • 3FN: Cumple con 2FN y elimina dependencias transitivas.

Identificar claves:

  • Primaria: Identificador único.
  • Foránea: Relación con otra tabla.

Fase 4: Modelo Físico


Seleccionar el Sistema de Gestión de Bases de Datos (DBMS):

  • Ejemplos: MySQL, PostgreSQL, SQL Server.

Definir tipos de datos:

  • Escoge el tipo adecuado para cada columna.
  • Ejemplo: INT, VARCHAR, DATE, BOOLEAN.

Crear restricciones:

  • NOT NULL: Campo obligatorio.
  • UNIQUE: No permite duplicados.
  • CHECK: Restringe valores permitidos.
  • DEFAULT: Establece valores por defecto.

 SQL de creación:

CREATE TABLE Cliente (
id_cliente INT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE
);

CREATE TABLE Pedido (
id_pedido INT PRIMARY KEY,
fecha DATE NOT NULL,
id_cliente INT,
FOREIGN KEY (id_cliente) REFERENCES Cliente(id_cliente)
);

Buenas Prácticas de Diseño

Usar nombres significativos:

  • Nombres de tablas y columnas deben ser claros y descriptivos.

Evitar redundancia de datos:

  • Usa normalización para evitar almacenar la misma información en múltiples lugares.

Diseñar para la escalabilidad:

  • Piensa en el crecimiento futuro del sistema.

Documentar el diseño:

  • Mantén registros del modelo E-R, decisiones tomadas y cambios realizados.

Optimizar índices:

  • Usa índices en columnas frecuentemente consultadas para mejorar el rendimiento.

Ejemplo Completo

Supongamos un sistema de ventas con las siguientes entidades y relaciones:

Entidades: Cliente, Producto, Pedido.
Relaciones:

  • Un cliente puede hacer muchos pedidos (1:N).
  • Un pedido puede incluir muchos productos y un producto puede estar en varios pedidos (N:M).

Modelo E-R:

Tablas: Cliente, Pedido, Producto.
Relación N:M: Se crea una tabla intermedia llamada Pedido_Producto con claves foráneas de Pedido y Producto.



Implementación SQL:


CREATE TABLE Cliente (
id_cliente INT PRIMARY KEY,
nombre VARCHAR(50),
email VARCHAR(100)
);

CREATE TABLE Producto (
id_producto INT PRIMARY KEY,
nombre VARCHAR(50),
precio DECIMAL(10, 2)
);

CREATE TABLE Pedido (
id_pedido INT PRIMARY KEY,
fecha DATE,
id_cliente INT,
FOREIGN KEY (id_cliente) REFERENCES Cliente(id_cliente)
);

CREATE TABLE Pedido_Producto (
id_pedido INT,
id_producto INT,
cantidad INT,
PRIMARY KEY (id_pedido, id_producto),
FOREIGN KEY (id_pedido) REFERENCES Pedido(id_pedido),
FOREIGN KEY (id_producto) REFERENCES Producto(id_producto)
);

 Validación y Pruebas

Verificar integridad referencial:

  • Asegúrate de que las claves foráneas funcionan correctamente.

Probar consultas:

  • Ejecuta consultas para confirmar que la base de datos responde según lo esperado.

Ejemplo:
SELECT c.nombre, p.fecha, pr.nombre
FROM Cliente c
JOIN Pedido p ON c.id_cliente = p.id_cliente
JOIN Pedido_Producto pp ON p.id_pedido = pp.id_pedido
JOIN Producto pr ON pp.id_producto = pr.id_producto;

Evaluar rendimiento:

  • Optimiza índices y estructura según sea necesario.

Obra publicada con Licencia Creative Commons Reconocimiento Compartir igual 4.0

Creado con eXeLearning (Ventana nueva)