SISTEMAS DE GESTIÓN DE BASES DE DATOS EXAMEN FINAL - Septiembre de 2001 PRIMER PARCIAL 1. Realice el diagrama E-R para el diseño de una base de datos que refleje la información sobre resultados en el Campeonato del Mundo de Motociclismo del 2002. El sistema debe contemplar los siguientes datos y restricciones: • De cada piloto se quiere registrar su número de Pasaporte (obligatorio y único), su nombre, su edad y un identificador que se le asigna dentro del sistema informático para distinguirle del resto. El Campeonato del Mundo se compone de varios grandes premios. Para cada Gran Premio se guardará un identificador, su nombre y la longitud del circuito (con dos decimales). Un piloto puede correr en un Gran Premio en una o más de las distintas categorías (125, 250 y 500) y para cada una se quiere guardar la posición en la que finalizó. Cuando se celebra un Gran Premio en un circuito los pilotos realizan varias sesiones, siempre las mismas. Para cada sesión se almacena un identificador y su descripción (entrenamientos libres, entrenamientos oficiales, calentamiento y carrera). Se quiere almacenar a su vez el mejor tiempo obtenido por cada piloto en cada sesión en la que participa para todos los Grandes Premios. Los pilotos pueden ser privados, cuando se financian ellos mismo el campeonato, u oficiales, cuando son financiados por una marca. Para los privados se quiere almacenar el nombre de su equipo y el presupuesto del que dispone. Para los oficiales se almacena la marca y el caché que tiene. Entre los pilotos hay grandes rivalidades por lo que se quiere guardar información de quién odia a quién de la forma odiador y odiado. • • • • • Una vez realizado el diagrama pasarlo a tablas del modelo relacional y dar las instrucciones SQL necesarias para su creación, especificando claramente los atributos que funcionan como P.K., F.K. (diciendo a que tabla corresponden) y los valores únicos si existen. NOTA: - Reflejar las cardinalidades mínima y máxima para las relaciones BINARIAS Realizar las siguientes consultas en álgebra relacional: 1) Obtener el nombre del piloto, el identificador del gran premio, la categoría, el identificador de la sesión y los tiempos obtenidos en cada una de estas sesiones, para aquellos pilotos menores de 20 años. 2) Nombres de los pilotos que han participado en todos los grandes premios SISTEMAS DE GESTIÓN DE BASES DE DATOS EXAMEN FINAL - Septiembre de 2001 PRIMER PARCIAL Longitud Nombre Nombre ID_PIL Categoría. ID_GP Pasaporte Resul GRAN PREMIO Posición Edad PILOTO N:M odios N:M Tiempo tiemp N:M ID_SESION SESION PRIVADO Descrip Equipo Caché OFICIAL Presupuesto GP = ( ID_GP, nombre, longitud) PILOTOS = (ID_PIL, nombre, edad, pass) ODIOS = (ID_PLI_ODIADOR,ID_PIL_ODIADO) PRIVADOS = (ID_PIL, Equipo, Presupuesto) OFICIALES = (ID_PIL, Marca,Caché) RESULTADOS = ( ID_PIL, ID_GP, Categoría, posición) SESIONES = ( ID_SES, Descripción) TIEMPOS = ( ID_PIL,ID_GP, Categoría, ID_SES, Tiempo) Create domain Dom_Id as Integer; create table GP ( ID_gp Nombre Longitud ); Dom_Id not null primary key, Varchar (15), decimal(4,2) create table Pilotos ( ID_PIL Nombre Edad Pass ); Dom_Id not null primary key, Varchar (15), Integer, Varchar (10) not null unique create table Privados ( ID_PIL Equipo Presupuesto ); Dom_Id not null primary key references Pilotos (ID_PIL), Varchar (15), Integer Marca SISTEMAS DE GESTIÓN DE BASES DE DATOS EXAMEN FINAL - Septiembre de 2001 PRIMER PARCIAL create table Oficiales ( ID_PIL Marca Cache ); Dom_Id not null primary key references Pilotos (ID_PIL), Varchar (15), Integer create table Odios ( ID_PIL_ODIADOR Dom_Id not null references Pilotos (ID_PIL), ID_PIL_ODIADO Dom_Id not null references Pilotos (ID_PIL), Primary key (ID_PIL_ODIADOR, ID_PIL_ODIADO) ); create table Resultados ( ID_PIL Dom_Id not null references Pilotos (ID_PIL) on delete cascade on update cascade, ID_GP Dom_Id not null references GP(ID_GP) on delete cascade on update cascade, Categoria Integer not null, Posicion Integer, Primary Key (ID_PIL, ID_GP, Categoria) ); create table Sesiones ( ID_SES Descripcion ); Dom_Id not null primary key, Varchar (15) create table Tiempos ( ID_PIL ID_GP Categoria ID_SES Dom_Id not null, Dom_Id not null, Integer not null, Dom_id not null references Sesiones(ID_SES) on delete set null on update cascade, Tiempo Decimal (5,3), Foreign key (ID_PIL, ID_GP, Categoria) references Resultados(ID_PIL,ID_GP, Categoria), Primary Key (ID_PIL, ID_GP, Categoria, ID_SES) ); Realizar las siguientes consultas en álgebra relacional: 3) Obtener el nombre del piloto, el identificador del gran premio, la categoría, el identificador de la sesión y los tiempos obtenidos en cada una de estas sesiones, para aquellos pilotos menores de 20 años. Πnombre, ID_GP, Categoria, ID_SES, Tiempo(TIEMPOS x RESULTADOS x(σedad< 20(PILOTOS)) 4) Nombres de los pilotos que han participado en todos los grandes premios Πnombre, ID_GP ( RESULTADOS x PILOTOS) ÷ Π ID_GP ( GP)