Considere la relación “inscrito(estudiante, curso)” en la que (estudiante, curso) es la clave principal, y la relación “pagado(estudiante, cantidad)” donde estudiante es la clave principal. Suponga que no hay valores nulos ni claves foráneas ni restricciones de integridad. Dadas las siguientes cuatro consultas:
Query1: select student from enrolled where student in (select student from paid) Query2: select student from paid where student in (select student from enrolled) Query3: select E.student from enrolled E, paid P where E.student = P.student Query4: select student from paid where exists (select * from enrolled where enrolled.student = paid.student)
¿Cuál de las siguientes afirmaciones es correcta?
(A) Todas las consultas devuelven conjuntos de filas idénticos para cualquier base de datos
(B) Consulta2 y Consulta4 devuelven conjuntos de filas idénticos para todas las bases de datos, pero existen bases de datos para las que Consulta1 y Consulta2 devuelven conjuntos de filas diferentes.
(C) Existen bases de datos para las que Query3 devuelve estrictamente menos filas que Query2
(D) Existen bases de datos para las que Query4 encontrará una violación de integridad en tiempo de ejecución.
Respuesta: (B)
Explicación: Tome un ejemplo:
Table enrolled student course ---------------- abc c1 xyz c1 abc c2 pqr c1 Table paid student amount ----------------- abc 20000 xyz 10000 rst 10000 Output of Query 1 abc abc xyz Output of Query 2 abc xyz Output of Query 3 abc xyz Output of Query 4 abc xyz
La consulta 1 y la consulta 3 pueden devolver valores de estudiante repetitivos, ya que «estudiante» no es una clave en relación con la inscripción; sin embargo, la consulta 2 y la consulta 4 siempre devuelven los mismos conjuntos de filas.
Entonces, la opción (B) es correcta.
Cuestionario de esta pregunta
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA