Desarrollo de aplicaciones en entornos de IV generación y con herramientas CASE Examen FINAL 15-Marzo-2006 2005/2006 SOLUCIONES Nombre: 1. I.E.S. Vecindario Realizar el diagrama representativo del modelo Entidad-Relación que representa el supuesto anteriormente citado, sabiendo que se requiere, como mínimo, almacenar la siguiente información: b) DNI del alumno, nombre del alumno, primer apellido del alumno, segundo apellido del alumno, fecha de nacimiento del alumno y notas del alumno. c) Código del módulo, nombre del módulo, curso en donde se imparte el módulo, horas totales de duración del módulo y horas semanales en las que se imparte el módulo. d) DNI del profesor, nombre del profesor, primer apellido del profesor, segundo apellido del profesor, código postal de la localidad donde reside el profesor y localidad donde reside el profesor. Tras una lectura exhaustiva del enunciado, obtenemos las siguientes entidades y relaciones: RELACIONES Se encuentran matriculados en Es impartido por ENTIDADES ALUMNOS MODULOS PROFESORES Del enunciado, se podría haber llevado a la conclusión de la existencia de dos entidades más, denominadas CURSOS y NOTAS, pero tras una lectura de la información que se desea almacenar así como de las características que va a contener dicha información, se desprende que curso simplemente va a ser un atributo más con información a almacenar sobre un determinado módulo, mientras que nota servirá de nexo entre la información de un alumno en un determinado módulo. Con esto, llegamos que las características de las relaciones son: ALUMNOS Se encuentran matriculados en MODULOS. MODULOS Es impartido por PROFESORES. Grado 2. Grado 2. Tipo de Correspondencia (N:M) Tipo de Correspondencia (1:1) Los atributos a indicar, subrayando aquellos que son atributos identificativos principales, son: ALUMNOS : DNI, Nombre, Apel1, Apel2, Fnac MODULOS : CodMod, Nombre, Curso, Horas, HS PROFESORES : DNI-P, Nombre, Apel1, Apel2, Cpostal, Localidad Se encuentran matriculados en : DNI, CodMod, Nota Es impartido por : DNI-P, CodMod Si realizamos a continuación el diagrama que representa dicho modelo Entidad-Relación, nos quedaría lo siguiente: DNI Nombre Apel1 Apel2 CodMod Nombre DNI Se encuentran matriculados en ALUMNOS Curso Horas MODULOS CodMod (N:M) 2 HS Fnac DNI_P Nombre Apel1 Apel2 DNI_P CodMod PROFESORES Cpostal Localidad Es Impartido por (1:1) 2 1 Desarrollo de aplicaciones en entornos de IV generación y con herramientas CASE Examen FINAL 15-Marzo-2006 2005/2006 SOLUCIONES Nombre: 2. I.E.S. Vecindario Generar el correspondiente modelo relacional, implementándolo directamente mediante las instrucciones necesarias en MySQL, acorde a las restricciones impuestas a continuación: a. b. c. d. e. f. g. La nota de los alumnos debe estar entre 0 y 10, sin dígitos decimales. El DNI de un alumno y de un profesor estará formado por 9 caracteres alfanuméricos. El código del módulo debe estar formado por 3 caracteres alfabéticos. El curso donde se imparte un módulo debe ser un número cuyo valor puede ser 1 ó 2. El número total de horas de duración de un módulo debe ser más de 80 horas. Las horas semanales en las que se imparte un módulo debe estar comprendido entre 2 y 10. El código postal debe contener un valor entre 35000 y 38999. CREATE TABLE ALUMNOS ( DNI CHAR(9) NOT NULL, Nombre CHAR(25) NOT NULL, Apel1 CHAR(25) NOT NULL, Apel2 CHAR(25) NOT NULL, Fnac NUMERIC(8), CONSTRAINT PK_ALUMNOS PRIMARY KEY(DNI) ); CREATE TABLE PROFESORES ( DNI CHAR(9) NOT NULL, Nombre CHAR(25) NOT NULL, Apel1 CHAR(25) NOT NULL, Apel2 CHAR(25) NOT NULL, Cpostal NUMERIC(5), Localidad CHAR(25), CodMod CHAR(3), CONSTRAINT PK_PROFESORES PRIMARY KEY(DNI), CONSTRAINT I_PROFESORES INDEX (CodMod), CONSTRAINT FK_PROFESORES FOREIGN KEY(CodMod) REFERENCES MODULOS(CodMod) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT C_PROFESORES CHECK (Cpostal BETWEEN 35000 AND 38999) ); CREATE TABLE MODULOS ( CodMod CHAR(3) NOT NULL, Nombre CHAR(50) NOT NULL, Curso INT(1) NOT NULL, Horas INT(4), HS INT(1), CONSTRAINT PK_MODULOS PRIMARY KEY(CodMod), CONSTRAINT C_CURSO CHECK (Curso=1 OR Curso=2), CONSTRAINT C_HORAS CHECK (Horas>80), CONSTRAINT C_HS CHECK (HS BETWEEN 2 AND 10) ); CREATE TABLE NOTAS ( DNI CHAR(9) NOT NULL, CodMod CHAR(3) NOT NULL, Nota CHAR(9) NOT NULL, CONSTRAINT PK_NOTAS PRIMARY KEY(DNI, CodMod), CONSTRAINT I_NOTAS1 INDEX (DNI), CONSTRAINT I_NOTAS2 INDEX (CodMod), CONSTRAINT FK_NOTAS1 FOREIGN KEY(DNI) REFERENCES ALUMNOS(DNI) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT FK_NOTAS2 FOREIGN KEY(CodMod) REFERENCES MODULOS(CodMod) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT C_NOTAS CHECK (Nota BETWEEN 0 AND 10) ); 2