Фамилия И.О., № группы № задания Максимальный балл Результат 1 8 2 6 3 6 4 5 5 10 6 4 7 8 ИТОГО 75 8 28 1. E/R диаграммы и отношения (8 баллов) Пусть есть следующая диаграмма объектов-связей (E/R диаграмма), в которой представлены: предметы (courses), преподаватели предметов (TAs) и время проведения консультаций преподавателями по предметам (Office Hours Visits) и связи между ними. Name TAs Date Office Saw Staff Office Hours Visits (OHVs) Number About Rating Courses Name На основе приведенной диаграммы постройте реляционную модель. Не забудьте подчеркнуть ключи у каждого отношения. TAs (Name, Office) Course (Number, Name) Staff (Name, Number) OHV (Name, Number, Date, Rating) Замечание: Если E – слабое множество сущностей, то для него надо строить отношение, схема которого состоит из всех ключевых атрибутов для E, в том числе атрибутов, являющихся ключами “вспомогательных” множеств, соединенных с E связью типа “многие-к-одному” и всех неключевых атрибутов E. Не нужно строить отношение для любой связи типа “многие-к-одному” между слабым множеством сущностей и другим множеством сущностей при условии, что данная связь заключена в двойной ромб и помогает сформировать ключ для слабого множества сущностей. 2. E/R диаграммы и функциональные зависимости (6 баллов) (a) (2 балла) Пусть есть следующая E/R диаграмма: E1 R E2 K1 K2 и отношение R(K1,K2), построенное на основе этой диаграммы для связи R. Напишите список всех нетривиальных функциональных зависимостей, которые имеют место для R. K2->K1, т.к. K2 – ключ R. (b) (4 балла) Пусть есть следующая E/R диаграмма: K1 E1 E2 R E3 K2 K3 и отношение R(K1,K2,K3), построенное на основе этой диаграммы для связи R. Напишите список всех нетривиальных функциональных зависимостей, которые имеют место для R. K1,K2 -> K3 и K1,K3 ->K3, т.к. {K1,K2} и {K1,K3} – потенциальные ключи R 3. Функциональные зависимости (6 баллов) Пусть есть отношение R(A,B,C,D,E,F) и зависимостей, которые имеют место для R: A->C DE->F B->D множество функциональных (a) (3 балла) Основываясь на этих функциональных зависимостях можно сделать вывод, что R имеет единственный ключ. Напишите в этом поле ключ отношения R AAABE (b) (3 балла) К имеющемуся множеству функциональных зависимостей добавим функциональную зависимость A->B и предположим, что хотим иметь в качестве ключа отношения R множество атрибутов, состоящее из одного атрибута A. Какую функциональную зависимость надо добавить к имеющемуся множеству функциональных зависимостей, чтобы A был бы ключом отношения R? Дополнительное требование: новая функциональная зависимость должна содержать по одному атрибуту в левой и правой части. Напишите в этом поле добавляемую функциональную зависимость: A->E Замечание: C->E, B->E так же можно рассматривать как ответ, поскольку A->E будет выводиться из них. 4. Функциональные зависимости и реляционная алгебра (5 баллов) Пусть есть отношение R(A,B,C). Напишите выражение реляционной алгебры, которое будет возвращать пустое отношение, если и только если для отношения R имеет место функциональная зависимость A->B. Ответ поясните. Функциональная зависимость A->B – это утверждение вида “Если два кортежа R совпадают по атрибуту A (т.е. эти кортежи имеют одинаковые значения A), то они должны совпадать и по атрибуту B”. Другими словами, в отношение R нет строк, в которых были бы равны значения в столбце A и не равны в столбце B. Следующее выражение реляционной алгебры будет возвращать пустое значение, если имеет место A->B: R R1(A,B,C)(R) R.A=R1.A and R.B<>R1.B 5. НФБК и 4НФ (10 баллов) В этом задании вы получите: 2 балла за каждый правильный ответ, -1 балл за каждый неправильный ответ. 0 баллов за неуказанный ответ. В этом задании будут использоваться две реляционные базы данных со схемами, обозначенными Схема1 и Схема2: Схема 1: R(A,B,C,D). Схема 2: R1(A,B,C), R2(B,D) (a) Рассмотрим Схему 1 и предположим, что для этого отношения имеют место только функциональные зависимости A->B, C->D и функциональные зависимости, выводимые из них. Находится ли отношение R в НФБК? Обведите кружком только один ответ или не отвечайте на вопрос: ДА НЕТ Исходя из данных функциональных зависимостей получаем, что единственным ключом отношения R является множество {AC}, поэтому обе данные функциональные зависимости нарушают НФБК. (b) Рассмотрим Схему 2 и предположим, что для нее имеют место только функциональные зависимости A->B, A->C, B->A, A->D и функциональные зависимости, выводимые из них. Находятся ли отношения этой схемы в НФБК? Обведите кружком только один ответ или не отвечайте на вопрос: ДА НЕТ Любое отношение в двумя атрибутами находится в НФБК. Для доказательства этого утверждения надо проверить возможные нетривиальные зависимости с единственным атрибутом справа. При этом необходимо рассмотреть всего 4 случая. Пусть у некоторого отношения имеются 2 атрибута А и B: 1. Нетривиальных фукциональных зависимотей нет. Тогда условие НФБК должно выполняться, т.к. нарушить его может только нетривиальная зависимость. Кстати, в данном случае единственный ключ – это {AB}. 2. Верно A->B, но не верно B->A. В этом случае A – единственный ключ и каждая нетривиальная функциональная зависимость содержит A слева (фактически слева может стоять только A). Значит, условие НФБК не нарушается. 3. Верно B->A, но не верно A->B. Случай симметричен предыдущему. 4. Верно A->B и B->A. Тогда A и B – ключи. Ясно, что любая зависимость имеет в левой части A или B, поэтому нарушений НФБК быть не может. Подробнее см. книгу Ульмана стр.114. Применив это утверждени для отношения R2, делаем вывод, что оно находится в НФБК. Исходя из данных функциональных зависимостей получаем, что ключами отношения R1 являются множества {A} и {B}, поэтому все данные функциональные зависимости не нарушают НФБК для отношения R1. (c) Предположим, что из списка функциональных зависимостей части (b) убрана зависимость A->D. Находятся ли теперь отношения Схемы 2 в НФБК? Обведите кружком только один ответ или не отвечайте на вопрос: ДА НЕТ Исходя из данных функциональных зависимостей получаем, что ключами отношения R1 являются множества {A} и {B}, поэтому все данные функциональные зависимости не нарушают НФБК для отношения R1. Рассуждения, относительно отношения R2, см. в предыдущем пункте. (d) Рассмотрим Схему 1 и предположим, что для этого отношения имеют место только указанные функциональные зависимости и многозначные функциональные зависимости A->BC, B->D, B->>CD и зависимости, выводимые из них. Находится ли отношение R в 4НФ? Обведите кружком только один ответ или не отвечайте на вопрос: ДА НЕТ Исходя из данных функциональных зависимостей получаем, что единственным ключом отношения R является множество {A}, поэтому B->D нарушает НФБК, а B->>CD нарушает 4НФ. (e) Рассмотрим Схему 2 и предположим, что для нее имеют место только указанные функциональные зависимости и многозначные функциональные зависимости A->BD, D->C, C->>AB, B->>D и зависимости, выводимые из них. Находятся ли отношения этой схемы в 4НФ? Обведите кружком только один ответ или не отвечайте на вопрос: ДА НЕТ Исходя из данных функциональных зависимостей получаем, что единственным ключом отношения R1 является множество всех атрибутов R1, поэтому все данные фукциональные зависимости нарушают и НФБК и 4НФ 6. Реляционная алгебра и SQL (4 балла) В этом задании вы получите: 2 балла за каждый правильный ответ, -1 балл за каждый неправильный ответ. 0 баллов за неуказанный ответ. Пусть есть отношение R(A,B,C) и два утверждения: Утверждение 1: A является ключом для отношения R. Утверждение 2: для R имеет место функциональная зависимость A->BC. (a) Будут ли эквивалентны эти утверждения в реляционной алгебре? Обведите кружком только один ответ или не отвечайте на вопрос: ДА НЕТ (b) Будут ли эквивалентны эти утверждения в SQL? Обведите кружком только один ответ или не отвечайте на вопрос: ДА НЕТ 7. SQL (8 баллов) Пусть есть отношение Result(ID,name,point)для хранения результатов экзамена, подобного данному. В этом отношении ID – порядковый номер студента и ключ этого отношения, name – фамилия студента, point – количество баллов, которое набрал студент на данном экзамене. Напишите запрос на языке SQL, результатом которого будет плотность распределения баллов, упорядоченная по убыванию баллов. Например, результат запроса мог бы выглядеть так: Балл Количество 74 6 73 2 70 1 69 15 ... ... В этой таблице первый столбец содержит значение балла, второй – количество студентов, которые получили данный балл. Если ни один из студентов не набрал какое-либо число баллов, то такое значение балла не должно попадать в результат. SELECT point, COUNT(ID) FROM Result GROUP BY point ORDER BY point DESC 8. Эквивалентность запросов (28 баллов) В этом задании вы получите: 2 балла за каждый правильный ответ, -1 балл за каждый неправильный ответ. 0 баллов за неуказанный ответ. Каждая строка приведенной ниже таблицы содержит два запроса, если вы считаете, что эти запросы эквивалентны, то впишите в третий столбец таблицы ДА, если вы считаете, что запросы не эквивалентны, то впишите в третий столбец – НЕТ. Напомним, что два запроса эквивалентны, если они возвращают одинаковые отношения для любой базы данных. Все запросы таблицы используют два отношения: R(A,B), в котором A – ключ и B – ключ, S(A,B), в котором A- ключ. Предполагается, что отношения не содержат значений NULL, т.е. не имеют незаполненных значений, никакие другие предположения об отношениях не делаются. Запрос 1 A(R - S) B(R - S) B(R S) R.A=5 (R) R.A(R.B=S.B(RxS)) R.B(R.A=S.A(RxS)) B(R) – R1.B (R1.B>=R2.B(R1(R)xR2(R))) B(R) – R1.B (R1.B<R2.B(R1(R)xR2(R))) select R.B from R,S where R.A=S.A select B from R where A not in (select A from S) select A from R select B from S Select B from S group by B (select B from S) except all (select B from R) Запрос 2 A(R) - A(S) B(R) - B(S) B(R) B(S) R.A=5(R.A,R.B(R S)) select R.A from R,S where R.B=S.B select R.B from R,S where R.A=S.A select min(B) from R ? НЕТ НЕТ ДА НЕТ select max(B) from R ДА select B from R where A in (select A from S) select R.B from R,S where R.A<>S.A select A from R group by A select B from S group by B select distinct B from S select B from S where B not in (select B from R) ДА НЕТ ДА НЕТ НЕТ ДА НЕТ ДА НЕТ Для пояснения ответов рассматриваются 2 отношения R и S: R A B 1 1 2 3 4 6 S A 1 2 4 5 B 1 1 6 6 (1) A(R - S) = {2} A(R) - A(S) = {} (2) аналогично (4) R.A=2 (R) = {2,3} R.A=2(R.A,R.B(R S)) = {} (здесь 5 заменено на 2, а для 5 надо взять другие данные для исходных отношений) (5) R.A(R.B=S.B(RxS)) = {1} select R.A from R,S where R.B=S.B = {1} {4} {1} {4} {4} (6) ответ «да», т.к. в отличие от (5) в запросе 2 не будет дублирования. (7) B(R) –R1.B (R1.B>=R2.B(R1(R)xR2(R))) = {} select min(B) from R = {1} (8) ответ «да», т.к. в отличие от (7) в запросе 1 нет равенства. (10) select B from R where A not in (select A from S) = {} select R.B from R,S where R.A<>S.A = {1} {1} {1} {3} {3} {3} {6} {6} {6} предыдущий пример «да», т.к соединение по равентву и А – ключи не даст дублирования, а это эквивалентно условию in (select ….) (12) select B from S = {1} select B from S group by B = {1} {1} {6} {6} {6} предыдущий пример - ответ «да», т.к. А – ключ и поэтому дублирования значений быть не может и запрос с группировкой даст тот же результат; следующий пример – ответ «да», т.к. в запросе без группировки есть устранение дублирования (DISTINCT). (14) (select B from S) except all (select B from R) = {1} {6} select B from S where B not in (select B from R) = {}