problema #3
Problema de diseño de bases de datos
Supongamos que se nos ha encargado el desarrollo de un sistema de información para
una galería de arte. Tras analizar el problema, hemos obtenido la siguiente lista de requisitos:
• El sistema ofrecerá información acerca de las distintas exposiciones que estén programadas
(título, descripción, fecha de inauguración y fecha de clausura).
• En cada exposición se expondrán obras de distintos artistas. Cada obra vendrá identificada
por un número de registro. El sistema informará acerca del título, artista, estilo y precio de
salida de cada una de las obras de arte expuestas en las exposiciones.
• Cada obra tiene un propietario, que suele ser el artista que la creó, aunque esto no es
necesariamente así.
• Las obras expuestas se pueden comprar haciéndole ofertas a sus propietarios. Al término de
la exposición, el propietario de una obra puede vender la obra a la persona que haya
realizado la mejor oferta.
NOTA: Es esencial que en la base de datos no se almacenen datos de forma redundante, para lo
cual hemos de tener en cuenta que una misma persona puede ser propietaria de una obra de arte
y realizar ofertas para comprar otras obras de arte. De hecho, incluso puede ser responsable de
la creación de alguna de las obras expuestas.
DIAGRAMA:
TABLAS:
CODIGO:
|
Exposicion
|
|
|
Num_exposicion
|
INT,
primary key
|
|
Titulo
|
VARCHAR(25)
|
|
Fecha_inaguracion
|
DATE
|
|
Fecha_clausura
|
DATE
|
|
Descripcion
|
VARCHAR(50)
|
CREATE
TABLE exposicion(
Num_exposicion INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Titulo
VARCHAR(25) NOT NULL,
Fecha_inaguracion
DATE NOT NULL,
Fecha_clausura
DATE NOT NULL,
Descripcion VARCHAR(50));|
Obra
|
|
|
Num_obra
|
INT,
primary key
|
|
Titulo
|
VARCHAR(30)
|
|
Estilo
|
VARCHAR(20)
|
|
Precio_salida
|
DECIMAL(9,2)
|
|
Num_artista
|
INT,
foreign key
|
CREATE TABLE obra(
Num_obra
INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Titulo VARCHAR(30) NOT NULL,
Estilo VARCHAR(20) NOT NULL,
Precio_salida DECIMAL (9,2) NOT
NULL,
Num_artista
INT FOREIGN KEY (num_artista) REFERENCES artista (num_artista) ON DELETE
CASCADE );
|
Propietario
|
|
|
Num_propietario
|
INT,
primary key
|
|
Nom_propietario
|
VARCHAR(20)
|
|
Apell1_propietario
|
VARCHAR(20)
|
|
Apell2_propietario
|
VARCHAR(20)
|
CREATE TABLE propietario(
Num_propietario
INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Nom_propietario VARCHAR(20) NOT
NULL,
Apell1_propietario VARCHAR(20)
NOT NULL,
Apell2_propietario VARCHAR(20)
NOT NULL,


No hay comentarios:
Publicar un comentario