Логические связи в реляционной модели, реляционная БД

Нормализация данных

Важным требованием, предъявляемым к реляционным таблицам, является нормализация данных, представленных таблицей. Любая реляционная таблица должна отвечать как минимум требованию первичной нормализации. Первично нормализованная таблица содержит строки, в которых для каждого атрибута может быть только одно значение. Это соответствует обязательному требованию недопустимости множественных и повторяющихся структур данных в реляционной модели.

Таблица c ненормализованными данными может быть преобразована в несколько нормализованных таблиц-отношений.

Существует несколько нормальных форм реляционной модели, которые вводят ограничения и позволяют минимизировать дублирование данных, обеспечить поддержание целостности и однократность ввода данных:

§ при первой нормальной форме все атрибуты отношения должны быть простыми;

§ при второй нормальной форме все атрибуты отношения являются простыми, и каждый неключевой атрибут функционально-полно зависит от ключа. Полная функциональная зависимость неключевого атрибута означает, что ключ однозначно определяет неключевой атрибут, то есть одному значению ключа соответствует одно значение неключевого атрибута. Если ключ составной, то подобная зависимость должна выполняться на уровне всего ключа, а не какой-либо его части.

§ при третьей нормальной форме все атрибуты отношения являются простыми, и каждый неключевой атрибут функционально-полно зависит от ключа, причем не транзитивно.

Существуют и более высокие формы нормализации, которые не имеют большого практического значения. Заметим, если реляционные таблицы БД находятся в первой нормальной форме, при этом еще не будут выполняться требования по отсутствию дублирования данных.

Логические связи. Для логической связи таблицы-отношения R1 с подчиненной таблицей-отношением R2 последняя должна содержать внешний ключ – по составу атрибутов одинаковый с уникальным (первичным) ключом главной таблицы-отношения R1.

Внешним ключом таблицы-отношения (подчиненной в связи) может быть либо часть первичного ключа этой таблицы, либо вообще не ключевой атрибут. Внешний ключ в подчиненной таблице фактически всегда может выполнять роль вторичного ключа этой таблицы. Такие одинаково определенные атрибуты в разных отношениях являются средством логической связи между строками (записями) разных таблиц и играют роль ключа связи.

Реляционная база данных. Совокупность конкретных нормализованных реляционных таблиц, логически взаимосвязанных и представляющих данные некоторой предметной области, образует реляционную базу данных этой предметной области. В результате разработки БД должен быть определен состав логически взаимосвязанных реляционных таблиц и определен состав атрибутов каждой таблицы- отношения.

Нормализация данных. Для получения базы данных, отвечающей ранее рассмотренным требованиям, состав атрибутов должен отвечать требованиям нормализации. Нормализация таблиц может быть обеспечена на этапе логического проектирования БД в процессе разработки информационно-логической модели.

Реляционная база нормализованных данных может быть наделена свойствами поддержания целостности.

Целостность базы данных – это свойство базы, при построении которой выполнен набор определенных правил, которые устанавливают допустимость типов и значений данных, отсутствие дублирования описательных данных в разных таблицах, обязательность значений ключевых атрибутов в разных таблицах базы, а также корректность связей между таблицами. Ссылочной целостностью считается требование обязательного наличия связанной записи (строки) главной таблицы для каждой строки подчиненной таблицы. Таким образом, внешнему значению ключа связи подчиненной таблицы всегда должна найтись запись с таким же значением первичного ключа в главной таблице. Соответственно в БД, в которой поддерживается связная целостность, не может быть введена в подчиненную таблицу запись, для которой нет связываемой с ней записи в главной таблице.

Описание логической организации реляционной БД должно определять ее структуру. Оно включает определение состава таблиц-отношений и описание структуры каждого отношения. Описание структуры каждого отношения (реляционной таблицы) должно содержать уникальное в БД имя таблицы-отношения; состав и последовательность атрибутов отношения; задание уникальных (внутри отношения) имен атрибутов; определение типа и размера данного для каждого атрибута. Кроме того, для каждого отношения должен быть указан первичный ключ (простой или составной).

Для отношений, между которыми имеются логические связи, должны быть определены ключи связи, т.е. внешние ключив подчиненных таблицах.

На рис.5 приведен пример структуры базы данных, содержащей информацию о договорах при использовании реляционной модели. Такая же информация представлена на рис.1, но при использовании иерархической записи.

Как видно из сопоставления этих примеров, при иерархической организации данных имело место дублирование данных об одних и тех же заказчиках и об одинаковых изделиях в разных договорах.

В таблицах этой реляционной базы данных содержатся без повторения атрибуты соответствующих объектов: ДОГОВОР (номер, дата, код заказчика, сумма по договору); ИЗДЕЛИЕ (код, наименование, ед. измерения, цена); ЗАКАЗЧИК (код, наименование, адрес, банк); ЗАКАЗ (номер договора, код изделия, минимальная партия, месяц, плановое количество, сумма поставки). На связях между таблицами указаны внешние ключи. Операции обработки данных реляционной модели

Операции обработки данных реляционной модели включают операции над строками (кортежами) таблиц (отношений) и операции над отношениями, осуществляющие обработку данных нескольких отношений.

 

Рис.5. Пример структуры базы данных, содержащей информацию о договорах, при использовании реляционной модели.

Операциями, выполняемыми на уровне строк отношений, являются включение, удаление, обновление. При операции включения в таблицу добавляется новая строка (кортеж). Для выполнения операции включения требуется задать имя таблицы и задать значения атрибутов новой строки (значение первичного ключа задается обязательно). При операции удаления из таблицы удаляется строка. Для выполнения этой операции требуется задать имя таблицы и задать значение первичного ключа удаляемой строки. Для удаления группы строк надо задать значение вторичного ключа. При обновлении осуществляетсяизменение значений атрибутов в строках. Для обновления требуется задать имя таблицы, значение первичного ключа для идентификации обновляемой строки, а также задать имена атрибутов и их новые значения.

Операции над отношениями. Операторы реляционного языка обрабатывают таблицу-отношение как единый объект. При этом результатом обработки является всегда новая таблица-отношение, которая также может быть обработана. Основными операциями над отношениями реляционной модели данных являются как традиционные операции над множествами – объединение, пересечение, разность (вычитание), декартово произведение, так и специальные – выбор, проекция, соединение и деление множеств. Совокупность этих операций образует полную алгебру отношений.

Рассмотрим основные операции языка реляционной алгебры над отношениями.