miércoles, 5 de septiembre de 2012


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