Ejercicios 2004-05 Dpto. Lenguajes y Sistemas Informáticos Universidad de Alicante Modelo Relacional 15a ASIGNATURAS ( cod_asg: domCod, nombre: domNom, curso: domCur, t: domHoras, p: domHoras, l: domHoras ) CP: cod_asg ALUMNOS ( exp: domExp, nombre: domNom, dir: domDir, ciudad: domCiudad, estudios: domEstudios ) CP: exp PROFESOR ( dni: domDni, nombre: domNom, dir: domDir, ciudad: domCiudad ) CP: dni PROF_ASG ( dni: domDni, codigo: domCod, horas: domHoras ) CP: (dni, codigo) CAj: dni → PROFESOR CAj: codigo → ASIGNATURA NOTAS ( exp: domExp, cod_asg: domCod, nota: domNota ) CP: (exp, cod_asg) CAj: exp → ALUMNOS CAj: cod_asg → ASIGNATURA BD1 2004-05 Modelo Relacional 15a ASIGNATURAS ( cod_asg: domCod, nombre: domNom, curso: domCur, t: domHoras, p: domHoras, l: domHoras ) CP: cod_asg ALUMNOS ( exp: domExp, nombre: domNom, dir: domDir, ciudad: domCiudad, estudios: domEstudios ) CP: exp PROFESOR ( dni: domDni, nombre: domNom, dir: domDir, ciudad: domCiudad ) CP: dni PROF_ASG ( dni: domDni, codigo: domCod, horas: domHoras ) CP: (dni, codigo) CAj: dni → PROFESOR CAj: codigo → ASIGNATURA NOTAS ( exp: domExp, cod_asg: domCod, nota: domNota ) CP: (exp, cod_asg) CAj: exp → ALUMNOS CAj: cod_asg → ASIGNATURA BD1 2004-05 Modelo Relacional 15a ALUMNOS NOTAS (exp, cod_asg) ASIGNATURAS PROF_ASG (dni, codigo) PROFESOR BD1 2004-05 Modelo Relacional 15a ALUMNOS NOTAS (exp, cod_asg) ASIGNATURAS PROF_ASG (dni, codigo) PROFESOR Card(ALUMNOS, notas) = ( 0, N) Card(ASIGNATURAS, notas) = (0, N) BD1 2004-05 Modelo Relacional 15a ALUMNOS NOTAS (exp, cod_asg) ASIGNATURAS PROF_ASG (dni, codigo) PROFESOR Card(ALUMNOS, notas) = ( 0, N) Card(ASIGNATURAS, notas) = (0, N) Card(PROFESOR, imparte) = ( 0, N) Card(ASIGNATURAS, imparte) = (0, N) BD1 2004-05 Modelo Relacional 15b PROVEEDORES ( cod_pro: dom_pro, nombre: dom_nombre, estado: dom_estado, ciudad: dom_ciudad ) CP: cod_pro PIEZAS ( cod_pie: dom_pie, nombre: dom_nombre, color: dom_color, peso: dom_peso, ciudad: dom_ciudad ) CP: cod_pie PROYECTOS ( cod_pry: dom_pry, nombre: dom_nombre, ciudad: dom_ciudad ) CP: cod_pry PEDIDOS ( cod_pro: dom_pro, cod_pie: dom_pie, cod_pry: dom_pry, cantidad: dom_cantidad) CP: (cod_pro, cod_pie, cod_pry) CAj: cod_pro → PROVEEDORES CAj: cod_pie → PIEZAS CAj: cod_pry → PROYECTOS BD1 2004-05 Modelo Relacional 15b PROVEEDORES ( cod_pro: dom_pro, nombre: dom_nombre, estado: dom_estado, ciudad: dom_ciudad ) CP: cod_pro PIEZAS ( cod_pie: dom_pie, nombre: dom_nombre, color: dom_color, peso: dom_peso, ciudad: dom_ciudad ) CP: cod_pie PROYECTOS ( cod_pry: dom_pry, nombre: dom_nombre, ciudad: dom_ciudad ) CP: cod_pry PEDIDOS ( cod_pro: dom_pro, cod_pie: dom_pie, cod_pry: dom_pry, cantidad: dom_cantidad) CP: (cod_pro, cod_pie, cod_pry) CAj: cod_pro → PROVEEDORES CAj: cod_pie → PIEZAS CAj: cod_pry → PROYECTOS BD1 2004-05 Modelo Relacional 15b PROVEEDORES ( cod_pro: dom_pro, nombre: dom_nombre, estado: dom_estado, ciudad: dom_ciudad ) CP: cod_pro PIEZAS ( cod_pie: dom_pie, nombre: dom_nombre, color: dom_color, peso: dom_peso, ciudad: dom_ciudad ) CP: cod_pie PROYECTOS ( cod_pry: dom_pry, nombre: dom_nombre, ciudad: dom_ciudad ) CP: cod_pry PEDIDOS ( cod_pro: dom_pro, cod_pie: dom_pie, cod_pry: dom_pry, cantidad: dom_cantidad) CP: (cod_pro, cod_pie, cod_pry) CAj: cod_pro → PROVEEDORES CAj: cod_pie → PIEZAS CAj: cod_pry → PROYECTOS Card(PROVEEDORES, pedidos) = ( 0, N) Card(PIEZAS, pedidos) = ( 0, N) Card(PROYECTOS, pedidos) = (0, N) Card((PROVEEDORES, PIEZAS), pedidos) = ( 0, N) Card((PIEZAS, PROYECTOS), pedidos) = ( 0, N) Card((PROYECTOS, PROVEEDORES), pedidos) = (0,N) BD1 2004-05 Modelo Relacional 15b’ PROVEEDORES ( cod_pro: dom_pro, nombre: dom_nombre, estado: dom_estado, ciudad: dom_ciudad ) CP: cod_pro PIEZAS ( cod_pie: dom_pie, nombre: dom_nombre, color: dom_color, peso: dom_peso, ciudad: dom_ciudad ) CP: cod_pie PROYECTOS ( cod_pry: dom_pry, nombre: dom_nombre, ciudad: dom_ciudad ) CP: cod_pry PEDIDOS ( cod_pro: dom_pro, cod_pie: dom_pie, cod_pry: dom_pry, cantidad: dom_cantidad) CP: (cod_pro, cod_pie, cod_pry) CAj: cod_pro → PROVEEDORES CAj: cod_pie → PIEZAS CAj: cod_pry → PROYECTOS Card(PROVEEDORES, pedidos) = ( 0, N) Card(PIEZAS, pedidos) = ( 0, N) ...+ dependencia de identificador Card(PEDIDOS, parapry) = (1, 1) Card(PROYECTOS, parapry) = (0, N) BD1 2004-05 Modelo Relacional 15c MAR ( codmar: dom_codigomar, nombre: dom_nombre ) CP: codmar RIO ( codrio: dom_pry, nombre: dom_nombre, long: dom_long, codmar: dom_codigomar ) CP: codrio CAj: codmar → MAR COMUNIDAD ( codcomu: dom_codigocomu, nombre: dom_nombre ) CP: codcomu PROVINCIA ( codpro: dom_codigoprov, nombre: dom_nombre, extension: dom_extension, codcomu: dom_codigocomu ) CP: codpro CAj: codcomu → COMUNIDAD PASAR_POR ( codrio: dom_codigorio, codpro: dom_codigoprov) CP: (codrio, codpro) CAj: codrio → RIO CAj: codpro → PROVINCIA BD1 2004-05 Modelo Relacional 15c MAR COMUNIDAD RIO (codrio) codmar PROVINCIA (codpro) codcomu PASAR_POR (codrio, codpro) Card(RÍO, desemboca) = ( 0, 1) Card(MAR, desemboca) = (0, N) Card(PROVINCIA, está_en) = ( 0, 1) Card(COMUNIDAD, está_en) = (0, N) Card(RÍO, pasar_por) = ( 0, N) Card(COMUNIDAD, pasar_por) = (0, N) BD1 2004-05 Modelo Relacional 15d PROP_ANTERIOR ( ALQUILAR ( CIF: dom_cif, NIF: dom_nif, NOMBRE: dom_nombre, MATRICULA: dom_matricula, DIRECCION: dom_dirección, DESDE: dom_fecha, TELEFONO: dom_telefono) HASTA: dom_fecha, CP: CIF IMPORTE: dom_importe, DESCUENTO: CLIENTE ( VEHICULO ( dom_descuento) NIF: dom_nif, MATRICULA: CP: (NIF, MATRICULA, NOMBRE: dom_nombre, dom_matricula, DESDE) FECH_NAC: dom_edad, MODELO: dom_modelo, CAj: NIF → CLIENTE DIRECCION: dom_dire, AÑO_FAB: dom_año, CAj: MATRICULA → CIFempr: dom_cif) COLOR: dom_color, VEHÍCULO CP: NIF CIFanterior: dom_cif) CP: MATRICULA CAj: CIFempr → EMPRESA CAj: CIFanterior → EMPRESA EMPRESA ( CIF: dom_cif, NOMBRE: dom_nombre, PAIS_SEDE: dom_país) CP: CIF BD1 2004-05 Modelo Relacional 15d PROP_ANTERIOR EMPRESA CLIENTE (NIF), CIFempr VEHÍCULO (MATRICULA) CIFanterior ALQUILAR (NIF, MATRICULA, DESDE) Card( CLIENTE, R1) = ( 0, 1) Card( EMPRESA, R1) = (0, N) Card( VEHÍCULO, R2) = ( 0, 1) Card( EMPRESA, R2) = (0, N) Card( CLIENTE, R3) = ( 0, N) Card( VEHÍCULO, R3) = (0, N) BD1 2004-05 Modelo Relacional 15e AGENCIA ( CIF: dom_cif, NOMBRE: dom_nombre, PAIS_SEDE: dom_país) CP: CIF COMPAÑIA ( CIF: dom_cif, NOMBRE: dom_nombre, DIRECTOR: dom_nombre) CP: CIF MODELO ( DNI: dom_dni, NOMBRE: dom_nombre, EDAD: dom_edad, DIRECCION: dom_dire, CIFage: dom_cif) CP: DNI Caj: CIFage → AGENCIA FOTOGRAFO ( DNI: dom_dni, NOMBRE: dom_nombre, DIRECCION: dom_dire) CP: DNI TRABAJAR ( DNIfot: dom_dni, CIFage: dom_cif, DESDE: dom_fecha, HASTA: dom_fecha) CP: ( DNIfot, CIFage) CAj: DNIfot → FOTOGRAFO CAj: CIFage → AGENCIA ANUNCIAR ( DNImod: dom_dni, CIFcía: dom_cif) CP: (DNImod, CIFcía) CAj: DNImod → MODELO CAj: CIFcía → COMPAÑIA BD1 2004-05 Modelo Relacional 15e AGENCIA COMPAÑIA MODELO CP: DNI Caj: CIFage → AGENCIA FOTOGRAFO TRABAJAR CP: (DNIfot, CIFage) CAj: DNIfot → FOTOGRAFO CAj: CIFage → AGENCIA ANUNCIAR CP: (DNImod, CIFcía) CAj: DNImod → MODELO CAj: CIFcía → COMPAÑIA BD1 2004-05 Modelo Relacional 15e MODELO CP: DNI Caj: CIFage → AGENCIA TRABAJAR CP: (DNIfot, CIFage) CAj: DNIfot → FOTOGRAFO CAj: CIFage → AGENCIA ANUNCIAR CP: (DNImod, CIFcía) CAj: DNImod → MODELO CAj: CIFcía → COMPAÑIA Card( MODELO, R1) = ( 0, 1) Card( AGENCIA, R1) = (0, N) Card( FOTÓGRAFO, R2) = ( 0, N) Card( AGENCIA, R2) = (0, N) Card( MODELO, R3) = ( 0, N) Card( COMPAÑÍA, R3) = (0, N) BD1 2004-05 Modelo Relacional 16 perros ASOCIACION CP:CIF PROPIETARIO CP:DNI ESCUELA CP: CIF PERTENECER CP:( DNI, CIF ) CAj: DNI → PROPIETARIO CAj: CIF → ASOCIACION PERRO CP: NUMPLACA CAj: DNI → PROPIETARIO ADIESTRAR CP: ( NUMPLACA, CIF ) CAj: NUMPLACA → PERRO CAj: CIF → ESCUELA BD1 2004-05 Modelo Relacional 16 ASOCIACION CP:CIF PROPIETARIO CP:DNI ESCUELA CP: CIF Card(perro, esDe)= (0,1) Card(propietario, esDe)= (0,N) PERTENECER CP:( DNI, CIF ) CAj: DNI → PROPIETARIO CAj: CIF → ASOCIACION PERRO NUMPLACA pertenecer)=(0,N) CP: CAj: DNI → PROPIETARIO Card(propietario, Card(asociación, pertenecer)=(0,N) Card(perro, adiestrar)=(0,N) Card(escuela, adiestrar)=(0,N) ADIESTRAR CP: ( NUMPLACA, CIF ) CAj: NUMPLACA → PERRO CAj: CIF → ESCUELA BD1 2004-05 Modelo Relacional 16b Todos los propietarios tienen algún perro = F los perros pueden tener muchos propietarios = F Un perro puede ser adiestrado varias veces en la misma escuela = F ASOCIACION CP:CIF PROPIETARIO CP:DNI ESCUELA CP: CIF PERTENECER CP:( DNI, CIF ) CAj: DNI → PROPIETARIO CAj: CIF → ASOCIACION PERRO CP: NUMPLACA CAj: DNI → PROPIETARIO ADIESTRAR CP: ( NUMPLACA, CIF ) CAj: NUMPLACA → PERRO CAj: CIF → ESCUELA BD1 2004-05 17 matrícula Modelo Relacional ALUMNO CP: (DNI) GRUPO CP: (CURSO, LETRA) RECIBE CP: (DNI, CURSO,LETRA, COD) CAlt: (CURSO, LETRA, COD) CAj: (DNI) → ALUMNO CAj: (COD) → ASIGNATURA CAj: (CURSO, LETRA) → GRUPO ASIGNATURA CP: (COD) MATRÍCULA CP: (DNI, COD) CAj: (DNI) → ALUMNO CAj: (COD) → ASIGNATURA ¿algún detalle espectacular? BD1 2004-05 Modelo Relacional 17 ALUMNO CP: (DNI) RECIBE CP: (DNI, CURSO,LETRA, COD) CAlt: (CURSO, LETRA, COD) GRUPO CP: (CURSO, LETRA) ASIGNATURA CP: (COD) CAj: (DNI) → ALUMNO CAj: (COD) → ASIGNATURA CAj: (CURSO, LETRA) → GRUPO MATRÍCULA CP: (DNI, COD) CAj: (DNI) → ALUMNO CAj: (COD) → ASIGNATURA ¿definición de clave candidata? vamos a suponer que sólo está CP: (DNI, CURSO, LETRA, COD) BD1 2004-05 Modelo Relacional 17 ALUMNO CP: (DNI) GRUPO CP: (CURSO, LETRA) MATRÍCULA CP: (DNI, COD) CAj: (DNI) → ALUMNO CAj: (COD) → ASIGNATURA RECIBE ASIGNATURA CP: (COD) CP: (DNI, CURSO, LETRA, COD) CAj: (DNI) → ALUMNO CAj: (COD) → ASIGNATURA CAj: (CURSO, LETRA) → GRUPO Card(ALUMNO, se_matrícula)= (0,N) Card(ASIGNATURA, se_matricula)= (0,N) Card((ALUMNO, GRUPO), recibe)= (0,N) Card(ASIGNATURA, recibe)= (0,N) Card((ALUMNO, ASIGNATURA), recibe)=(0,N) Card(GRUPO, recibe)= (0,N) Card((ASIGNATURA, GRUPO), recibe)= (0,N) Card(ALUMNO, recibe)= (0,N) BD1 2004-05 Modelo Relacional 17b Todos los alumnos están matriculados en al menos una asignatura = F Puede haber varias matrículas de un mismo alumno sin asignatura (esperando a decidirse más adelante si se matricula o no) = F Podemos mantener la información de varias matrículas de un mismo alumno en la misma asignatura pero en años distintos = F ALUMNO CP: (DNI) GRUPO CP: (CURSO, LETRA) ASIGNATURA CP: (COD) MATRÍCULA CP: (DNI, COD) CAj: (DNI) → ALUMNO CAj: (COD) → ASIGNATURA RECIBE CP: (DNI, CURSO, LETRA, COD) CAj: (DNI) → ALUMNO CAj: (COD) → ASIGNATURA CAj: (CURSO, LETRA) → GRUPO BD1 2004-05 Modelo Relacional 17b Cualquier alumno podría recibir clase de una asignatura sin estar matriculado en ella = V ALUMNO CP: (DNI) Cualquier grupo puede tener ninguno o muchos alumnos asignado = V ASIGNATURA CP: (COD) GRUPO CP: (CURSO, LETRA) MATRÍCULA CP: (DNI, COD) CAj: (DNI) → ALUMNO CAj: (COD) → ASIGNATURA Cualquier asignatura, en un grupo en concreto, puede tener ninguno o muchos RECIBE alumnos asignados = V CP: (DNI, CURSO, LETRA, COD) CAj: (DNI) → ALUMNO CAj: (COD) → ASIGNATURA CAj: (CURSO, LETRA) → GRUPO BD1 2004-05