ТОРА (9) - Семинар №5 - Синтез хорошей БД: различия между версиями
ILobster (обсуждение | вклад) (Новая страница: «== Алгоритм синтеза хорошей БД == Предметная область "Автовокзал". Задана универсальная с...») |
ILobster (обсуждение | вклад) мНет описания правки |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 157: | Строка 157: | ||
* смотрим сохранение ФЗ: | * смотрим сохранение ФЗ: | ||
:1-4) {{Формула|f=H = \varnothing}}, {{Формула|f=УНП = K\rightarrow LMN, E\rightarrow R, A\rightarrow BD, AC\rightarrow KE, P\rightarrow X, W\rightarrow ACYP, BRY\rightarrow V}} | :1-4) {{Формула|f=H = \varnothing}}, {{Формула|f=УНП = (K\rightarrow LMN, E\rightarrow R, A\rightarrow BD, AC\rightarrow KE, P\rightarrow X, W\rightarrow ACYP, BRY\rightarrow V)}} | ||
:5) переписываем ФЗ, которые повычёркивали. {{Формула|f=H\neq\varnothing}}; | :5) переписываем ФЗ, которые повычёркивали. {{Формула|f=H\neq\varnothing}}; | ||
Строка 199: | Строка 199: | ||
<u>Задание:</u> | <u>Задание:</u> | ||
Задана предметная область [ТОРА (9) - Семинар №4 - Синтез хорошей БД#Синтез хорошей схемы БД | про пилотов], но ФЗ другие: | Задана предметная область [[ТОРА (9) - Семинар №4 - Синтез хорошей БД#Синтез хорошей схемы БД | про пилотов]], но ФЗ другие: | ||
{{Формула|f=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)}} | {{Формула|f=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,}} | ||
{{Формула|f=ABC\rightarrow D, ACD\rightarrow B, BCD\rightarrow A)}} | |||
Синтезировать БД с помощью алгоритма. | Синтезировать БД с помощью алгоритма. | ||
Строка 240: | Строка 241: | ||
* наименьшее число схем отношений; | * наименьшее число схем отношений; | ||
* сохранение ФЗ (если не обладает, то новых схемы отношений добавлять не надо). | * сохранение ФЗ (если не обладает, то новых схемы отношений добавлять не надо). | ||
{{Forward|l=ТОРА (9) - Семинар №6 - Синтез хорошей БД}} | |||
[[Категория:Теоретические основы реляционной алгебры (9 семестр)|С]] | [[Категория:Теоретические основы реляционной алгебры (9 семестр)|С]] | ||
[[Категория:Конспекты лекций и семинаров]] | [[Категория:Конспекты лекций и семинаров]] |
Текущая версия от 21:24, 5 декабря 2012
Алгоритм синтеза хорошей БД
Предметная область "Автовокзал".
Задана универсальная схема отношений:
$$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НФ;
- каждую проверить ещё и на НФБК;
- наименьшее число схем отношений;
- сохранение ФЗ (если не обладает, то новых схемы отношений добавлять не надо).
продолжение...