Вариант № ___. База данных ___________________
ФИО студента ______________________________, гр.__________
Описание предметной области
Пункт видеопроката осуществляет прокат записей фильмов на различных типах носителей: видеокассеты VHS, диски VCD и DVD; важно отметить, что как на одном носителе может находиться несколько фильмов (например, сборник мультфильмов на видеокассете), так и один фильм может быть записан на несколько отдельных носителей (одного типа). Клиентами являются физические лица.
В системе целесообразно выделить несколько ролей, которые могут играть пользователи.
· Клиент. Клиентов интересует, какие фильмы доступны в пункте видеопроката вообще, какие можно взять в данный момент.
· Сотрудник видеопроката. Сотрудник видеопроката работает с клиентами: выдает и принимает носители, а также записывает информацию о новых клиентов.
Потребители информации
1) Работник проката.
2) Клиент проката.
Список атрибутов данных
Атрибуты:
1. Наименование фильма
2. Продолжительность фильма
3. Режиссер фильма
4. Актеры, занятые в фильме
5. Год выхода фильма в прокат
6. Идентификатор носителя
7. Метка носителя
8. Время добавления информации о носителе
9. Тип носителя
10. Рента за сутки
11. Дата порчи-потери носителя
12. Дата выдачи носителя клиенту
13. Дата возврата носителя
14. ФИО клиента
15. Адрес электронной почты клиента
16. Контактный телефон клиента
17. Идентификатор типа носителя
18. Идентификатор клиента
19. Идентификатор фильма
20. Идентификатор выдачи
21. Идентификатор распределения
22. Номер тома
Атрибуты, выделенные курсивом, добавлены в процессе проектирования.
Распределение атрибутов данных по группам пользователей
1) Работник проката: 1,2. 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
2) Клиент проката: 1, 2, 3, 4, 5, 9, 10, 12, 13
Определение множества функциональных зависимостей
18→1;
18→2;
18→3;
18→4;
18→5;
20→6;
21→6;
6→7;
6→8;
17→9;
6→10;
6→11 (см. Замечание 1);
20→12;
20→13;
19→14;
19→15;
19→16;
6→17;
21→18;
20→19;
21→22 (см. Замечание 2).
Построение канонической модели данных
Исходное множество функциональных зависимостей не избыточно.
Переписываем множество функциональных зависимостей в форме, приемлемой для построения логических записей:
18→1, 2, 3, 4, 5;
6→7, 8, 10, 17;
6→11;
17→9;
19→14, 15, 16;
20→6, 12, 19;
20→ 13;
21→6,18;
21→ 22.
Сформируем логические записи (подчеркнуты ключевые элементы данных):
1) R1 – Фильмы (Идентификатор фильма(18), Наименование фильма(1), Продолжительность фильма(2), Режиссер фильма(3), Актеры, занятые в фильме(4); Год выхода фильма в прокат(5))
2) R2 – Многотомные распределения (Идентификатор распределения(21), Номер тома(22))
3) R3 – Распределение фильмов (Идентификатор распределения(21), Идентификатор фильма(18), Идентификатор носителя(6))
4) R4 – Носители (Идентификатор носителя(6), Метка носителя(7), Рента за сутки(10), Время добавления информации о носителе(8), Идентификатор типа носителя(17))
5) R5 – Испорченные носители (Идентификатор носителя(6), Дата порчи-потери носителя(11))
6) R6 – Справочник типов носителей (Идентификатор типа носителя(17), Тип носителя(9))
7) R7 – Клиенты (Идентификатор клиента(19), ФИО клиента(14), Адрес электронной почты клиенты(15), Контактный телефон клиента(16))
8) R8 – Выдачи (Идентификатор выдачи(20), Идентификатор носителя(6), Идентификатор клиента(19), Дата выдачи носителя клиенту(12))
9) R9 – Возвраты (Идентификатор выдачи(20), Дата возврата носителя(13))
В результате проверки свойства соединения без потерь информации получаем следующую итоговую таблицу.
R1 | +(1) | +(1) | +(1) | +(1) | +(1) | +(1) | ||||||||||||||||
R2 | +(11) | +(11) | +(11) | +(11) | +(11) | +(9) | +(12) | +(12) | +(14) | +(12) | +(13) | +(12) | +(9) | +(1) | +(1) | |||||||
R3 | +(2) | +(2) | +(2) | +(2) | +(2) | +(1) | +(3) | +(3) | +(5) | +(3) | +(4) | +(3) | +(1) | +(1) | +(10) | |||||||
R4 | +(1) | +(1) | +(1) | +(5) | +(1) | +(4) | +(1) | |||||||||||||||
R5 | +(1) | +(3) | +(3) | +(5) | +(3) | +(1) | +(3) | |||||||||||||||
R6 | +(1) | +(1) | ||||||||||||||||||||
R7 | +(1) | +(1) | +(1) | +(1) | ||||||||||||||||||
R8 | +(1) | +(3) | +(3) | +(5) | +(3) | +(4) | +(1) | +(8) | +(6) | +(6) | +(6) | +(3) | +(1) | +(1) | ||||||||
R9 | +(7) | +(12) | +(12) | +(14) | +(12) | +(13) | +(7) | +(1) | +(15) | +(15) | +(15) | +(12) | +(7) | +(1) |
Как мы видим строки, состоящей из всех “+” данная таблица не содержит, и возможные итерации уже исчерпаны, это значит, что соединения без потерь информации нет.
После добавления обобщенного ключа
R1 | +(1) | +(1) | +(1) | +(1) | +(1) | +(1) | ||||||||||||||||
R2 | +(11) | +(11) | +(11) | +(11) | +(11) | +(9) | +(12) | +(12) | +(14) | +(12) | +(13) | +(12) | +(9) | +(1) | +(1) | |||||||
R3 | +(2) | +(2) | +(2) | +(2) | +(2) | +(1) | +(3) | +(3) | +(5) | +(3) | +(4) | +(3) | +(1) | +(1) | +(10) | |||||||
R4 | +(1) | +(1) | +(1) | +(5) | +(1) | +(4) | +(1) | |||||||||||||||
R5 | +(1) | +(3) | +(3) | +(5) | +(3) | +(1) | +(3) | |||||||||||||||
R6 | +(1) | +(1) | ||||||||||||||||||||
R7 | +(1) | +(1) | +(1) | +(1) | ||||||||||||||||||
R8 | +(1) | +(3) | +(3) | +(5) | +(3) | +(4) | +(1) | +(8) | +(6) | +(6) | +(6) | +(3) | +(1) | +(1) | ||||||||
R9 | +(7) | +(12) | +(12) | +(14) | +(12) | +(13) | +(7) | +(1) | +(15) | +(15) | +(15) | +(12) | +(7) | +(1) | ||||||||
R3 ∞ R8 | +(2) | +(2) | +(2) | +(2) | +(2) | +(1) | +(3) | +(3) | +(5) | +(3) | +(4) | +(1) | +(8) | +(6) | +(6) | +(6) | +(3) | +(1) | +(1) | +(1) | +(1) | +(10) |