Departamento de Lenguajes y Sistemas Informáticos E.T.S. Ingeniería Informática. Universidad de Sevilla Avda Reina Mercedes s/n. 41012 Sevilla Bases de Datos 23/abr/2009 Tiempo: 30min e.t.s. ingeniería informática Test NOMBRE: Conteste, rodeando con un círculo las respuestas que crea acertadas, teniendo en cuenta que cada apartado puede tener una o varias respuestas correctas (aciertos reales). El sistema de evaluación del test es por apartados, oscilando la puntuación de cada apartado mediante la fórmula: , siendo A: Aciertos contestados, F: Fallos contetados, Ar: Aciertos posibles, pa :peso del apartado. A-F/A MAX pa r Ar , − pa Con el siguiente esquema de BD asociado a un Departamento Universitario donde se define la carga de créditos de una asignatura y los créditos que imparte cada profesor: profesores(dni : dnis, profesor : nombres, fecha_nac : fechas)PK(profesor) asignaturas(asignatura : asignaturas, créditos1 : créditos)PK(asignatura) imparte(profesor : nombres,asignatura : asignaturas,créditos 2 : créditos)PK(asignatura, profesor) Fk1(asignatura)/asignaturas, Fk2(profesor)/profesores 1) Indicar las expresiones correctas en álgebra relacional: a. ∏ tlfn b. c. d. Ω ( ( profesores imparte ) σ fecha_nac > ' 1/1/1955 ' asignatura,count(*) profesor ) ( asignaturas imparte ) profesores ∪ asignaturas (profesores imparte asignaturas) ∏ asignatura, dni ∏ asignaturas asignatura e. Ω profesor,sum(créditos 2 ) profesor ( profesores imparte ) f. Ninguna de las anteriores 2) Indicar las expresiones correctas en SQL: a. SELECT profesor FROM imparte I WHERE NOT EXISTS (SELECT * FROM asignaturas A where I.asignatura = A.asignatura); b. SELECT asignaturas.asignatura,asignaturas.créditos1 FROM asignaturas WHERE NOT EXISTS (SELECT * FROM asignaturas OTRA WHERE asignaturas.créditos1<OTRA.créditos1); c. SELECT imparte.profesor, Sum(imparte.créditos2) FROM imparte GROUP BY imparte.asignatura HAVING (Sum(imparte.créditos2)>=20); d. SELECT TOP 1 imparte.profesor,Count(imparte.asignatura) FROM profesores INNER JOIN imparte ON profesores.dni = imparte.profesor GROUP BY imparte.profesor ORDER BY Count(imparte.asignatura) DESC; e. SELECT EX.dni, EX.profesor FROM profesores EX WHERE EXISTS (SELECT * FROM imparte TX WHERE EX.profesor = TX.profesor); f. Ninguna de las anteriores 3) Señalar las expresiones correctas en CROT: a. b. c. d. e. {P.dni,P.profesor|profesores(P) ∧ P.fecha_nac = '3/3/53'} {P.dni,P.profesor|profesores(P) ∧ ∃I ( imparte(I) ∧ P.profesor = I.profesor )} {A.asignatura|A.créditos1 = 20} {P.profesor,A.asignatura|asignaturas(A) ∧ ∃P ( profesores(P) ∧ A.créditos1 > 20 ∧ A.créditos1 < 30 )} {P.dni,P.profesor|profesores(P) ∧ ∃/ I ( imparte(I) ∧ p.nombre = I.profesor )} f. Ninguna de las anteriores asignatura ,count (*) σ count(*)>3 4) ¿Qué devuelve el programa algebráico: Ω asignatura ( imparte ( σ asignaturas créditos1> 6 )) ? a. b. c. d. e. f. 5) Asignaturas con más de 3 créditos y más de 6 créditos Asignaturas con algún profesor que imparte más de 6 créditos Número de profesores que imparten asignaturas con al menos 3 créditos y que no superan 6 créditos La asignatura con más créditos Asignaturas con más de 6 créditos y número de profesores que la imparte si su nº es superior a 3 Ninguna de las anteriores ¿Qué expresiones correctas en CROD expresan “profesores que imparten únicamente ‘matemáticas’” ? a. c. {P | imparte(profesor : P, asignatura : ' matemáticas ' ) ∧ ∃/A ( imparte(profesor:P, asignatura:A)∧ A≠' matemáticas ')} {P | profesores(profesor : P) ∧ ∃/A ( asignaturas(asignatura:A)∧ A≠' matemáticas ')} {P | profesores(profesor : P) ∧ ∀A ( asignaturas(asignatura:A)∧ A=' matemáticas ')} d. {P | imparte( profesor : P, asignatura : ' matemáticas ') ∧ ∀A ( ¬imparte( profesor : P, asignatura : A) ∨ A = ' matemáticas ')} e. {P | profesores(profesor : P) ∧ ∀A (imparte(profesor:Pasignatura:A)∧ A≠' matemáticas ')} b. f. Ninguna de las anteriores 6) Señalar las expresiones equivalentes a a. b. c. d. e. f. 7) SELECT profesor FROM imparte I SELECT P. profesor FROM profesores P WHERE EXISTS ; WHERE P. profesor = I . profesor SELECT P. profesor FROM profesores P WHERE P. profesor IN (SELECT profesor FROM imparte ); SELECT P. profesor FROM profesores P WHERE P. profesor = ANY (SELECT profesor FROM imparte ); SELECT P. profesor FROM profesores P, imparte I WHERE P. profesor = I. profesor AND EXISTS (imparte . profesor); SELECT P. profesor FROM profesores P WHERE P. profesor == SOMEONE (SELECT profesor FROM imparte ); SELECT P. profesor FROM profesores P WHERE P. profesor <ALL (SELECT profesor FROM imparte ); Ninguna de las anteriores. (profesores imparte) ∏ profesor, asignatura Señala las expresiones correctas en CROT, CROD o SQL para la expresión en AR: asignaturas ∏ asignatura a. SELECT T.profesor, G.asignatura from profesores T inner join imparte G on T.profesor=P.profesor WHERE NOT EXISTS (SELECT * from asignaturas A where G.asignatura <> A.asignatura); b. c. d. e. {P. profesor | profesores(P) ∧ ∀A ( asignaturas(A) ∧∃I (imparte( I )∧I.profesor =P.profesor ∧I .asignatura= A.asignatura ))} {P|profesores(profesor:P)∧∀A( asignaturas(asignatura:A) ∧∃/ P2(imparte( profesor:P2,asignatura:A)∧P =P2))} {P. profesor|profesores(P)∧∃/ I (imparte(I) ∧∃A( asignaturas ( A)∧ I.profesor = P.profesor ∧ I .asignatura≠ A.asignatura ))} {P. profesor | profesores(P) ∧ ∃/A ( asignaturas(A) ∧∃/ I ( imparte( I )∧ I.profesor = P.profesor ∧ I .asignatura= A.asignatura ))} f. Ninguna de las anteriores 8) a. b. c. d. e. f. Respecto de una clave ajena en el modelo relacional: Tiene que ser forzosamente parte de la clave primaria. Nunca es parte de la clave primaria. Puede ser parte de la clave primaria. Tiene que denominarse igual que el atributo que referencia en la otra relación. Es siempre superclave. Ninguna de las anteriores. 9) a. b. c. d. e. f. Con respecto a las claves candidatas del modelo relacional: La clave ajena se escoge entre las claves candidatas. La superclave cumple el requisito de unicidad. La clave primaria es cualquiera de las superclaves. La clave candidata cumple los requisitos de unicidad y minimalidad. Una clave ajena nunca puede ser clave candidata. Ninguna de las anteriores. 10) En WinRDBI elija expresión(es) válida(s) para a. b. c. d. e. f. ( profesores imparte ) σ profesor fecha_nac = ' 1/ 3 /1955 ' ∏ qAR := project profesor (select (fecha_nac =’1/3/1955’)(profesores njoin imparte)); qAR := project profesor (select (fecha_nac =’1/3/1955’)(profesores difference imparte)); qAR := pi profesor (select (fecha_nac =’1/3/1955’)(profesores njoin imparte)); qAR := project profesor ((select (fecha_nac =’1/3/1955’) (profesores)) njoin imparte); qAR := project profesor (select (fecha_nac =’1/3/1955’)(profesores union imparte); Ninguna de las anteriores