
- •22 Методические указания к лабораторной работе №1 "Проектирование базы данных"
- •Проектирование базы данных введение
- •Порядок выполнения работы
- •Наибольшее распространение для семантического моделирования получила модель "сущность-связь" (Entity-Relationship) 2, или er-модель.
- •Рассмотрим базовые понятия er-модели.
- •Различают следующие виды атрибутов:
- •Реляционная модель данных
- •Ограничения целостности
- •6. Ссылочная целостность
- •Стандартные типы данных
- •Типы данных
- •Создание баз данных и таблиц на sql Для операций над базами данных и таблицами в стандарте sql имеются следующие операторы:
- •Объявление текущей базы данных
- •Домены и пользовательские типы данных
- •Правила преобразования er-модели в реляционную
- •Проектирование доменов
- •Создание автоинкрементных столбцов
- •Нормализация
- •Первая нормальная форма (first normal form) – 1нф
- •Библиографический список
Нормализация
Аномалии модификации
К сожалению, не все таблицы, полученные преобразованием из ER-модели, имеют удачную структуру. Для некоторых таблиц изменение данных может привести к нежелательным последствиям, называемым аномалиями модификации (modification anomalies).
Рассмотрим пример. Сущность ПРИЁМ_ТОВАРА (рис.10,а) в контексте базы данных отражает, когда какой товар получен, и в каком количестве. Соответствующая ей реляционная таблица приведена на рис.10,б. Допустим, что по одному и тому же документу (накладной) на склад могут поступить несколько различных товаров.
Если мы удалим строку, относящуюся к документу 59, то потеряем не только информацию о том, что по этому документу получен шланг, но и то, шланг измеряется в метрах. Это называется аномалией удаления(deletionanomaly) – то есть, удаляя факты, относящиеся к одной сущности (по накладной № 59 получен шланг), мы непроизвольно удаляем факты, относящиеся к другой сущности (единицей измерения шлангов является погонный метр).
На примере этой же таблицы можно продемонстрировать аномалиювставки(insertionanomaly). Предположим, мы хотим записать в базу тот факт, что фанера измеряется в листах (штуках), однако мы не можем внести эти данные в таблицуПрием_Товара, пока на склад не поступит хотя бы один лист фанеры. Аномалия вставки проявляется в том, что мы не можем записать в таблицу некоторый факт об одной сущности, не указав дополнительно некоторый факт о другой сущности.
Третий тип аномалий – аномалия обновления (update anomaly). Допустим, оператор ошибся при вводе, и документ номер 60 нужно было отнести не к 1, а ко 2 ноября 2004г. Чтобы исправить эту ошибку, нужно найти все строки, относящиеся к документу 60, и изменить в них ячейкуДатана '2004-11-02'. Здесь аномалия модификации проявляется в том, что при изменении одного факта (накладная № 60 создана 02.11.2004), мы вынуждены модифицировать несколько строк таблицы.
Рис. 10 (а)
Приём_Товара
Товар |
Кол-во |
Единица измерения |
Дата |
Номер документа |
Гвозди 100 |
10 |
кг |
2004-10-21 |
58 |
Гвозди 120 |
10 |
кг |
2004-10-21 |
58 |
Шланг резиновый D25 |
150 |
метр |
2004-10-28 |
59 |
Доска обрезная 6000х150х30 |
30 |
куб.м |
2004-11-01 |
60 |
Брус 6000х40х40 |
12 |
куб.м |
2004-11-01 |
60 |
(б)
Рис.10. а – ER-диаграмма; б – соответствующее ей отношение.
Аномальная структура таблиц приводит к избыточности хранимой информации. Например, факт, что гвозди измеряются в килограммах, мы вынуждены вводить всякий раз при поступлении гвоздей. Факт, что документ № 58 создан 21.10.2004, продублирован в нескольких строках. Избыточность информации не только "съедает" память, но и делает возможным ввод противоречивых данных. Так, если, добавляя строки, относящиеся к одному документу, ошибиться один раз при вводе даты, то легко получить противоречие: один и тот же документ относится к разным датам.
Аномалии, присутствующие в таблице, можно интуитивно описать следующим образом: проблемы возникают из-за того, что таблица Приём_Товарасодержит факты, относящиеся к различным темам:
в каких единицах измеряет товар;
когда создан документ;
какие товары получены по данному документу.
Когда мы добавляем строку, нам приходится добавлять информацию, затрагивающую различные темы; точно так же, когда мы удаляем строку, мы вынуждены удалять данные, относящиеся сразу к трем темам.
Суть нормализациисостоит в том, чтобы разбивать таблицы, содержащие несколько тем, на две или более таблицы, каждая из которых будет содержать одну тему. Это делается не столько с целью экономии памяти, сколько для исключения возможной противоречивости хранимых данных.
Таблицу Приём_Товараможно разбить по числу тем на три таблицы:
Товары(Товар, Единица измерения )
Документы(Номер документа, Дата )
Поступления(Товар,Номер документа, Количество )
Нетрудно проверить, что полученные таблицы лишены аномалий модификации.
Всякий раз, когда мы разбиваем таблицу, мы, возможно, порождаем ограничение ссылочной целостности. ТаблицыТовары,ДокументыиПоступлениясвязаны между собой внешними ключами: столбецТовартаблицыПоступленияссылается наPrimaryKeyТовартаблицыТовары; столбец "Номер документа" ссылается на одноименный столбец таблицыДокументы.
Нормальные формы
Здесь изложены несколько правил, относящихся к нормализации. Все эти правила представляют собой частные случаи только что описанного процесса нормализации.
В 70-х годах XXвека теоретики реляционных баз данных обнаруживали различные типы аномалий модификации, вызванные структурой отношений. Классы отношений, лишенные аномалий определенного типа, называютсянормальными формами (normalforms). Известно семь нормальных форм: первая, вторая, третья, четвертая, пятая нормальные формы (1НФ, 2НФ, 3НФ, 4НФ, 5НФ), нормальная форма Бойса-Кодда (НФБК) и доменно-ключевая нормальная форма (ДКНФ). Нормальные формы являются вложенными друг в друга (рис.11). То есть отношение во второй нормальной форме является отношением в первой нормальной форме, а отношение в 5НФ одновременно находится в 4НФ, НФБК, 3НФ, 2НФ, 1НФ.
Рис.11 – Нормальные формы