CONTENIDO (codCont, titulo, clasificacion, tipo, categ, resumenContenido, pais) Clasificacion: A=adulto, N=Niños Tipo: P=pelicula, S=serie Genero: A=accion, R=romantico, T=terror, D=documental, C=comedia, O=otros DETALLECONTENIDO (codCapitulo, temporada, codCont, titulo, resumen) SUSCRIPCION (codUsr, plan, fecIni, fecFin) REPRODUCCION (codUsr, codCapitulo, fecha, calificacion) Calificacion: valor del 1 al 5 ACTOR (condActor, nombre, pais) REPARTO (codCont, codActor, papel) Papel: p=principal, s=secundario, e=estrella 1. Obtener el codigo y nombre de los usuarios de Bolivia que nunca vieron peliculas en Bolivia. SELECT U.codUrs, U.nom FROM USUARIO U LEFT JOIN REPRODUCCION R ON U.codUrs = R.codUsr LEFT JOIN CONTENIDO C ON R.codCapitulo = C.codCont AND U.pais = C.pais WHERE U.pais = 'Bolivia' AND (C.codCont IS NULL OR C.tipo = 'S') 2. Obetener el codigo y nombre de los usuarios que vieron todas las peliculas protagonizadas por Jhonny Deep SELECT U.codUrs, U.nom FROM USUARIO U JOIN REPRODUCCION R ON U.codUrs = R.codUsr JOIN DETALLECONTENIDO D ON R.codCapitulo = D.codCapitulo JOIN REPARTO RP ON D.codCont = RP.codCont JOIN ACTOR A ON RP.codActor = A.condActor WHERE A.nombre = 'Johnny Depp' GROUP BY U.codUrs, U.nom HAVING COUNT(DISTINCT D.codCont) = ( SELECT COUNT(DISTINCT D1.codCont) FROM DETALLECONTENIDO D1 JOIN REPARTO RP1 ON D1.codCont = RP1.codCont JOIN ACTOR A1 ON RP1.codActor = A1.condActor WHERE A1.nombre = 'Johnny Depp' ) 3. Obtener el codigo y nombre del actor que tuvo mayor cantidad de actuaciones como estrella SELECT A.condActor, A.nombre FROM ACTOR A JOIN REPARTO R ON A.condActor = R.codActor WHERE R.papel = 'e' GROUP BY A.condActor, A.nombre HAVING COUNT(R.codCont) = ( SELECT MAX(ActuacionesEstrella) FROM ( SELECT COUNT(R1.codCont) AS ActuacionesEstrella FROM REPARTO R1 WHERE R1.papel = 'e' GROUP BY R1.codActor ) AS T ) 4. Obtener la cantidad de veces que cada pelicula ha sido calificada con 5: codPelicula, nombre, cantidad SELECT R.codCapitulo AS codPelicula, C.titulo AS nombre, COUNT(*) AS cantidad FROM REPRODUCCION R JOIN CONTENIDO C ON R.codCapitulo = C.codCont WHERE R.calificacion = 5 GROUP BY R.codCapitulo, C.titulo 5. Obtener el codigo y nombre de las peliculas que tuvieron mas de 2 millones de calificaciones de 5: SELECT R.codCapitulo, C.titulo FROM REPRODUCCION R JOIN CONTENIDO C ON R.codCapitulo = C.codCont WHERE R.calificacion = 5 GROUP BY R.codCapitulo, C.titulo HAVING COUNT(*) > 2000000 6. Obtener el codigo y nombre de la pelicula que tuvo mayor cantidad de calificaciones 5 SELECT R.codCapitulo, C.titulo FROM REPRODUCCION R JOIN CONTENIDO C ON R.codCapitulo = C.codCont WHERE R.calificacion = 5 GROUP BY R.codCapitulo, C.titulo ORDER BY COUNT(*) DESC LIMIT 1 7. Obtener el codigo y nombre de la pelicula que fue vista por un mismo usuario mayor cantidad de veces SELECT R.codCapitulo, C.titulo FROM REPRODUCCION R JOIN CONTENIDO C ON R.codCapitulo = C.codCont GROUP BY R.codCapitulo, C.titulo HAVING COUNT(*) = ( SELECT MAX(ReproduccionesUsuario) FROM ( SELECT COUNT(*) AS ReproduccionesUsuario FROM REPRODUCCION GROUP BY codUsr, codCapitulo ) AS T )
1 Supongamos que tenemos una tabla llamada "Universidad" con la siguiente estructura inicial:
Universidad (ID_Universidad, Nombre, Dirección, Ciudad, Código_Postal, Facultad, Departamento,
Profesor)
1. Primera forma normal (1NF):
o No es necesario hacer ninguna modificación, ya que la tabla ya cumple con la 1NF. 2. Segunda forma normal (2NF): o La tabla "Universidad" no cumple la 2NF porque el atributo "Departamento" depende funcionalmente solo del atributo "Facultad". o Dividir la tabla "Universidad" en dos tablas: "Universidad" y "Facultades". o Universidad (ID_Universidad, Nombre, Dirección, Ciudad, Código_Postal, Facultad_ID, Profesor) o Facultades (Facultad_ID, Facultad, Departamento) 3. Tercera forma normal (3NF): o La tabla "Universidad" no cumple la 3NF porque el atributo "Profesor" depende funcionalmente solo del atributo "ID_Universidad". o Dividir la tabla "Universidad" en dos tablas: "Universidad" y "Profesores". o Universidad (ID_Universidad, Nombre, Dirección, Ciudad, Código_Postal, Facultad_ID) o Profesores (ID_Universidad, Profesor)