АЧМ - Алгоритмы и Численные Методы
Поиск  
АЧМ - Алгоритмы и Численные Методы  


Лекция 4

Реляционный подход к организации БД

Введение

Кодд (Codd, 1970) “Реляционная модель данных для больших совместно используемых банков данных”.

В настоящее время реляционный подход к организации БД является наиболее распространенным.

Второе поколение СУБД.

Реляционная модель данных

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

В структурной части модели фиксируется, что единственной структурой данных, используемой в реляционных БД, является нормализованное n-арное отношение.

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

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

Базовые понятия реляционных баз данных

В основе реляционной модели данных лежит понятие отношения. Таблица - физическое представление отношения. БД - набор таблиц.

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

Отношение. Таблица. Файл.

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

Атрибут. Столбец. Поле.

Степень отношения - количество атрибутов отношения.

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

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

Кортеж. Строка. Запись.

Компонента - текущее значение атрибута.

Кардинальность отношения - количество кортежей отношения.

Схема отношения (реляционная схема) - это именованное множество пар {имя атрибута, имя домена (или типа, если понятие домена не поддерживается)}. Степень или "арность" схемы отношения - мощность этого множества. Схема БД (в структурном смысле) - это набор именованных схем отношений.

Отношение - это множество строк, соответствующих одной схеме отношения.

Математическая база

Декартово произведение. Отношение. Домен = множество.

Фундаментальные свойства отношений

- Уникальное имя отношения

- Атомарность значений атрибутов.

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

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

Название фирмы Название товара

Нормализованное отношение - отношение, удовлетворяющее нормальной форме.

Нормальная форма - набор требований к данным, установленного в некоторой организации.

Реляционная база данных - набор нормализованных отношений.

- Уникальность имени атрибута отношения

- Однодоменность атрибута

- Отсутствие упорядоченности атрибутов

Атрибуты отношений не упорядочены, поскольку по определению схема отношения есть множество пар {имя атрибута, имя домена}.

- Отсутствие кортежей-дубликатов

То свойство, что отношения не содержат кортежей-дубликатов, следует из определения отношения как множества кортежей. В классической теории множеств по определению каждое множество состоит из различных элементов. - Отсутствие упорядоченности кортежей.

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

Ключи

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

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

Потенциальные ключи (свойства): уникальность и неприводимость.

Составной ключ.

Потенциальные ключи: первичные ключи и альтернативные ключи.

Внешние ключи (наличие связи между кортежами отношений).

Целостность

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

Множество допустимых значений атрибута определяется доменом атрибута. Определитель NULL.

Целостность сущностей - в базовом отношении ни один атрибут первичного ключа не может содержать отсутствующее значение, обозначаемое определителем NULL.

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

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

Пользовательские ограничения целостности - дополнительные правила поддержки целостности данных, определяемые пользователями или АБД.

Преимущества и недостатки реляционного подхода

Преимущества

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

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

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

Недостатки

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

- невозможность адекватного отражения семантики предметной области.

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

Реляционная алгебра

Совместимость по операции

- Объединение: бинарная операция, теоретико-множественная операция;

- Пересечение: бинарная операция, теоретико-множественная операция;

- Разность: бинарная операция, теоретико-множественная операция;

- Расширенное декартово произведение (попарная конкатенация кортежей): бинарная операция, теоретико-множественная операция;

- [Горизонтальная] Выборка (подмножество кортежей): аналог подмножества;

- Проекция (выбор по атрибутам) или Вертикальная выборка;

- Соединение (несколько отношений с одинаковыми атрибутами)

- тета-соединение: подмножество кортежей декартова произведения двух отношений, включающий только те элементы декартова произведения, которые удовлетворяют предикату (>, <, =, <>, >=, <=).

- соединение по эквивалентности (эквисоединение): тета-соединение =.

- естественное соединение: декартово произведение двух отношений с одним общим атрибутом (по сути дела – эквисоединение с последующей проекцией).

- внешнее соединение:

- левое внешнее соединение

- правое внешнее соединение

- полное внешнее соединение

- полусоединение – после соединения удаляются все атрибуты одного из отношений-операндов;

- Расширение (добавление атрибутов) – необходимо знать, что добавленные атрибуты должны иметь свойство NULLABLE, поскольку задать значения этих атрибутов для уже существующих кортежей трудно или попросту невозможно;

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

- Присваивание

- Переименование атрибутов

Вложенные операции.

Реляционное исчисление

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

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

Кортежные переменные и правильно построенные формулы

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

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

Для определения кортежной переменной будем использовать оператор RANGE. Например, для того, чтобы определить переменную СОТРУДНИК, областью определения которой является отношение СОТРУДНИКИ, нужно употребить следующую конструкцию:

RANGE СОТРУДНИК IS СОТРУДНИКИ

