Рубрики

ВОРОТА | GATE-CS-2006 | Вопрос 68

Рассмотрим отношение «зачислен (студент, курс)», в котором (студент, курс) является первичным ключом, и отношение «оплачено (студент, сумма)», где студент является первичным ключом. Не допускайте нулевых значений и внешних ключей или ограничений целостности. Учитывая следующие четыре запроса:

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) 

Какое из следующих утверждений является правильным?
(A) Все запросы возвращают идентичные наборы строк для любой базы данных
(B) Query2 и Query4 возвращают идентичные наборы строк для всех баз данных, но существуют базы данных, для которых Query1 и Query2 возвращают разные наборы строк.
(C) Существуют базы данных, для которых Query3 возвращает строго меньше строк, чем Query2
(D) Существуют базы данных, для которых Query4 столкнется с нарушением целостности во время выполнения.

Ответ: (Б)
Пояснение: возьмите пример:

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

Query 1 и Query 3 могут возвращать повторяющиеся значения студента, так как «student» не является ключевым в зарегистрированном отношении, однако запрос 2 и запрос 4 всегда возвращают одни и те же наборы строк.

Рекомендуемые посты:

ВОРОТА | GATE-CS-2006 | Вопрос 68

0.00 (0%) 0 votes