(6) – Можно удалить DEPT#, кроме того, здесь атрибут OFF# функционально зависит от номера телефона, следовательно, в качестве первичного ключа можно выбрать номер телефона.
(7) – если DEPT# рассматривается как неключевое, то отношение в 2НФ.
В результате будем получать набор следующих отношений, находящихся в 2НФ:
DEPT2 (DEPT#, DBUDJET, MGR#)
EMP2 (EMP#, DEPT#, PROJ#, OFF#, PHONE#)
SALHIST2 (EMP#, DATE, JOBTITLE, SALARY)
PROJ2 (PROJ#, DEPT#, PBUDJET)
OFFICE2 (OFF#, DEPT#, PBUDJET)
PHONE2 (PHONE#, OFF#)
JOBA→SALHIST2
JOBB→EMP2
В список отношений во 2НФ не вошли JOBA и JOBB, т.к. первый из них является проекцией отношения SALHIST по атрибутам (EMP#, JOBTITLE), а второе – проекция EMP2 по соответствующим атрибутам.
На следующем шаге отношение должно быть приведено в 3НФ. В приведенном списке только EMP2 не находится в 3НФ, т.к. в нем существует транзитивная зависимость.
EMP#→PHONE#→OFF#
EMP#→PROJ#→DEPT#
ПРЕДСТАВЛЕНИЯ. ОСНОВНЫЕ ПОНЯТИЯ
В БД таблицы можно разделить на 2 категории: базовые и производные. Базовые существуют независимо. Производные – зависят от базовых. Представлением называется именованная таблица, которая в отличие от базовой не может существовать сама по себе, а определяется в терминах одной или нескольких именованных таблиц. Именованные таблицы могут как базовыми, так и производными.
Пример:
CREATE VIEW TOPEMPS AS (EMP WHERE SALARY>SSK) [EMP#, ENAME.SALARY];
Когда выполняется подобная конструкция выражение, следующее за ключевым словом AS запоминается системой. После того, как конструкция выполнена, таблица TOPEMPS для пользователей становится реальной. Т.о. имя TOPEMPS обозначает виртуальную таблицу, которую можно представить следующим образом:
EMP# |
ENAME |
DEPT# |
SLARY |
E1 |
Lopez |
D1 |
40K |
E2 |
Cheng |
D1 |
42K |
E3 |
Finzi |
D2 |
30K |
E4 |
Saito |
D2 |
35K |
Представление может рассматриваться, как окно в основной таблице EMP. Любые изменения в основной таблице немедленно должны отображаться в этом окне. Аналогично изменения в представлении TOPEMPS должны автоматически применятся к реальной таблице EMP. В СУБД поддержка представления используется для обеспечения логической зависимости, например при реструктуризации БД.
Пример:
S(S#,SNAME,STATUS,CITY)
SNC(S#,SNAME,CITY)
ST(S#,STATUS)
CREATE VIEW S AS SNC JOIN ST;
Достоинства представлений:
1. Возможность обеспечить логическую независимость данных.
2. Представления позволяют различным пользователям различными способами просматривать одни и теже данные в одно и то же время.
3. Представления позволяют в ряде случаев сокращать запись запросов.
4. Представления обеспечивают механизм автоматической защиты данных.
ОБНОВЛЕНИЕ ПРЕДСТАВЛЕНИЙ
1. UNION. Предположим имеется представление, которое определено, как A UNION B, где А и В – это произвольное реляционное выражение.
INSERT вставляет новый кортеж, который должен удовлетворять предикату отношения А или отношения В или предикатам обоих отношений одновременно. Если новый кортеж удовлетворяет предикату отношения А, то он должен быть вставлен в отношение А, если новый кортеж удовлетворяет предикату отношения В, то этот кортеж вставляется в отношение В.
Пример:
(CA WHERE STATUS>25) UNION (SB WHERE CITY=’Paris’)
S# |
SNAME |
STATUS |
CITY |
S# |
SNAME |
STATUS |
CITY |
|
S3 |
Blake |
30 |
Paris |
S2 |
Jones |
10 |
Paris |
|
S5 |
Adams |
30 |
Athens |
S3 |
Blake |
30 |
Paris |
|
SA |
SB |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.