Основные понятия реляционной модели данных. Потенциальные ключи отношений, страница 8

(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