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
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) );
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 |