|
Запит 3.16.Date: 2015-10-07; view: 373. Запит 3.14______________________________________________________________ Хто з викладачів кафедри АСУ не читає лекцій? Цей запит доцільно будувати за методом «від супротивного», тобто від усієї множини викладачів (точніше, їхніх прізвищ) віднімається множина тих, які читають хоча б одну лекцію. ((КАФЕДРА[#D=#D]ВИШДАЧ)[КАФЕДРА.Назва="АСУ"])[ВИКЛАДАЧ.Прізвище] -((КАФЕДРА[#D=#D]ВИКЛАДАЧ )[#Т=#Т]ЛЕКЦІЯ)[КАФЕДРА.Назва="АСУ"])[ВИКЛАДАЧ.Прізвище] Операція ділення Вивести номери тих викладачів, які викладають в усіх групах. ((ЛЕКЦІЯ[#Т, #G])[#G ÷ #G]ГРУПА)[#Т] Необхідність використання операції ділення у цьому запиті зумовлена тим, що тут має місце множинне порівняння. Для кожного викладача (#Т) потрібно сформувати його образ, тобто множину груп, у яких він викладає, а потім перевірити, чи збігається цей образ із множиною всіх груп, тобто з другим операндом. Зауважимо, що для дільника і діленого потрібно детально продумувати список атрибутів, оскільки це може вплинути на результат виконання запиту.
Цей запит є уточненням попереднього. Вивести номери тих викладачів, які викладають принаймні в усіх групах першого курсу. ((ЛЕКЦІЯ[#Т, #G])[#G ÷ #G](ГРУПА[Курс=1])[#Т] Наявність у тексті запиту слова «принаймні» означає, що шукані викладачі можуть викладати ще в якихось групах. Якщо потрібно знайти коди викладачів, які викладають у всіх групах першого курсу і тільки в них, то від множини викладачів, знайдених за даним запитом, необхідно відняти викладачів, які викладають хоча б у одній групі не першого курсу, тобто таку множину: ((ЛЕКЦІЯ[#T, #G] ) [#G=#G]((ГРУПА[Курс≠1][#G]))[#T] Подумайте, як би виглядав запит у термінах реляційної алгебри у випадку, коли замість «принаймні» стояло б слово «лише».
|