P1: Normalización Gobiernos de diferentes países y diversas organizaciones musicales, han creado una base de datos (accesible por Internet, para poder conocer mediante consultas online datos sobre la celebración de concursos internacionales de violín. Los requerimientos de información son: Los violinistas, identificados por (id_violinista, se inscriben dando el nombre y apellidos (nombre, la edad (edad y el país de procedencia (país. También mantendrá la base de datos a los profesores (id_profesor, violinistas de prestigio, con sus nombres completos (nombre y país donde suelen impartir sus clases (país. La denominación del concurso (concurso es única, así como la ciudad (ciudad donde tiene lugar. Sólo el país (país, que vendrá determinado por la ciudad, admite más de un concurso. La periodicidad de los concursos es anual, y tienen establecido, según el año (año, una fecha de comienzo (inicio, un límite superior de edad para participar (límite y un importe para inscribirse (cantidad. La convocatoria (identificada por el concurso y al año en que se celebra dicho concurso, junto con el premio (primer premio, segundo premio, etc. (premio determinarán el importe del mismo (cuantía y el concursante que lo obtuvo (id_violinista, ya que sólo se almacenan los premios que no quedaron vacantes. Los jurados están formados por profesores. La convocatoria (concurso y año y el puesto en el jurado (cargo determinan al profesor (id_profesor. Por último, para los inscritos (id_violinista en una convocatoria (concurso y año, se almacena la fase (fase a la que llegaron en el concurso (Rechazados, Preseleccionados, Semifinalistas y Finalistas. Obtener: 1. Grafo de dependencias. 2. Esquema relacional en 3FN (claves primarias, alternativas y ajenas con cardinalidad mínima de relaciones (mínimo número de relaciones posibles. Nota: se utilizarán obligatoriamente sólo los atributos remarcados en negritas en los requisitos anteriores Peso P1: 40% (40%, 60% Tiempo: 45min.
P2: Escritura de expresiones relacionales Dadas las relaciones: violinistas(id_violinista, nombre, edad, país profesores(id_profesor, nombre, país jurados(concurso, año, cargo, id_profesor premiados(concurso, año, premio, cuantía, id_violinista Pk(id_violinista Pk(id_profesor Pk(concurso, año, cargo Fk1(id_profesor/profesores Pk(concurso, año, premio Fk1(id_violinista/violinistas Se pide: a Defina en AR y CROD expresiones para Id y nombre de violinistas españoles que no han ganado ningún premio en concursos, siendo ruso algún miembro del jurado. b Defina en CROD y CROT expresiones para Id, nombre y país de miembros de jurados que participan en más de un jurado de concursos. c Defina en SQL una expresión para Por año: Año, Id, nombre, país y total de lo ganado en premios por el violinista que ganó más en concursos. Peso P2: 40% (40%, 20%, 40% Tiempo: 45 min. Dadas las relaciones: P3: Reescritura de expresiones relacionales violinistas(id_violinista, nombre, edad, país convocatorias(concurso, año, inicio, límite, cantidad inscritos(concurso, año, id_violinista, fase Pk(id_violinista Pk(concurso, año Pk(concurso, año, id_violinista Fk1(concurso, año/convocatorias FK2(id_violinista/violinistas Y la expresión en CROD: {Id_violinistax, Nombrex violinistas(id_violinista: Id_violinistax, nombre: Nombrex, país:'españa' ( Concursoy(inscritos(concurso: Concursoy, id_violinista: Id_violinistax convocatorias(concurso: Concursoy, inicio:'12/06/2000' ( Id_violinistay(violinistas(id_violinista:Id_violinistay,país:'ITALIA' inscritos(concurso:concursoy,id_violinista:id_violinistay a Expresarla, utilizando una frase escueta, en lenguaje natural. b Rescribir con notación matemática en AR y CROT. c Rescribir con notación WinRdbi en AR y SQL. Peso P3: 20% (20%, 50%, 30% Tiempo: 45 min.
Solución de P1: Normalización CUANTÍA CIUDAD PREMIO CONCURSO INICIO LÍMITE CANTIDAD FASE AÑO CARGO ID_PROFESOR ID_VIOLINISTA NOMBRE EDAD PAÍS Particionamiento. P1 { Id_violinista (nombre, edad, país P2 {Id_profesor (nombre, país P3 {concurso ciudad, ciudad país P4 {(concurso, año (inicio, límite, cantidad P5 {(concurso, año, cargo id_profesor P6 {(concurso, año, premio (id_violinista, cuantía P7 {(concurso, año, id_violinista fase Relaciones. Relación Pk Ak Fk violinistas(id_violinista, Id_violinista nombre, edad, país profesores(id_profesor, id_profesor nombre, país concursos(concurso, concurso ciudad ciudad, país convocatorias(concurso, (concurso, año año, límite, cantidad jurados(concurso, año, cargo, id_profesor (concurso, año, cargo (concurso, año/convocatorias id_profesor/profesores premiados(concurso, año, premio, cuantía, id_violinista inscritos(concurso, año, id_violinista, fase (concurso, año, premio (concurso, año, id_violinista (concurso, año/convocatorias id_violinista/violinistas (concurso, año/convocatorias id_violinista/violinistas
Solución de P2: Escritura de expresiones relacionales a En AR Nombre de violinistas españoles que no han ganado ningún premio en concursos, siendo ruso algún miembro del jurado. nombre (violinistas ( id_violinista (σ (país='españa' (violinistas id_violinista (σ (país='españa' (violinistas id_violinista (premiados (σ (país='rusia' (profesores jurados En CROD Nombre de violinistas españoles que no han ganado ningún premio en concursos, siendo ruso algún miembro del jurado. {Nombrex, Id_violinistax violinistas(id_violinista : Id_violinistax, nombre : Nombrex, país : ESPAÑA ( Id_violinistay( Concursoy( Añoy( Id_violinistax = Id_violinistay premiados(concurso : Concursoy, año : Añoy, id_violinista : d_violinistay ( Idprofesorz (jurados(concurso : Concursoy, año : Añoy, id_profesor : Idprofesorz profesores(id_profesor : Idprofesorz, país : RUSIA b En CROD Id, nombre y país de miembros de más de un jurado de concursos {Id_profesorx, Nombrex, Paísx profesores(id_profesor:id_profesorx,nombre:nombrex,país:paísx ( Concursox, Concursoy, Añox, Añoy (jurados(concurso:concursox,año:añox,id_profesor:id_profesorx jurados(concurso:concursoy,año:añoy,id_profesor:id_profesorx Concursox<>Concursoy Añox<>Añoy En CROT Id, nombre y país de miembros de más de un jurado de concursos {Profesorx.id_profesor,Profesorx.nombre,Profesorx.país profesores(profesorx ( Juradox, Juradoy (jurados(juradox jurados(juradoy Profesorx.id_profesor=Juradox.id_profesor Juradox.id_profesor=Juradoy.id_profesor Juradox.concurso<>Juradoy.concurso Juradox.año<>Juradoy.año
c En SQL Por año: año, Id, nombre, país y total de lo ganado en premios por el violinista que ganó más en concursos. Por año: Año, Id, nombre, país y total de lo ganado en premios por cada violinista. ganado_por_cada_violinista_por_año(año,id_violinista,nombre,país,total_ganado:= select año, violinistas.id_violinista, nombre, país, sum(cuantía from violinistas,premiados where violinistas.id_violinista=premiados.id_violinista group by año, violinistas.id_violinista, nombre, país; El que ganó más en cada año select g1.año, g1.id_violinista, g1.nombre, g1.país, g1.total_ganado from ganado_por_cada_violinista_por_año g1 where not exists(select * from ganado_por_cada_violinista_por_año g2 where g2.año=g1.año and g2.id_violinista<>g1.id_violinista and g2.total_ganado>g1.total_ganado;
Solución de 3: Reescritura de expresiones relacionales 1. Está escrita en CROD y en lenguaje natural es: Id y nombre de violinistas españoles que se ha inscrito en algún concurso que comienza el '12/06/2000' y en el que participa algún italiano. 2. Rescribir con notación matemática en AR y CROT. En CROT: {Violinistax.id_violinista, Violinistax.nombre violinistas(violinistax and Violinistax.país='ESPAÑA' (exists Inscritosy (inscritos(inscritosy and Inscritosy.id_violinista=Violinistax. id_violinista (exists Convocatoriasy (convocatorias(convocatoriasy Convocatoriasy.concurso=Inscritosy.concurso Convocatoriasy.inicio='12/06/2000' (exists Violinistay, Inscritosz (violinistas(violinistay inscritos(inscritosz Violinistay.país='ITALIA' Violinistay.id_violinista=Inscritosz.id_violinista
3. Rescribir con notación WinRdbi en AR y SQL. La base de datos necesaria: @violinistas(id_violinista/numeric,nombre/char,edad/numeric,país/char:id_violin ista @convocatorias(concurso/char,año/numeric,inicio/char,límite/numeric,cantidad/num eric:concurso,año @inscritos(concurso/char,año/numeric,id_violinista/numeric, fase/char:concurso,año, id_violinista,fase En AR: %concursos en los que participa algún italiano participa_italiano:=project concurso, año ((select (país='italia' (violinistas njoin inscritos; %concursos en los que participa algún italiano y comienza el '12/06/2000' participa_italiano_empieza_fecha:=project concurso, año ((project concurso, año (select (inicio='12/06/2000'(convocatorias njoin participa_italiano; %españoles que participan en alguno de dichos concursos participa_español:= project id_violinista, nombre (((select (país='españa'(violinistas njoin inscritos njoin participa_italiano_empieza_fecha; En SQL: select id_violinista, nombre from violinistas v1 where país='españa' and from inscritos i1 where i1.id_violinista=v1. id_violinista and from convocatorias where convocatorias.concurso=i1.concurso and convocatorias.inicio='12/06/2000' and from violinistas v2 and where v2.país='italia' and from inscritos i2 where v2.id_violinista=i2.id_violinis