Классика баз данных - статьи

       

В окончательном варианте нами получены


/p> Рис. 3. Стадия 2 - горизонтальная декомпозиция отношения DOES_JOB.
EARNS   SAL_UNK UNSALARIED
ID SAL ID ID
1234 100000 1235 1237
1236 70000
Рис. 4. Стадия 2 - горизонтальная декомпозиция отношения EARNS.

В окончательном варианте нами получены отношения DOES_JOB, JOB_UNK, UNEMPLOYED, EARNS, SAL_UNK, UNSALARIED, удовлетворяющие реляционной модели Третьего Манифеста . Им соответствуют предикаты: “человек, идентифицируемый как ID, занимает конкретную должность JOB”, “ человек, идентифицируемый как ID, занимает некоторую должность, но мы не знаем, какую”, “ человек, идентифицируемый как ID, является безработным”, “ человек, идентифицируемый как ID, имеет определенное жалование SAL”, “ человек, идентифицируемый как ID, имеет некоторое жалование, но неизвестно, какое”, “ человек, идентифицируемый как ID, не получает жалования”.

Сделаем ряд комментариев к проделанному:


  1. В приведенном примере нами рассматривались только два вида отсутствующей информации, но метод допускает обобщение на большее их число.


  2. Проведенная декомпозиция сохраняет первичные и внешние ключи и ограничения целостности.


  3. Возможен и другой вариант горизонтальная декомпозиция отношений, в некоторых практических случаях более удобный, так как позволяет сократить количество результирующих отношений. Он изображен на рис. 5, 6.


DOES_JOB   JOB_UNK
ID JOB ID REASON
1234 Юрист 1236 UNKNOWN
1235 Почетный президент 1237 UNEMPLOYED
Рис. 5. Другой вариант горизонтальной декомпозиции отношения DOES_JOB.
EARNS   SAL_UNK
ID SAL ID REASON
1234 100000 1235 UNKNOWN
1236 70000 1237 UNSALARIED
Рис. 6. Другой вариант горизонтальной декомпозиции отношения EARNS.

Определение традиционно выглядящего представления на основе полученных таблиц представлена на рис. 7, его внешний вид – на рис. 8.

CREATE VIEW r1 AS SELECT tmp.* FROM ( (SELECT earns.id, CAST(earns.sal AS varchar(40)) AS SAL FROM earns) UNION (SELECT sal_unk.id, CAST(sal_unk.reason AS varchar(40)) FROM sal_unk) ) AS tmp GO


Содержание  Назад  Вперед