Buenas tardes, me gustaría saber si alguien puede ayudarme con una práctica de diseño de bases de datos. La práctica consiste en crear una base de datos (tablas), incluir un atributo derivado y utilizar disparadores. El problema en un principio es la creación de las tablas. Podrías ayudarme por favor?
El enunciado es el siguiente:
Se desea gestionar la información correspondiente a la Vuelta ciclista España a lo largo de las distintas ediciones. Para ello es necesario almacenar información sobre los ciclistas y equipos partiipantes en cada edición, así como los tiempos empleados por los ciclistas en cada una de las etapas.
Un ciclista profesional se identifica a traves del numero de ficha y de el se conoce también su nombre, su fecha de nacimiento, su nacionalidad y el año en el que pasó al campo profesional. Para cada equipo se almacena su nombre, que será único, así como su nacionalidad. En cada edición de la vuelta, los equipos inscribirán a los ciclistas. Un ciclista puede haber pertenecido a distintos equipos pero solo a uno en cada edición.
Una etapa, que puede ser en línea o contrarreloj, se celebra un dia determinado con un origen, un destino y una longitud que se mide en km. Las etapas se identifican mediante un numero que indica su orden dentro de la prueba-
Un ciclista emplea un determinado tiempo en completar los km de una determinada etapa. Esta información información resulta fundamental para realizar la clasificación individual y por equipos. También se debe controlar los ciclistas que han abandonado una etapa y por tanto abandonan la vuelta.
Hay diferentes eventos que pueden aparecer en una etapa como son las metas volantes, los puertos de montaña y la llegada. DE los eventos se desea conocer el tipo, el lugar y el punto kilometrico dentro de la etapa en donde se situan. Hay que considerar que en un punto km de una etapa solo puede aparecer un evento. Para cada evento la organización ha establecido cuantos puntos sumarán los corredores que superen dicho evento en uno de los tres primeros puestos. Por tanto, para completar estas clasificaciones, se de conocer los ciclistas que han ocupado los tres primeros lugares en cada uno de los eventos de una etapa.
Escribir un script SQL que permita, como mínimo:
- crear las tablas implicadas teniendo en cuenta las restricciones de integridad adecuadas.
-el diseño deberá incluir al menos un atributo derivado, por ejemplo número de ediciones de la vuelta ciclista en las que ha participado cada corredor, número de equipos participantes en cada edición...
-cargar un pequeño juego de datos de prueba inicial en dichas tablas.
-crear los disparadores necesarios para mantener actualizado el atributo derivado, de modo que se actualice automaticamente.
-suponiendo que los corredores están identificados como usuarios de la base de datos con un código coincidente con su login de usuario, crear una vista con los permisos adecuados para que cada corredor pueda consultar el número de etapas en las que ha participado en cada edición y el tiempo total empleado por edición. Las tablas que tengo realizadas son las siguientes:
Código:
CREATE table CICLISTA(
NUMFICHA integer not null primary key check (NUMFICHA >0),
NOMBRE varchar (20) not null,
APE1 varchar (20) not null,
APE2 varchar (20) not null,
NACIONALIDAD varchar (10) not null,
DEBUT date default sysdate not null,
EQUIPO varchar (20) not null references EQUIPO (NOMBRE));
CREATE table EQUIPO (
NOMBRE varchar (20) not null primary key,
NACIONALIDAD varchar (10) not null);
CREATE table ETAPA (
TIPO varchar (10) not null check (TIPO ='LINEA' OR TIPO ='CONTRARRELOJ',
DIA date default sysdate not null,
ORIGEN varchar (10) not null primary key,
DESTINO varchar (10) not null primary key,
LONGITUD integer not null check (LONGITUD >0),
NUMORDEN Integer not null primary key check (NUMORDEN >0),
PRIMERO integer not null references CICLISTA (NUMFICHA),
SEGUNDO integer not null references CICLISTA (NUMFICHA),
TERCERO integer not null references CICLISTA (NUMFICHA));
CREATE table EVENTO (
TIPOE varchar (10) not null check (TIPOE = 'META' OR TIPOE = 'LLEGADA' OR TIPOE= 'PUERTO'),
LUGAR varchar (10) not null primary key,
PTOKM integer not null primary key (PTOKM >=0),
NUMORDENE integer not null references ETAPA (NUMORDEN),
PRIMERO integer not null references CICLISTA (NUMFICHA),
SEGUNDO integer not null references CICLISTA (NUMFICHA),
TERCERO integer not null references CICLISTA (NUMFICHA));
¿Habría que crear más tablas? ¿Cómo podemos saber el numero de ediciones y en cuáles ha participado cada ciclista?
Por favor necesito ayuda urgente!!
Gracias de antemano