Está en la página 1de 3

sea la siguiente base de datos de una plataforma tipo netflix:

USUARIO (codUrs, nom, sexo, pais, fecNac, codCuenta, nroTarjeta)


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)

También podría gustarte