Из этого определения следует, что в любой момент времени переменная СОТРУДНИК представляет некоторый кортеж отношения СОТРУДНИКИ. При использовании кортежных переменных в формулах можно ссылаться на значение атрибута переменной (это аналогично тому, как, например, при программировании на языке С можно сослаться на значение поля структурной переменной). Например, для того, чтобы сослаться на значение атрибута СОТР_ИМЯ переменной СОТРУДНИК, нужно употребить конструкцию СОТРУДНИК.СОТР_ИМЯ.

Правильно построенные формулы (WFF - Well-Formed Formula) служат для выражения условий, накладываемых на кортежные переменные. Основой WFF являются простые сравнения (comparison), представляющие собой операции сравнения скалярных значений (значений атрибутов переменных или литерально заданных констант). Например, конструкция "СОТРУДНИК.СОТР_НОМ = 140" является простым сравнением. По определению, простое сравнение является WFF, а WFF, заключенная в круглые скобки, является простым сравнением.

Более сложные варианты WFF строятся с помощью логических связок NOT, AND, OR и IF ... THEN. Так, если form - WFF, а comp - простое сравнение, то NOT form, comp AND form, comp OR form и IF comp THEN form являются WFF.

Наконец, допускается построение WFF с помощью кванторов. Если form - это WFF, в которой участвует переменная var, то конструкции EXISTS var (form) и FORALL var (form) представляют wff.

Переменные, входящие в WFF, могут быть свободными или связанными. Все переменные, входящие в WFF, при построении которой не использовались кванторы, являются свободными. Фактически, это означает, что если для какого-то набора значений свободных кортежных переменных при вычислении WFF получено значение true, то эти значения кортежных переменных могут входить в результирующее отношение. Если же имя переменной использовано сразу после квантора при построении WFF вида EXISTS var (form) или FORALL var (form), то в этой WFF и во всех WFF, построенных с ее участием, var - это связанная переменная. Это означает, что такая переменная не видна за пределами минимальной WFF, связавшей эту переменную. При вычислении значения такой WFF используется не одно значение связанной переменной, а вся ее область определения.

Пусть СОТР1 и СОТР2 - две кортежные переменные, определенные на отношении СОТРУДНИКИ. Тогда, WFF EXISTS СОТР2 (СОТР1.СОТР_ЗАРП > СОТР2.СОТР_ЗАРП) для текущего кортежа переменной СОТР1 принимает значение true в том и только в том случае, если во всем отношении СОТРУДНИКИ найдется кортеж (связанный с переменной СОТР2) такой, что значение его атрибута СОТР_ЗАРП удовлетворяет внутреннему условию сравнения. WFF FORALL СОТР2 (СОТР1.СОТР_ЗАРП > СОТР2.СОТР_ЗАРП) для текущего кортежа переменной СОТР1 принимает значение true в том и только в том случае, если для всех кортежей отношения СОТРУДНИКИ (связанных с переменной СОТР2) значения атрибута СОТР_ЗАРП удовлетворяют условию сравнения.

На самом деле, правильнее говорить не о свободных и связанных переменных, а о свободных и связанных вхождениях переменных. Легко видеть, что если переменная var является связанной в WFF form, то во всех WFF, включающих данную, может использоваться имя переменной var, которая может быть свободной или связанной, но в любом случае не имеет никакого отношения к вхождению переменной var в WFF form. Вот пример:

EXISTS СОТР2 (СОТР1.СОТР_ОТД_НОМ = СОТР2.СОТР_ОТД_НОМ) AND

FORALL СОТР2 (СОТР1.СОТР_ЗАРП > СОТР2.СОТР_ЗАРП)

Здесь мы имеем два связанных вхождения переменной СОТР2 с совершенно разным смыслом.

Целевые списки и выражения реляционного исчисления

Итак, WFF обеспечивают средства формулировки условия выборки из отношений БД. Чтобы можно было использовать исчисление для реальной работы с БД, требуется еще один компонент, который определяет набор и имена столбцов результирующего отношения. Этот компонент называется целевым списком (target_list).

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

* var.attr, где var - имя свободной переменной соответствующей WFF, а attr - имя атрибута отношения, на котором определена переменная var;

* var, что эквивалентно наличию подсписка var.attr1, var.attr2, ..., var.attrn, где attr1, attr2, ..., attrn включает имена всех атрибутов определяющего отношения;

* new_name = var.attr; new_name - новое имя соответствующего атрибута результирующего отношения.

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

Выражением реляционного исчисления кортежей называется конструкция вида target_list WHERE wff. Значением выражения является отношение, тело которого определяется WFF, а набор атрибутов и их имена - целевым списком.

Представления

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

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

Представления:

- разграничение данных для отображения

- удобство способа доступа к данным

- упрощение сложных операций с базовыми отношениями


KDSW Logo  © Copyright 2005 KDSW Systems [ Kamaev Dmitry SoftWorks ]