ТОРА (9) - Семинар №5 - Синтез хорошей БД
Алгоритм синтеза хорошей БД
Предметная область "Автовокзал".
Задана универсальная схема отношений:
$$U =$$
- $$($$
- $$A$$ - номер рейса автобуса,
- $$B$$ - город назначения,
- $$C$$ - дата отправления,
- $$D$$ - время отправления,
- $$E$$ - гос.номер автобуса,
- $$R$$ - модель автобуса,
- $$K$$ - ФИО водителя,
- $$L$$ - дата рождения водителя,
- $$M$$ - домашний адрес водителя,
- $$N$$ - телефон водителя,
- $$X$$ - ФИО пассажира автобуса,
- $$Y$$ - место пассажира в автобусе,
- $$W$$ - номер билета пассажира,
- $$V$$ - цена билета,
- $$P$$ - номер паспорта
- $$)$$
Заданы ФЗ:
$$K\rightarrow LMN, E\rightarrow R, A\rightarrow BD, AC\rightarrow KE, CDK\rightarrow A, P\rightarrow X, W\rightarrow ACVYP, BCD\rightarrow AK, BRY\rightarrow V$$
Синтезировать схему БД, используя алгоритм.
1)
- $$УНП = (K\rightarrow LMN, E\rightarrow R, A\rightarrow BD, AC\rightarrow KERLMNBD,$$
- $$CDK\rightarrow LMNABKER, P\rightarrow X, W\rightarrow ACVYPBDKEXRLMN, BCD\rightarrow AKLMNER,$$
- $$BRY\rightarrow V)$$
2)
- есть ФЗ $$W\rightarrow ACVYPBDKEXRLMN$$, объединение левой и правой частей которой даёт все атрибуты. Пропускаем шаг.
3)
- $$A^+ = ABD$$, $$C^+ = C$$, потому $$AC\rightarrow KERLMNBD$$ оставляем в покое.
- $$D^+ = D$$, $$K^+ = KLMN$$
- $$(CD)^+ = CD$$, $$(DK)^+ = DKLMN$$, $$(CK)^+ = CKLMN$$
- $$B^+ = B$$, $$(BC)^+ = BC$$, $$(BD)^+ = BD$$
- $$R^+ = R$$, $$Y^+ = Y$$, $$(BR)^+ = BR$$, $$(RY)^+ = RY$$, $$(BY)^+ = BY$$
- таким образом, все зависимости из УНП неприводимые.
4)
- разбиваем на классы эквивалентности (у кого совпадают объединения левой и правой части):
- $$K\rightarrow LMN$$, $$K_1 = KLMN$$
- $$R\rightarrow R$$, $$K_2 = ER$$
- $$A\rightarrow BD$$, $$K_3 = ABD$$
- $$AC\rightarrow KERLMNBD$$
- $$CDK\rightarrow LMNABER$$
- $$BCD\rightarrow AKLMNER$$
- $$K_4 = ACKERLMNBD$$
- $$P\rightarrow X$$, $$K_5 = PX$$
- $$W\rightarrow ACVYPBDKEXRLMN$$, $$K_6 = WACVYPBDKEXRLMN$$
- $$BRY\rightarrow V$$, $$K_7 = BRYV$$
5)
6)
- в каждом классе должна остаться только одна ФЗ:
- $$AC\rightarrow K$$
- $$CDK\rightarrow AB$$
- $$BCD\rightarrow AK$$
- Вычёркиваем лишнее, выбираем ФЗ с наименьшим числом атрибутов слева.
7)
Перерисуем без вычеркнутых:
8)
- пропускаем, так как нет ФЗ с пустой правой частью.
9)
- $$\rho = (WACYP, ACKE, KLMN, ER, ABD, PX, BRYV) = (R_1, R_2, R_3, R_4, R_5, R_6, R_7)$$
10)
- смотрим соединение без потерь:
$$A$$ | $$B$$ | $$C$$ | $$D$$ | $$E$$ | $$R$$ | $$K$$ | $$L$$ | $$M$$ | $$N$$ | $$X$$ | $$Y$$ | $$W$$ | $$V$$ | $$P$$ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$$R_1$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | ||||||||||
$$R_2$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | |||||||||||
$$R_3$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | |||||||||||
$$R_4$$ | $$a$$ | $$a$$ | |||||||||||||
$$R_5$$ | $$a$$ | $$a$$ | $$a$$ | ||||||||||||
$$R_6$$ | $$a$$ | $$a$$ | |||||||||||||
$$R_7$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ |
$$A$$ | $$B$$ | $$C$$ | $$D$$ | $$E$$ | $$R$$ | $$K$$ | $$L$$ | $$M$$ | $$N$$ | $$X$$ | $$Y$$ | $$W$$ | $$V$$ | $$P$$ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$$R_1$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ |
$$R_2$$ | a | $$a$$ | a | $$a$$ | a | $$a$$ | a | $$a$$ | $$a$$ | $$a$$ | |||||
$$R_3$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ | |||||||||||
$$R_4$$ | $$a$$ | $$a$$ | |||||||||||||
$$R_5$$ | $$a$$ | $$a$$ | $$a$$ | ||||||||||||
$$R_6$$ | $$a$$ | $$a$$ | |||||||||||||
$$R_7$$ | $$a$$ | $$a$$ | $$a$$ | $$a$$ |
- есть строка сплошь состоящая из $$a$$, значит $$\rho$$ обладает соединением без потерь.
- смотрим сохранение ФЗ:
- 1-4) $$H = \varnothing$$, $$УНП = (K\rightarrow LMN, E\rightarrow R, A\rightarrow BD, AC\rightarrow KE, P\rightarrow X, W\rightarrow ACYP, BRY\rightarrow V)$$
- 5) переписываем ФЗ, которые повычёркивали. $$H\neq\varnothing$$;
- 6)
- $$AC\rightarrow^? RLMNBD$$ да
- $$(AC)^+ = ACBDKERLMN$$
- $$CDK\rightarrow^? LMNABER$$ нет
- $$(CDK)^+ = CDKLMN$$
- раз хотя бы одно нет, то вся $$\rho$$ не обладает сохранением ФЗ. Но это не страшно, если исходные данные вводятся с учётом здравого смысла.
Каждая схема отношения из $$\rho$$ уже находится в 3НФ. Покажем, что эти схемы отношения находятся ещё и в НФБК:
- $$R_1 = WACYP$$, $$W\rightarrow ACVYP$$, $$W$$ - ключ, а ФЗ неприводимая и нетривиальная, значит отношение в НФБК;
- $$R_2 = ACKE$$, $$AC\rightarrow KE$$, $$AC$$ - ключ, а ФЗ неприводимая и нетривиальная, значит отношение в НФБК;
- $$R_3 = KLMN$$, $$K\rightarrow LMN$$, $$K$$ - ключ, а ФЗ неприводимая и нетривиальная, значит отношение в НФБК;
- $$R_4 = ER$$, $$E\rightarrow R$$, $$E$$ - ключ, а ФЗ неприводимая и нетривиальная, значит отношение в НФБК;
- $$R_5 = ABD$$, $$A\rightarrow BD$$, $$A$$ - ключ, а ФЗ неприводимая и нетривиальная, значит отношение в НФБК;
- $$R_6 = PX$$, $$P\rightarrow X$$, $$P$$ - ключ, а ФЗ неприводимая и нетривиальная, значит отношение в НФБК;
- $$R_7 = BRYV$$, $$BRY\rightarrow V$$, $$BRY$$ - ключ, а ФЗ неприводимая и нетривиальная, значит отношение в НФБК.
ДЗ 1
Задание:
- По этой же схеме $$\rho$$ построить диаграмму сущность-связь по нотации ERwin, используя идентифицирующие и неидентифицирующие связи;
- Выявить недостатки этой диаграммы:
- в $$R_6$$ ключ $$P$$ является составным ключом (номер, серия, кем выдан паспорт);
- в $$R_2$$ и $$R_7$$ ключи тоже составные;
- в ключи входят атрибуты предметной области (это плохо).
Поэтому диаграмму надо будет перерисовать, используя синтетические ключи.
ДЗ 2
Первая задача
Задание:
Задана предметная область про пилотов, но ФЗ другие:
$$F = (B\rightarrow D, D\rightarrow B, AB\rightarrow D, AD\rightarrow B, BC\rightarrow A, BC\rightarrow D, CD\rightarrow A, CD\rightarrow B,$$ $$ABC\rightarrow D, ACD\rightarrow B, BCD\rightarrow A)$$
Синтезировать БД с помощью алгоритма.
Вторая задача
Задание:
Новая предметная область: курсы иностранных языков.
$$U =$$
- $$($$
- $$A$$ - код курса,
- $$B$$ - код филиала,
- $$C$$ - условия обучения,
- $$D$$ - номер группы (состоит из номера филиала и номера группы),
- $$E$$ - номер уровня обучения,
- $$K$$ - ФИО слушателя,
- $$L$$ - число оплаченных слушателем занятий (оплачиваются все занятия курса сразу),
- $$N$$ - стоимость обучения для студентов и школьников,
- $$O$$ - стоимость обучения для взрослых,
- $$P$$ - адрес филиала,
- $$R$$ - заведующий филиалом,
- $$S$$ - телефон филиала,
- $$T$$ - часы работы преподавателя с группой слушателей (количество часов),
- $$V$$ - зарплата преподавателя,
- $$X$$ - ФИО преподавателя
- $$)$$
ФЗ:
$$F = (A\rightarrow CNO, B\rightarrow PRS, ADE\rightarrow X, K\rightarrow DEL, L\rightarrow T, X\rightarrow VT, ET\rightarrow V, D\rightarrow XBE)$$
Синтезировать схему БД по алгоритму. Со следующими свойствами:
- соединение без потерь;
- каждая схема в 3НФ;
- каждую проверить ещё и на НФБК;
- наименьшее число схем отношений;
- сохранение ФЗ (если не обладает, то новых схемы отношений добавлять не надо).
продолжение...