Универсальное отношение
Рассмотрим задачу проектирования БД на базе следующей таблицы:
Таблица «Сессия»
ФИО студента | Семестр | Дисциплина | Форма отчетности | Оценка | Количество часов | ФИО преподавателя | Должность |
Иванов В.П. | Английский язык | Зачет | Цветкова А.Ю. | Доцент | |||
Математический анализ | Зачет | Рыбин К.К. | Ст. преп. | ||||
Математический анализ | Экзамен | Раков И.И. | Проф. | ||||
Программирование | Зачет | Незабудкина З.П. | Преп. | ||||
Программирование | Экзамен | Зайчиков А.А. | Доцент | ||||
Линейная алгебра | Зачет | Волков Г.И. | Преп. | ||||
Линейная алгебра | Экзамен | Волков Г.И. | Преп. |
ФИО студента | Семестр | Дисциплина | Форма отчетности | Оценка | Количество часов | ФИО преподавателя | Должность | |
Петрова А.П. | Английский язык | Зачет | Цветкова А.Ю. | Доцент | ||||
Математический анализ | Зачет | Рыбин К.К. | Ст. преп. | |||||
Математический анализ | Экзамен | Раков И.И. | Проф. | |||||
Программирование | Зачет | Незабудкина З.П. | Преп. | |||||
Программирование | Экзамен | Зайчиков А.А. | Доцент | |||||
Линейная алгебра | Зачет | Волков Г.И. | Преп. | |||||
Линейная алгебра | Экзамен | Волков Г.И. | Преп. | |||||
Шкала оценок: 0 – незачет, 1 – зачет, 2, 3, 4, 5 – оценки.
Этот вариант таблицы «Сессия» не является отношением, т.к. большинство ее столбцов не атомарны. Значение любого атрибута реляционной таблицы является атомарным, если само это значение, в свою очередь, не является реляционной таблицей (отношением). Атомарными являются значения столбцов ФИО СТУДЕНТА, СЕМЕСТР. Остальные столбцы таблицы – множественные.
Эта таблица называется таблицей в ненормализованной форме (ННФ) или ненормализованной таблицей, т. к. содержит одну или несколько повторяющихся групп данных.
Для преобразования данных в отношение необходимо реконструировать таблицу, например, с помощью процесса вставки. Результат имеет вид:
Универсальное отношение «СЕССИЯ»
ФИО студента | Семестр | Дисциплина | Форма отчетности | Оценка | Количество часов | ФИО преподавателя | Должность |
Иванов В.П. | Английский язык | Зачет | Цветкова А.Ю. | Доцент | |||
Иванов В.П. | Математический анализ | Зачет | Рыбин К.К. | Ст. преп. | |||
Иванов В.П. | Математический анализ | Экзамен | Раков И.И. | Проф. | |||
Иванов В.П. | Программирование | Зачет | Незабудкина З.П. | Преп. | |||
Иванов В.П. | Программирование | Экзамен | Зайчиков А.А. | Доцент | |||
Иванов В.П. | Линейная алгебра | Зачет | Волков Г.И. | Преп. | |||
Иванов В.П. | Линейная алгебра | Экзамен | Волков Г.И. | Преп. | |||
Петрова А.П. | Английский язык | Зачет | Цветкова А.Ю. | Доцент | |||
Петрова А.П. | Математический анализ | Зачет | Рыбин К.К. | Ст. преп. | |||
Петрова А.П. | Математический анализ | Экзамен | Раков И.И. | Проф. | |||
Петрова А.П. | Программирование | Зачет | Незабудкина З.П. | Преп. | |||
Петрова А.П. | Программирование | Экзамен | Зайчиков А.А. | Доцент | |||
Петрова А.П. | Линейная алгебра | Зачет | Волков Г.И. | Преп. | |||
Петрова А.П. | Линейная алгебра | Экзамен | Волков Г.И. | Преп. |
Такое преобразование приводит к возникновению большого объема избыточных данных. Но полученную таблицу называют универсальным отношением проектируемой БД. В одно универсальное отношение включаются все представляющие интерес атрибуты, и оно может содержать все данные, которые предполагается размещать в БД. При проектировании БД универсальное отношение используется в качестве отправной точки.
Однако при использовании универсального отношения возникают следующие проблемы:
1. Избыточность данных. Значения столбцов таблицы многократно повторяются. Повторяются также и некоторые наборы значений столбцов, например, данные о дисциплине.
2. Потенциальная противоречивость. Если при вводе данных, например, количества часов для дисциплины АНГЛИЙСКИЙ ЯЗЫК, была допущена ошибка, то для ее исправления необходимо найти все строки, содержащие сведения об этой дисциплине, и во всех этих строках произвести изменения. Также при заполнении такой таблицы могут быть использованы различные формы записи одного и того же значения, например: АНГЛ. ЯЗЫК и АНГЛИЙСКИЙ ЯЗЫК, МАТ. АНАЛИЗ и МАТЕМАТИЧЕСКИЙ АНАЛИЗ.
3. Аномалии модификации:
a. аномалии вставки. В БД не может быть записан новый преподаватель, если он не ведет ни одну дисциплину по данному учебному плану. По аналогичным причинам нельзя ввести и новую дисциплину, если она не изучается в рамках данного учебного плана.
b. аномалии удаления. Обратная проблема возникает при необходимости удаления записей, содержащих информацию об успеваемости всех студентов по конкретной дисциплине. При таком удалении будут утрачены и сведения о преподавателе, ведущем данную дисциплину.
c. аномалии обновления. При попытке изменения одного из атрибутов для некоторого преподавателя, например, номера телефона, необходимо обновить соответствующие значения в строках для всех студентов, которых обучает этот преподаватель. Если такой модификации будут подвергнуты не все требуемые строки, то в этом случае БД будет содержать противоречивые сведения.
Решение этих проблем состоит в разделении данных и связей (или декомпозиции), т.е. в выделении в отдельные таблицы сведений о студентах, преподавателях, дисциплинах и результатах сдачи экзаменов:
Студенты | Преподаватели | Дисциплины | |||||
№ | ФИО студента | № | ФИО преподавателя | № | Дисциплина | ||
1. | Иванов В.П. | 1. | Волков Г.И. | 1. | Алгоритмы и структуры данных | ||
2. | Петрова А.П. | 2. | Зайчиков А.А. | 2. | Английский язык | ||
3. | Сидоров К.К. | 3. | Карпов К.Ю. | 3. | Линейная алгебра | ||
4. | Незабудкина З.П. | 4. | Математический анализ | ||||
5. | Раков И.И. | 5. | Операционные системы, среды и оболочки | ||||
6. | Рыбин К.К. | 6. | Программирование | ||||
7. | Соболев И.Г. | 7. | Теория вероятности и математическая статистика | ||||
8. | Цветкова А.Ю. |
Учебный план | ||||||
№ | Дисциплина | Семестр | Количество часов | Форма отчетности | Преподаватель | Должность |
зачет | Цветкова А.Ю. | Доцент | ||||
зачет | Волков Г.И. | Преп. | ||||
экзамен | Волков Г.И. | Преп. | ||||
зачет | Рыбин К.К. | Ст. преп. | ||||
экзамен | Раков И.И. | Проф. | ||||
зачет | Незабудкина З.П. | Преп. | ||||
экзамен | Зайчиков А.А. | Доцент | ||||
зачет | Цветкова А.Ю. | Доцент | ||||
зачет | Карпов К.Ю. | Преп. | ||||
экзамен | Раков И.И. | Проф. | ||||
экзамен | Зайчиков А.А. | Доцент | ||||
экзамен | Соболев И.Г. | Доцент | ||||
зачет | Незабудкина З.П. | Преп. | ||||
экзамен | Незабудкина З.П. | Преп. |
Результаты сессии | ||
Студент | Учебный план | Оценка |
В таблицах РЕЗУЛЬТАТЫ СЕССИИ и УЧЕБНЫЙ ПЛАН конкретные значения заменены на их номера в других таблицах. Это значительно упрощает процедуру модификации текстовых значений.
Важность нормализации состоит в том, что она позволяет разбить большие отношения, как правило, содержащие большую избыточность информации, на более мелкие логические единицы, группирующие только данные, объединенные "по природе".
Относительно таблиц нормализация - это разбиение таблицы на две или более, обладающих лучшими свойствами при включении, изменении и удалении данных. Окончательная цель нормализации сводится к получению такого проекта БД, в котором каждый факт появляется лишь в одном месте, т.е. исключена избыточность информации. Это делается не столько с целью экономии памяти, сколько для исключения возможной противоречивости хранимых данных.
После применения правил нормализации логические группы данных располагаются не более чем в одной таблице. Это дает следующие преимущества:
- данные легко обновлять или удалять;
- исключается возможность рассогласования копий данных;
- уменьшается возможность введения некорректных данных.