Понятие нормализации отношений. Нормальные формы
Центральная задача проектирования базы данных экономической информационной системы - определение количества отношений и их атрибутного состава.
Задача группировки атрибутов в отношения, набор которых заранее не фиксирован, допускает множество различных вариантов решения. Рациональные варианты группировки должны учитывать следующие требования:
- множество отношений должно обеспечивать минимальную избыточность представления информации;
- корректировка отношений не должна приводить к двусмысленности или потере информации;
- перестройка набора отношений при добавлении в базу данных новых атрибутов должна быть минимальной.
Нормализация представляет собой способ преобразования отношений, позволяющий улучшить характеристики БД по перечисленным критериям.
Ограничения на значения, хранимые в реляционной базе данных, достаточно многочисленны. Соблюдение этих ограничений в конкретных отношениях связано с наличием так называемых нормальных форм. Процесс преобразования отношений базы данных к той или иной нормальной форме называется нормализацией отношений. Нормальные формы нумеруются последовательно, и чем больше номер нормальной формы, тем больше ограничений на хранимые значения должно соблюдаться в соответствующем отношении.
Отношение в первой нормальной форме - это обычное отношение с двухуровневой структурой. Недопустимость в структуре отношения третьего и последующих уровней является ограничением, определяющим первую нормальную форму отношения.
Преобразование ненормализованного отношения в представление, соответствующее первой нормальной форме - это операция нормализации для отношения. Реляционная база данных в целом характеризуется первой нормальной формой , если этой форме соответствуют все ее отношения.
Отношение имеет вторую нормальную форму, если оно соответствует первой нормальной форме и не содержит неполных функциональных зависимостей.
Отношение, не соответствующее второй нормальной форме, характеризуется избыточностью хранимых данных. Например, отношение Магазин, Изделие, План, Цена. Вероятным ключом являются атрибуты Магазин, Изделие. Но Цена определяется только Изделием. Избыточность здесь иллюстрируется тем фактом, что цена изделия указывается столько раз, сколько магазинов продают это изделие. Переход ко второй нормальной форме и соответственно устранение избыточности данных связано с созданием двух отношений вместо одного исходного: Магазин, Изделие, План и Изделие, Цена.
База данных находится во второй нормальной форме, если все ее отношения находятся во второй нормальной форме.
Отношение соответствуеттретьей нормальной форме, если оно соответствует второй нормальной форме, и среди его атрибутов отсутствуют транзитивные функциональные зависимости.
Транзитивная функциональная зависимость содержит две функциональные зависимости:
- вероятный ключ отношения функционально определяет неключевой атрибут;
- этот атрибут в свою очередь функционально определяет другой неключевой атрибут.
Например, отношение №зачетки, ФИО, №группы, Факультет. №группы зависит от №зачетки, а Факультет зависит от №группы. Возникает транзитивная зависимость.
Возникает избыточность данных, т.к. принадлежность данной группы к факультету указывается столько раз, сколько студентов обучается в данной группе. Ликвидировать данную избыточность также можно, разделив указанное отношение на два:№зачетки, ФИО, №группы и №группы, Факультет.
База данных находится в третьей нормальной форме, если все ее отношения находятся в третьей нормальной форме.
Приведенные примеры показывают, что отношения, в которых наблюдается одна или ни одной функциональной зависимости, соответствуют условиям второй и третьей нормальной форм, т.к. неполная и транзитивная функциональные зависимости представляют собой две зависимости. На этом принципе основан алгоритм получения отношений в третьей нормальной форме.
Реляционная база данных и ее особенности. Виды связей между реляционными таблицами
Реляционная база данных – это совокупность взаимосвязанных таблиц, каждая из которых содержит информацию об объектах определенного типа. Строка таблицы содержит данные об одном объекте (например, товаре, клиенте), а столбцы таблицы описывают различные характеристики этих объектов – атрибутов (например, наименование, код товара, сведения о клиенте). Записи, т.е. строки таблицы, имеют одинаковую структуру – они состоят из полей, хранящих атрибуты объекта. Каждое поле, т.е. столбец, описывает только одну характеристику объекта и имеет строго определенный тип данных. Все записи имеют одни и те же поля, только в них отображаются различные информационные свойства объекта.
В реляционной базе данных каждая таблица должна иметь первичный ключ- поле или комбинация полей, которые единственным образом идентифицируют каждую строку таблицы. Если ключ состоит из нескольких полей, он называется составным. Ключ должен быть уникальным и однозначно определять запись. По значению ключа можно отыскать единственную запись. Ключи служат также для упорядочивания информации в БД.
Таблицы реляционной БД должны отвечать требованиям нормализации отношений. Нормализация отношений – это формальный аппарат ограничений на формирование таблиц, который позволяет устранить дублирование, обеспечивает непротиворечивость хранимых в базе данных, уменьшает трудозатраты на ведение базы данных.
Целостность данных является одним из самых важных требований, предъявляемых к базам данных.
Ограничения целостности в реляционной модели данных обеспечиваются, во-первых, исключением дублирования кортежей в отношениях, которые являются информационными образами конкретных объектов предметной области. Это условие называется требованием целостности сущностей. Во-вторых, обеспечиваются целостность по ссылкам. Это требование заключается в следующем: либо для каждого значения внешнего ключа, появляющегося в ссылающемся отношении, в отношении, на которое ведет ссылка (то есть в том, где соответствующий атрибут является первичным ключом) должен быть кортеж с тем же значением первичного ключа, либо значение внешнего ключа в первом отношении должно быть полностью неопределенным (ни на что не указывать).
СУБД не допускает появления некорректных значений внешнего ключа при обновлении ссылающегося отношения. При удалении же кортежа, на который ведет ссылка, возможны три подхода:
- запрет такого удаления;
- изменение значений внешнего ключа во всех ссылающихся кортежах на неопределенное;
- каскадное удаление, когда при удалении кортежа из отношения, на который ведется ссылка, из ссылающегося отношения автоматически удаляются все ссылающиеся кортежи.
Целостность реляционной модели данных определяется двумя общими правилами.
Целостность по сущностям. Не допускается, чтобы какой-либо атрибут, участвующий в первичном ключе базового отношения, принимал неопределенные значения. Базовым отношением называют независимое именованное отношение. Мотивировка этого правила определяется тем, что базовые отношения соответствуют сущностям в реальном мире, а следовательно, отличимы, т.е. имеют уникальную идентификацию, В реальной же модели функцию уникальной идентификации выполняют первичные ключи, и, таким образом, ситуация, когда первичный ключ принимает неопределенное значение, является противоречивой и говорит о том, что некоторая сущность не обладает индивидуальностью, а значит, не существует. Отсюда и название - целостность по сущностям.
Целостность по ссылкам. Каждый атрибут принимает лишь допустимые значения, принадлежащие тому домену, в котором атрибут определен. Ограничения целостности доменов обеспечивают проверку значения не только на принадлежность допустимому диапазону или списку допустимых значений, но и на смысл значений.
Над реляционными таблицами возможны следующие операции:
- объединение таблиц с одинаковой структурой. Результат – общая таблица: сначала первая, затем вторая (конкатенация);
- пересечение таблиц с одинаковой структурой. Результат – выбираются те записи, которые находятся в обеих таблицах;
- вычитание таблиц с одинаковой структурой. Результат – выбираются те записи, которых нет в вычитаемом;
- выборка (горизонтальное подмножество). Результат – выбираются записи, отвечающие определенным условиям;
- проекция (вертикальное подмножество). Результат – отношение, содержащее часть полей из исходных таблиц;
- декартово произведение двух таблиц Записи результирующей таблицы получаются путем объединения каждой записи первой таблицы с каждой записью другой таблицы.
Реляционные таблицы могут быть связаны друг с другом, следовательно, данные могут извлекаться одновременно из нескольких таблиц. Таблицы связываются между собой для того, чтобы, в конечном счете, уменьшить объем БД. Связь каждой пары таблиц обеспечивается при наличии в них одинаковых столбцов.
Существуют следующие типы информационных связей:
- один к одному;
- один ко многим;
- многие ко многим.
Связь один к одному предполагает, что одному атрибуту первой таблицы соответствует только один атрибут второй и таблицы наоборот.
Связь один ко многим предполагает, что одному атрибуту первой таблицы соответствует несколько атрибутов второй и таблицы.
Связь многие ко многим предполагает, что одному атрибуту первой таблицы соответствует несколько атрибутов второй таблицы и наоборот.