Структуры данных реляционной модели

Е.Ф.Кодд в 1970 г. сформулировал концепцию реляционной модели баз данных. Реляционная модель базы данных является удобной и наиболее привычной формой представления данных в виде таблицы. В математических дисциплинах таблице соответствует термин «отношение»(relation). Отсюда и произошло название модели – реляционная.

Одним из основных преимуществ реляционной модели является ее однородность. Все данные рассматриваются как хранимые в таблицах, в которых каждая строка имеет один и тот же формат. Каждая строка в таблице представляет некоторый объект реального мира или соотношение между объектами.

Реляционная модель имеет два главных свойства:

1) базовые порции данных представляют собой отношения (relations);

2) операции над таблицами затрагивают только соотношения.

Модель предъявляет к таблицам следующие требования:

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

2. Данные в одном столбце должны быть одного типа.

3. Каждый столбец должен быть уникальным (недопустимы дублирования столбцов).

4. Столбцы размещаются в произвольном порядке.

5. Строки размещаются в таблице также в произвольном порядке.

6. Столбцы имеют уникальные наименования.

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

Структурными составляющими таблицы являются записи и поля.

  Поле 1 Поле 2 Поле 3
Запись 1        
Запись 2        
Запись 3        
       

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

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

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

Для строчного представления структуры таблицы применяется следующая форма:

Имя_таблицы (ИМЯПОЛЯ_1, ИМЯ_ПОЛЯ_2,..., ИМЯ_ПОЛЯ_М)

Подчеркиваются имена полей, составляющие главный ключ.

Существуют два фундаментальных правила для реляционных баз данных: правило целостности объектов и правило ссылочной целостности. Основными понятиями реляционных баз данных являются: «первичный ключ», «внешний ключ», «тип данных», «домен», «схема отношения», «схема БД», «кортеж», «отношение».

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

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

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

Понятие «домена» более специфично для баз данных. В самом общем виде домен определяется заданием некоторого базового типа данных, к которому относятся элементы домена, и произвольного логического выражения, применяемого к элементу типа данных. Если вычисление этого логического выражения дает результат «истина», то элемент данных является элементом домена. Наиболее правильной интуитивной трактовкой понятия «домена» является понимание домена как допустимого потенциального множества значений данного поля.

Схема отношений – это именованное множество пар (имя атрибута, имя домена (или типа, если понятие домена не поддерживается)). Степень или «арность» схемы отношения – мощность этого множества.

Схема БД (в структурном смысле) – это набор именованных схем отношений.

Кортеж, соответствующий данной схеме отношения, - это множество пар «имя атрибута, значение», которое содержит одно вхождение каждого имени атрибута, принадлежащего схеме отношения. «Значение» является допустимым значением домена данного атрибута (или типа данных, степень или «арность» кортежа, т.е. число элементов в нем, совпадает с «арностью» соответствующей схемы отношения. Попросту говоря, кортеж – это набор именованных значений заданного типа.

Отношение – это множество кортежей, соответствующих одной схеме отношения. Иногда, чтобы не путаться, говорят «отношение-схема» и «отношение-экземпляр». Иногда схему отношения называют заголовком отношения, а отношение как набор кортежей – телом отношения.

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

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

Особый тип поля – денежный. Денежные суммы можно хранить и в числовом поле, но в денежном формате с ними удобнее работать. В этом случае компьютер изображает числа вместе с денежными единицами. В современных базах данных можно хранить не только числа и буквы, но и картинки, музыкальные клипы и видеозаписи. Поле для таких объектов называется полем объекта OLE. Если нужно вставить в поле длинный текст (более 256 символов), для этого служит поле типа МЕМО. В нем можно хранить до 65535 символов. Особенность поля МЕМО состоит в том, что реально эти данные хранятся не в поле, а в другом месте, а в поле хранится только указатель на то, где расположен текст. Поле Счетчик является обычным числовым полем, но оно имеет свойство автоматического наращивания. Если в базе есть такое поле, то при вводе новой записи в него автоматически вводится число, на единицу большее, чем значение того же поля в предыдущей записи. Это удобно для нумерации записей.

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

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

§ между полями таблицы не должно быть нежелательных функциональных зависимостей;

§ группировка полей в таблицах должна обеспечивать минимальное дублирование данных, эффективный (без трудностей) поиск, обработку и обновление данных.

Определено несколько основных нормальных форм (НФ), каждая из которых снимает определенные зависимости между полями и устраняет определенные трудности обработки данных:

I. Говорят, что отношение находится в первой нормальной форме, если все его атрибуты являются простыми.

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

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

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

Для приведения таблицы к 1НФ (повторение одних и тех же самых полей нежелательно)необходимо выполнение следующих правил:

1. Каждое поле должно быть атомарным, т.е. содержать единственный элемент данных.

2. Поля в таблице не должны повторяться.

Приведение таблицы ко 2НФ (каждое поле должно зависеть от единого первичного ключа) требует соответствия следующим правилам:

1. Каждая таблица содержит данные об одном предмете (объекте).

2. Каждая таблица должна содержать поле первичного ключа, который является уникальным идентификатором для каждой записи (строки).

3. Остальные (неключевые) поля должны относиться к первичному ключу, т.е. зависеть от него.

Таблицы во 2НФ могут требовать дальнейших преобразований в 3НФ (значение поля должно сохраняться неизменным, даже если содержание других полей изменится), которая освобождает от:

· дублирования (избыточности) данных;

· аномалий выполнения операций добавления, удаления и обновления (изменения) данных.

Правило: таблица находится в 3НФ, если она находится во 2НФ и в ней отсутствуют т.н. транзитивные зависимости неключевых полей от первичного ключа.

Иначе правило для 3НФ звучит так: все неключевые поля должны быть взаимонезависимыми, т.е. изменение неключевого поля не должно влечь за собой изменения другого неключевого поля.

3. ОПЕРАЦИИ С ДАННЫМИ В РЕЛЯЦИОННОЙ МОДЕЛИ

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

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

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

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

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

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

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

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

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

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

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

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

Рассмотренные операции в той или иной мере реализуются в средствах систем управления базами данных, обеспечивающих обработку реляционных таблиц. К таким средствам относятся средства запросов и другие языковые конструкции. Развитие реляционного подхода привело к созданию реляционных языков. Язык SQL, реализованный в большинстве системах управления базами данных, является более чем реляционно-полным, так как кроме операций реляционной алгебры он содержит полный набор операторов над строками, а также реализует арифметические операции и операции сравнения.

Реляционные модели имеют ряд достоинств: простота представления данных реляционной модели благодаря табличной форме, минимальная избыточность данных при нормализации отношений. В реляционных моделях обеспечивается: независимость приложений пользователя от данных, допускающая включение или удаление отношений, изменение атрибутного состава отношений. Универсальность процедур обработки данных является основой типовых средств в различных реляционных системах управления базами данных. К недостаткам реляционной модели можно отнести то, что нормализация данных реляционной модели приводит к значительной фрагментации данных, в то время как в большинстве задач необходимо объединение фрагментированных данных.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: