Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
321 / Базы данных.doc
Скачиваний:
258
Добавлен:
11.04.2015
Размер:
315.9 Кб
Скачать

Тема 7. Реляционная модель бд. Основные понятия

Лекция: Реляционные таблицы. Отношения и таблицы. Правила отношений между сущностями. Определение ключей отношения. Понятие целостности. Классификация ограничений целостности. Способы задания ограничений целостности в современных СУБД

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

Основоположником теории считается сотрудник фирмы IBM доктор Эдгар Кодд.

Теория реляционных баз данных имеет под собой мощную математическую основу. Разработанная Э. Коддом теоретическая база стала основой для разработки теории проектирования баз данных.

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

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

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

В один домен могут входить значения из нескольких колонок, объединенных, помимо одинакового типа данных, еще и логически.

Каждый элемент данных в отношении может быть определен с указанием его адреса в формате A[i,j], где А — элемент данных, i — строка отношения, j — номер атрибута отношения.

Количество атрибутов в отношении определяет его порядок.

Множество значений A[i,j] при постоянном i и всех возможных j образуют кортеж. Их количество определяет его мощность, или кардинальное число. Мощность отношения, в отличие от порядка отношения, может со временем меняться.

Некоторое множество атрибутов образует ключ для данного отношения.

Множество атрибутов отношения являются возможным ключом этого отношения тогда и только тогда, когда удовлетворяются два независимых от времени условия:

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

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

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

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

Пусть R – некоторое отношение. Тогда потенциальный ключ К для R – это подмножество множества атрибутов R, обладающее следующими свойствами:

-свойством уникальности. Нет двух различных кортежей (записей) в отношении R с одинаковым значением К;

-свойством неизбыточности. Никакое из подмножеств К не обладает свойством уникальности.

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

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

Дадим определение внешнего ключа.

Пусть R2 – базовое отношение. Тогда внешний ключ, скажем FK в отношении R2 – это подмножество множества атрибутов R2, такое что:

-существует базовое отношениеR1 с потенциальным ключом CK;

-каждое значение FK в текущем значении R2, всегда совпадает со значением СК некоторого кортежа в текущем значении R1.

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

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

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

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

-установление (Relation). При удалении строки из главной таблицы соответствующий внешний ключ в зависимой таблице устанавливается в неопределенное значение (NULL). При изменении данных первичного ключа внешний ключ устанавливается в неопределенное значение (NULL).

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

Требования к проектированию реляционной базы данных в общем виде можно свести к нескольким правилам:

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

  • каждая таблица состоит из фиксированного числа колонок и значений. В одной колонке строки не может быть сохранено более одного значения;

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

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

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

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

Описание колонок, которое составляет разработчик, принято называть макетом таблицы.

Наиболее важными понятиями являются:

-отношение;

-кортеж;

-кардинальное число;

-атрибут;

-степень;

-домен;

-первичный ключ.

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

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

Рассмотрим возможные типы отношения между таблицами. Если каждой строке в первой таблице в каждый момент времени соответствует ноль или одна строка во второй таблицы и наоборот, то между таблицами установлено отношение «один-к-одному» (1 : 1).

Если каждой строке в первой таблице в каждый момент времени соответствует ноль, одна или несколько строк строка во второй таблицы, но строка второй таблицы связана с единственной строкой первой таблицы, то между ними установлено отношение «один-ко-многим» (1 : М).

Если каждой строке в первой таблице соответствует ноль, одна или несколько строк во второй таблице и наоборот, то между ними установлено отношение «многое-ко-многим» (М : М).

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

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

Реляционная система управления базами данных – это такая система, в которой выполняется как минимум два условия:

  • данные воспринимаются пользователем как таблицы (и никак иначе);

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

Операция SELECT предназначена для извлечения определенных строк из таблицы.

Операция PROJECT предназначена для извлечения определенных столбцов из таблицы.

Операция JOIN предназначена для соединения двух таблиц на основе общих значений в общих столбцах.

Следует выделить следующие особенности:

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

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

Например. Если служащий S1 работает в отделе D1, то эта информация представлена не указателем, а появлением значения D1 в строке E1 таблицы Служащих. Тем самым таблица Служащих связана с таблицей Отделов значением D1;

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

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

Реляционная модель связана с тремя аспектами данных: структурой, целостностью и обработкой данных.

Структура – это объекты данных, объектами в основном являются таблицы. Целостность обеспечивается внешними и первичными ключами, а операторы – это SELECT, PROJECT, JOIN и т.д.

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

  • каждая строка таблицы должна включать уникальные значения одного из столбцов, называемого первичным ключом;

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

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

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

Базовые таблицы должны быть именованными. Большинство производных таблиц, наоборот, неименованные.

Однако реляционные системы обычно поддерживают один вид производных таблиц, называемых представлением, которое имеет имя.

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

Различия между базовой таблицей и представлением часто характеризуется так:

  • базовые таблицы «реально существуют» в том смысле, что они представляют данные, которые действительно хранятся в базе данных;

  • представления, наоборот, «реально не существуют», а просто предоставляют различные способы просмотра «реальных» данных.

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

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

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