Как видно из примера, таблица
Как видно из примера, таблица содержит два вида отсутствующей информации - “неизвестно” в случае с должностью Семенова и размером жалования Борисова, и “не применимо” в случае должности и жалования Давиденко (по условиям задачи, он - безработный).
Предикат отношения PERSONAL_INFO
мог бы выглядеть так: “человек, идентифицируемый как 1034, имеет фамилию Анин, занимает должность юриста и имеет жалование 100000 руб.”. В то же время предикат “человек, идентифицируемый как 1036, имеет фамилию
Семенов, занимает должность ? и имеет жалование 50 000
руб.” не имеет явного смысла. Кроме того, неизвестно даже точно, какому типу данных принадлежит этот “?”, поскольку, как отмечают Дейт и Дарвен, NULL не принадлежит никакому домену (типу данных), и не является значением
в общепринятом контексте этого понятия.
Первая стадия включает вертикальную декомпозицию этого отношения, как показано на рис. 2.
CALLED |
|
DOES_JOB |
|
EARNS |
ID |
NAME |
ID |
JOB |
ID |
SAL |
1034 |
Анин |
1034 |
Юрист |
1034 |
100 000 |
1035 |
Борисов |
1035 |
Почетный президент |
1035 |
NULL |
1036 |
Семенов |
1036 |
NULL |
1036 |
50 000 |
1037 |
Давиденко |
1037 |
NULL |
1037 |
NULL |
Рис. 2. Стадия 1 - вертикальная декомпозиция.
Теперь отношение PERSONAL_INFO
декомпозировано на три отношения: CALLED, DOES_JOB, EARNS. Каждое из полученных в результате отношений характеризуется определенным предикатом. Предикат отношения CALLED выглядит так: “человек, идентифицируемый как ID, имеет фамилию NAME ”. Предикат отношения DOES_JOB
: “человек, идентифицируемый как ID, занимает должность JOB ”. Предикат отношения EARNS: “человек, идентифицируемый как ID, имеет жалование SAL”. Но предикаты отношений DOES_JOB и EARNS все еще не до конца приемлемы.
Вторая стадия – горизонтальная декомпозиция (рис. 3, 4).
DOES_JOB |
|
JOB_UNK |
|
UNEMPLOYED |
ID |
JOB |
ID |
ID |
1234 |
Юрист |
1236 |
1237 |
1235 |
Почетный президент |
<
Содержание Назад Вперед