- •Лекция 9-10. Основы баз данных
- •Базы данных и информационные системы
- •Архитектура информационной системы
- •Модели данных
- •Системы управления базами данных
- •Элементы реляционной модели
- •Проблемы проектирования реляционных бд
- •Избыточное дублирование данных
- •Аномалии обновления, удаления и добавления записей
- •Универсальное отношение
- •Почему проект бд может быть плохим?
- •Нормализация отношений (таблиц)
- •Обучение
- •Нормальные формы
- •Первая нормальная форма
- •Вторая нормальная форма
- •Третья нормальная форма
Проблемы проектирования реляционных бд
Проектирование информационных систем, включающих в себя базы данных, осуществляется на физическом и логическом уровнях. Решение проблем проектирования на физическом уровне во многом зависит от используемой СУБД, оно зачастую автоматизировано и скрыто от пользователя. В ряде случаев пользователю предоставляется возможность настройки отдельных параметров системы, что не составляет большой проблемы.
Логическое проектирование заключается в определении числа и структуры таблиц, формировании запросов к БД, определении типов отчетных документов, разработке алгоритмов обработки информации, создании форм для ввода и редактирования данных и базе и решении ряда аналогичных задач.
Решение задач логического проектирования БД и основном определяется спецификой задач предметной области. Наиболее важной здесь является проблема структуризации данных.
При проектировании структур данных для автоматизированных систем используют классический подход: сбор информации об объектах решаемой задачи в рамках одной таблицы (одного отношения) и последующая декомпозиция ее на несколько взаимосвязанных таблиц на основе процедуры нормализации отношений.
Но вначале охарактеризуем основные проблемы, имеющие место при определении структур данных в реляционной модели.
Избыточное дублирование данных
Следует различать простое (неизбыточное)иизбыточное дублированиеданных. Первое из них вполне естественно, второе может приводить к проблемам при обработке данных. Приведем примеры обоих вариантов дублирования.
Пример неизбыточного дублирования данных представляет приведенное на рис. 2 отношение СЛУЖАЩИЕ_ТЕЛЕФОНЫ с атрибутами Сотрудник и Телефон. Для сотрудников, находящихся в одном помещении, номера телефонов совпадают. Номер телефона 4328 встречается несколько раз, хотя для каждого служащего номер телефона уникален. Поэтому ни один из номеров не является избыточным. Действительно, при удалении одного из номеров телефонов будет утеряна информация о том, по какому номеру можно дозвониться до одного из служащих (поэтому эта информация не избыточна).
|
Служащий |
Телефон |
|
Иванов |
37-21 |
|
Петров |
43-28 |
|
Сидоров |
43-28 |
|
Егоров |
43-28 |
Рис. 2. Неизбыточное дублирование в отношении (таблице) СЛУЖАЩИЕ_ТЕЛЕФОНЫ
Пример избыточного дублирования представляет приведенное на рис. 3. Отношение СЛУЖАЩИЕ_ТЕЛЕФОНЫ_КОМНАТЫ, которое, в отличие от отношения СЛУЖАЩИЕ_ТЕЛЕФОНЫ, дополнено атрибутом НомерКомнаты. Естественно предположить, что все служащие в одной комнате имеют один и тот же телефон. Следовательно, в рассматриваемом отношении имеется избыточное дублирование данных. Так, в связи с тем, что Сидоров и Егоров находятся в той же комнате, что и Петров, то их номера можно узнать из кортежа со сведениями о Петрове.
|
Служащий |
Телефон |
НомерКомнаты |
|
Иванов |
37-21 |
109 |
|
Петров |
43-28 |
111 |
|
Сидоров |
43-28 |
111 |
|
Егоров |
43-28 |
111 |
Рис. 3. Избыточное дублирование
На рис. 4 приведен пример неудачного отношения СЛУЖАЩИЕ_ТЕЛЕФОНЫ_ КОМНАТЫ, в котором вместо телефонов Сидорова и Егорова поставлены «прочерки» (неопределенные значения). Неудачность подобного способа исключения избыточности заключается в следующем. Во-первых, при программировании придется потратить дополнительные усилия на создание механизма поиска информации для «прочерков» таблицы. Во-вторых, память все равно выделяется под атрибуты с «прочерками», хотя дублирование данных и исключена. В-третьих, что особенно важно, при увольнении Петрова кортеж со сведениями о нем будет исключен из отношения, а значит, уничтожена информация о телефоне 111-й комнаты, что недопустимо.
|
Служащий |
Телефон |
НомерКомнаты |
|
Иванов |
3721 |
109 |
|
Петров |
4328 |
111 |
|
Сидоров |
— |
111 |
|
Егоров |
— |
111 |
Рис. 4. Неудачный вариант решения проблемы избыточного дублирования через удаление номеров телефона Сидорова и Егорова, т.к. они работают в одной комнате с Петровым
В
СЛУЖАЩИЕ_КОМНАТЫ Служащий НомерКомнаты Иванов 109 Петров 111 Сидоров 111 Егоров 111
КОМНАТЫ_ТЕЛЕФОНЫ НомерКомнаты Телефон 109 37-21 111 43-28
Рис. 5. Исключение избыточного дублирования
Процедура декомпозиции отношения СЛУЖАЩИЕ_ТЕЛЕФОНЫ_КОМНАТЫ на два отношения СЛУЖАЩИЕ_КОМНАТЫ и КОМНАТЫ_ТЕЛЕФОНЫ является основной процедурой нормализации отношений.
