Ir al contenido

Bases de datos relacionales para principiantes

De WikiJournal

¿Qué es una base de datos relacional?

Imagina que tienes una tienda en línea. Tienes información sobre clientes, sus pedidos y productos. ¿Cómo puedes organizar todos estos datos? Una base de datos relacional permite almacenar información en tablas relacionadas entre sí, similar a las hojas de cálculo de Excel, pero mucho más potente.

Conceptos clave

Tablas

Cada tabla representa una entidad específica. Por ejemplo:

  • Tabla de usuarios (users)
  • Tabla de pedidos (orders)
  • Tabla de productos (products)

Campos (Columnas)

Cada tabla está compuesta por campos. Por ejemplo, para la tabla de usuarios, estos podrían ser:

  • id (identificador único)
  • nombre
  • email
  • teléfono
  • fecha de registro

Registros (Filas)

Estos son los datos concretos en una tabla. Una fila = un registro sobre un usuario, un pedido o un producto.

¿Cómo se relacionan las tablas entre sí?

Claves primarias

Cada tabla debe tener un identificador único para cada registro. Normalmente, este es el campo id:

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    email VARCHAR(100)
);

Claves foráneas

Estos son campos que conectan una tabla con otra. Por ejemplo, en la tabla de pedidos almacenamos el id del usuario:

CREATE TABLE orders (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT,
    order_date DATETIME,
    total_amount DECIMAL(10,2),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

Tipos de relaciones entre tablas

Uno a uno (One-to-One)

Por ejemplo, un usuario puede tener un perfil con información adicional:

CREATE TABLE user_profiles (
    user_id INT PRIMARY KEY,
    address TEXT,
    phone VARCHAR(20),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

Uno a muchos (One-to-Many)

El tipo de relación más común. Por ejemplo, un usuario puede tener muchos pedidos:

  • Un usuario → Muchos pedidos
  • Un producto → Muchos comentarios
  • Una categoría → Muchos productos

Muchos a muchos (Many-to-Many)

Por ejemplo, un pedido puede contener muchos productos, y un producto puede estar en varios pedidos. Para esto, se crea una tabla intermedia:

CREATE TABLE order_items (
    order_id INT,
    product_id INT,
    quantity INT,
    FOREIGN KEY (order_id) REFERENCES orders(id),
    FOREIGN KEY (product_id) REFERENCES products(id),
    PRIMARY KEY (order_id, product_id)
);

Ventajas del modelo relacional

  1. Integridad de los datos: El sistema asegura que todas las relaciones sean válidas.
  2. Sin duplicación: La información se almacena en un solo lugar y se conecta mediante claves.
  3. Flexibilidad: Es fácil añadir nuevas relaciones y modificar la estructura.
  4. Eficiencia: Búsqueda y procesamiento de datos rápidos gracias a los índices.

Ejemplo práctico

Veamos un sistema de blog sencillo:

-- Tabla de usuarios
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50),
    email VARCHAR(100),
    created_at DATETIME
);

-- Tabla de publicaciones
CREATE TABLE posts (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT,
    title VARCHAR(200),
    content TEXT,
    published_at DATETIME,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

-- Tabla de comentarios
CREATE TABLE comments (
    id INT PRIMARY KEY AUTO_INCREMENT,
    post_id INT,
    user_id INT,
    comment_text TEXT,
    created_at DATETIME,
    FOREIGN KEY (post_id) REFERENCES posts(id),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

En este ejemplo:

  • Un usuario puede crear múltiples publicaciones (uno a muchos)
  • Cada publicación puede tener múltiples comentarios (uno a muchos)
  • Cada comentario está relacionado tanto con una publicación como con un usuario

Conclusión

Las bases de datos relacionales son una herramienta poderosa para organizar datos en una aplicación. Comprender los principios básicos de cómo funcionan es esencial para los desarrolladores principiantes. Una estructura de base de datos bien diseñada hace que una aplicación sea más confiable, eficiente y fácil de mantener.