Tabla de Contenidos

01 - Del diagrama de clases al modelo relacional

El modelo relacional organiza los datos en tablas: cada tabla tiene columnas (los atributos) y filas (cada registro). El diseño parte del diagrama de clases de Entornos: las entidades y sus relaciones se traducen a tablas.

1. De entidad a tabla

@startuml
class Book {
  - id: long
  - title: String
  - stockQuantity: int
}
@enduml

CREATE TABLE book (
    id             BIGINT PRIMARY KEY,
    title          VARCHAR(200) NOT NULL,
    stock_quantity INT NOT NULL DEFAULT 0
);

Concepto del diagrama Concepto relacional
Clase (entidad) Tabla
Atributo Columna
Identificador Clave primaria
Instancia (objeto) Fila

2. Clave primaria

La clave primaria identifica cada fila de forma única. Lo habitual es un identificador numérico autogenerado:

CREATE TABLE book (
    id    BIGINT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(200) NOT NULL
);

3. Relaciones

3.1 Uno a muchos (1:N)

Una editorial publica muchos libros; cada libro pertenece a una editorial. La tabla del lado *muchos* lleva la clave foránea:

CREATE TABLE publisher (
    id   BIGINT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

CREATE TABLE book (
    id           BIGINT AUTO_INCREMENT PRIMARY KEY,
    title        VARCHAR(200) NOT NULL,
    publisher_id BIGINT,
    FOREIGN KEY (publisher_id) REFERENCES publisher (id)
);

@startuml
class Publisher
class Book

Publisher "1" -- "0..*" Book
@enduml

Si un libro debe tener editorial, la columna es NOT NULL; si es opcional, admite NULL.

3.2 Muchos a muchos (N:M)

Un libro puede tener varios autores y un autor varios libros. Se resuelve con una tabla de unión que contiene las dos claves foráneas:

CREATE TABLE author (
    id   BIGINT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

CREATE TABLE book_author (
    book_id   BIGINT NOT NULL,
    author_id BIGINT NOT NULL,
    PRIMARY KEY (book_id, author_id),
    FOREIGN KEY (book_id) REFERENCES book (id),
    FOREIGN KEY (author_id) REFERENCES author (id)
);

3.3 Uno a uno (1:1)

Cada fila de una tabla corresponde a exactamente una fila de otra. La clave foránea se declara con UNIQUE:

CREATE TABLE book_detail (
    book_id     BIGINT PRIMARY KEY,
    synopsis    TEXT NOT NULL,
    FOREIGN KEY (book_id) REFERENCES book (id)
);

4. Composición y atributos complejos

En el diagrama, una composición (por ejemplo Order *– OrderLine) se traduce como 1:N: la parte vive en su propia tabla con clave foránea. Un atributo que es una colección simple (etiquetas, teléfonos) suele convertirse también en tabla.

Relación en el diagrama En el modelo relacional
Asociación 1:N Clave foránea en el lado N
Asociación N:M Tabla de unión
Composición Tabla propia con clave foránea obligatoria
Agregación Tabla propia con clave foránea
El diagrama de clases describe el diseño; el modelo relacional es su traducción a tablas. Las decisiones (dónde va cada clave foránea, si una relación es obligatoria) son parte del diseño de datos.