_ Please read all instructions (including these) carefully

advertisement
Фамилия И.О., № группы
№ задания
Максимальный балл
Результат
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)xR2(R)))
B(R) –
R1.B (R1.B<R2.B(R1(R)xR2(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)xR2(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) = {}
Download