viernes, 11 de abril de 2014

ejercicio Entidad Relacion corridas de toros ó plaza de toros script y modelo

bueno es un ejercicio para analizar mucho y hacer una buena relación así dice el enunciado:

UNIVERSO DEL DISCURSO
La asociación "Amigos de la Fiesta" desea recoger en una base de datos toda la información acerca
de las corridas de todos que se celebran en España y de todos los datos relacionados con ellas.
• Se desea tener información acerca de cada corrida, identificada conjuntamente por un número
de orden, la feria en la que se celebra y el año de celebración (por ejemplo: orden = 2, feria =
San Isidro, Año = 1999).
• En una determinada corrida actúan una serie de toreros (mínimo 1 y máximo 3) de los que
desea guardar su DNI, nombre, apodo y fecha en que tomó la alternativa (fecha en la que se
convirtió en matador de toros). Además se desea saber quien fue el torero que le dio la
alternativa (padrino) en su día (un torero puede dar la alternativa a varios toreros o a ninguno).
• En cada corrida un torero obtiene una serie de premios (cuántas orejas, cuántos rabos y si
salió por la puerta grande o no) de los que se desea mantener información.
• Cada torero puede tener un apoderado del que es protegido. A su vez, un apoderado lo puede
ser de varios toreros. De él se desea saber su DNI, nombre, dirección y teléfono.
• Una corrida se celebra en una plaza de toros de la que se desea saber su nombre que se
supone único, localidad, dirección y aforo. En una misma plaza se pueden celebrar varias
corridas de toros.
• En cada corrida son estoqueados al menos 6 toros. Cada toro viene identificado por el código
de la ganadería a la que pertenece, el año en que nació y un número de orden. Además se
desea mantener información acerca de su nombre y color así como el orden en que fue
toreado.
• Cada toro pertenece a una ganadería determinada. De cada ganadería se pretende saber su
código, localidad y antigüedad (fecha de creación).
Proponer
Modelo Grafico, 
Modelo Logico Conceputal, 
Crear las Tablas.


para modelo grafico en la siguiente imagen se muestra:


y para el script lo analice y lo cree de la siguiente manera:




drop table estoqueado;
drop table toros;
drop table ganaderia;
drop table actuan;
drop table padrino;
drop table toreros;
drop table apoderado;
drop table corridas;
drop table plaza;
create table  plaza(
nombre  varchar(35) primary key,
localidad   varchar(35),
direccion    varchar(35),
aforo         varchar(35)
);
create table corridas(
orden     number(10),
feria  varchar(35)  ,
ano    date,
primary key (orden,feria,ano)
);
create table apoderado(
dni  number(15) primary key,
nombre  varchar (35),
direccion   varchar(35),
telefono varchar (35)
);
create table toreros   (
dni  number(15) primary key,
nombre varchar (35) ,
apodo  varchar (35),
dni_apoderado  number(15),
constraint to_dni_fk foreign key(dni_apoderado) references apoderado(dni)
);
create table padrino(
dni_padrino  number(15),
dni_torero   number(15),
fecha_alternativa  date,
constraint pa_dni_padrino_fk foreign key(dni_padrino) references toreros(dni),
constraint pa_dni_torero_fk foreign key(dni_torero) references toreros(dni)
);
create table actuan(
orden     number(10),
feria  varchar(35) ,
ano    date,
n_orejas number(8),
n_rabos number(8),
puerta_grande number(1),
dni_torero number(15),
constraint ac_fe_fk foreign key(orden,feria,ano) references corridas(orden,feria,ano),
constraint ac_dni_fk foreign key(dni_torero) references toreros(dni)
);
create table ganaderia(
codigo     number(15) primary key,
localidad  varchar(35) ,
antiguedad varchar (35)
);

create table toros(
no     number(15) primary key,
ano          date,
nombre varchar(35),
color varchar(35),
orden   number(15),
codigo_g number(15),
constraint to_co_fk foreign key(codigo_g) references ganaderia(codigo)
);

create table estoqueado(
orden_c     number(10),
feria  varchar(35)  ,
ano    date,
no_toro number(15),
orden  number(15),
constraint es_or_fe__an_fk foreign key(orden_c,feria,ano) references corridas(orden,feria,ano),
constraint es_no_fk foreign key(no_toro) references toros(no)
);