Вы находитесь на странице: 1из 10

Общая характеристика реляционного подхода

Цель: сформировать знание основных принципов и понятий реляционной


модели данных
Реляционная модель данных
Модель данных является моделью логического уровня и представляет
собой отображение логических связей между элементами данных
безотносительно к их содержанию. Эта модель строится в терминах
информационных единиц, допустимых в конкретной системе управления
базами данных, в среде которой мы проектируем базу данных.
Модель данных включает в себя структуру данных, множество
операций над данными и ограничения целостности. Можно назвать четыре
основных модели данных: сетевая, иерархическая, реляционная и объектная.
В основе их классификации лежит структура данных.
Далее рассмотрена наиболее популярная модель данных –
реляционная, основанная на некоторых положениях математики (в основном
теории множеств и логике предикатов). Название модели произошло от
английского слова «relation», что в переводе означает отношение, именно
математическое отношение лежит в основе структуры реляционной модели.
Принципы реляционной модели были заложены в 1969–70-х годах
американским ученым Е. Ф. Коддом (E. F. Codd), в то время работавшим в
корпорации IBM. За эту модель Кодд был удостоен престижной премии
Тьюринга в области теоретических основ вычислительной техники. Наиболее
распространенная трактовка реляционной модели данных принадлежит К.
Дейту. Согласно К. Дейту, реляционная модель состоит из трех частей:
– структурной части;
– целостной части;
– манипуляционной части.
Структурная часть описывает, какие объекты рассматриваются
реляционной моделью. Постулируется, что единственной структурой
данных, используемой в реляционной модели, являются нормализованные
n-арные отношения.
Целостная часть описывает ограничения специального вида, которые
должны выполняться для любых отношений в любых реляционных базах
данных. Это целостность сущностей и целостность внешних ключей.
Целостности сущностей состоит в том, что любой кортеж любого
отношения отличим от любого другого кортежа этого отношения, т.е. любое
отношение должно обладать первичным ключом. Внешний ключ –
первичный ключ одного отношения, размещённый в качестве атрибута (ов) в
другом отношении. Значения внешнего ключа однозначно характеризуют
сущности, представленные кортежами некоторого другого отношения (т.е.
задаёт значения их первичного ключа). Говорят, что отношение, в котором
определен внешний ключ, ссылается на соответствующее отношение, в
котором такой же атрибут является первичным ключом.
2
Целостность внешних ключей или требование внешнего ключа
состоит в том, что для каждого значения внешнего ключа, появляющегося в
ссылающемся отношении, в отношении, на которое ведет ссылка, должен
найтись кортеж с таким же значением первичного ключа, либо значение
внешнего ключа должно быть неопределенным (т.е. ни на что не указывать).
Для соблюдения целостности сущности достаточно гарантировать
отсутствие в любом отношении кортежей с одним и тем же значением
первичного ключа. С целостностью по ссылкам дела обстоят несколько более
сложно.
Понятно, что при обновлении ссылающегося отношения (вставке
новых кортежей или модификации значения внешнего ключа в
существующих кортежах) достаточно следить за тем, чтобы не появлялись
некорректные значения внешнего ключа. Возникает вопрос: как быть при
удалении кортежа из отношения, на которое ведет ссылка?
Здесь существуют три подхода, каждый из которых поддерживает
целостность по ссылкам. Первый подход заключается в том, что запрещается
производить удаление кортежа, на который существуют ссылки (т.е. сначала
нужно либо удалить ссылающиеся кортежи, либо соответствующим образом
изменить значения их внешнего ключа). При втором подходе при удалении
кортежа, на который имеются ссылки, во всех ссылающихся кортежах
значение внешнего ключа автоматически становится неопределенным.
Наконец, третий подход (каскадное удаление) состоит в том, что при
удалении кортежа из отношения, на которое ведет ссылка, из ссылающегося
отношения автоматически удаляются все ссылающиеся кортежи.
Манипуляционная часть описывает два эквивалентных способа
манипулирования реляционными данными – реляционную алгебру и
реляционное исчисление.
Далее рассмотрена структурная часть реляционной модели.

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


Основными понятиями реляционных баз данных являются тип данных,
домен, атрибут, кортеж, первичный ключ и отношение.
Тип данных
Понятие тип данных в реляционной модели данных полностью
соответствует понятию типа данных в языках программирования. Обычно в
современных реляционных БД допускается хранение символьных, числовых
данных, битовых строк, специализированных числовых данных (таких как
"деньги"), а также специальных данных (дата, время, временной интервал).
Реляционная модель требует, чтобы типы используемых данных
были простыми.
Для уточнения этого утверждения далее описано, какие вообще типы
данных обычно рассматриваются в программировании. Как правило, типы
данных делятся на три группы:
– простые типы данных;
– структурированные типы данных;
3
– ссылочные типы данных.
Простые, или атомарные, типы данных не обладают внутренней
структурой. Данные такого типа называют скалярами. К простым типам
данных относятся следующие типы: логический; строковый; численный; и
др. Различные языки программирования могут расширять и уточнять этот
список, добавляя такие типы как: целый, вещественный, дата, время,
денежный, перечислимый, интервальный, счетчик, мемо и другие. Конечно,
понятие атомарности – относительно. Так, строковый тип данных можно
рассматривать как одномерный массив символов, а целый тип данных – как
набор битов. Важно лишь то, что при переходе на такой низкий уровень
теряется семантика (смысл) данных. Если строку, выражающую, например,
фамилию сотрудника, разложить в массив символов, то при этом теряется
смысл такой строки как единого целого.
Структурированные типы данных предназначены для задания сложных
структур данных. Структурированные типы данных конструируются из
составляющих элементов, называемых компонентами, которые, в свою
очередь, могут обладать структурой. В качестве структурированных типов
данных можно привести следующие типы данных: массивы, записи
(структуры).
Общим для структурированных типов данных является то, что они
имеют внутреннюю структуру, используемую на том же уровне абстракции,
что и сами типы данных. Это значит, что при работе с массивами или
записями можно манипулировать массивом или записью как с единым целым
(создавать, удалять, копировать целые массивы или записи), так и
поэлементно. Для структурированных типов данных есть специальные
функции – конструкторы типов, позволяющие создавать массивы или записи
из элементов более простых типов.
Работая же с простыми типами данных, например с числовыми, мы
манипулируем ими как неделимыми целыми объектами. Чтобы "увидеть",
что числовой тип данных на самом деле сложен (является набором битов),
нужно перейти на более низкий уровень абстракции.
Ссылочный тип данных (указатели) предназначен для обеспечения
возможности указания на другие данные. Указатели характерны для языков
процедурного типа, в которых есть понятие области памяти для хранения
данных. Ссылочный тип данных предназначен для обработки сложных
изменяющихся структур, например деревьев, графов, рекурсивных структур.
Собственно, для реляционной модели данных тип используемых
данных не важен. Требование, чтобы тип данных был простым, нужно
понимать так, что в реляционных операциях не должна учитываться
внутренняя структура данных. Конечно, должны быть описаны действия,
которые можно производить с данными как с единым целым, например,
данные числового типа можно складывать, для строк возможна операция
конкатенации и т.д.
С этой точки зрения, если рассматривать массив, например, как единое
целое и не использовать поэлементных операций, то массив можно считать
4
простым типом данных. Более того, можно создать свой, сколь угодно
сложных тип данных, описать возможные действия с этим типом данных, и,
если в операциях не требуется знание внутренней структуры данных, то
такой тип данных также будет простым с точки зрения реляционной теории.
Например, можно создать новый тип – комплексные числа как запись вида
z=(x,y), где x  , y   . Можно описать функции сложения, умножения,
вычитания и деления, и все действия с компонентами x и y выполнять только
внутри этих операций. Тогда, если в действиях с этим типом использовать
только описанные операции, то внутренняя структура не играет роли, и тип
данных извне выглядит как атомарный.
Именно так в некоторых пост реляционных СУБД реализована работа
со сколь угодно сложными типами данных, создаваемых пользователями.

Домен
В реляционной модели данных с понятием тип данных тесно связано
понятие домена, которое можно считать уточнением типа данных.
Домен – это семантическое понятие. Домен можно рассматривать как
подмножество значений некоторого типа данных имеющих определенный
смысл. Домен характеризуется следующими свойствами:
– домен имеет уникальное имя (в пределах базы данных);
– домен определен на некотором простом типе данных или на другом
домене;
– домен может иметь некоторое логическое условие, позволяющее
описать подмножество данных, допустимых для данного домена;
– домен несет определенную смысловую нагрузку.
Например, домен D, имеющий смысл "Возраст сотрудника" можно
описать как следующее подмножество множества натуральных чисел:
D  {n  N :(n  18 and n  60)}
D1  НомерСотрудника  {n  N :(n  0 and n  15)}
D2  Фамилия  {буквы русского алфавита : первая буква  ь, ъ, ы, й}
D3  Зарплата  {n  N :(n  1000000 and n  2500000)}
D4  НомерОтдела  {n  N :(n  1or n  2)}
В самом общем виде домен определяется заданием некоторого
базового типа данных, к которому относятся элементы домена, и
произвольного логического выражения, применяемого к элементу типа
данных. Если вычисление этого логического выражения дает результат
"истина", то элемент данных является элементом домена.
Если тип данных можно считать множеством всех возможных
значений данного типа, то домен напоминает подмножество в этом
множестве.
Отличие домена от понятия подмножества состоит именно в том,
что домен отражает семантику, определенную предметной областью.
Может быть несколько доменов, совпадающих как подмножества, но
несущие различный смысл. Например, домены "Вес детали" и "Имеющееся
5
количество" можно одинаково описать как множество неотрицательных
целых чисел, но смысл этих доменов будет различным, и это будут
различные домены.
Основное значение доменов состоит в том, что домены
ограничивают сравнения. Некорректно, с логической точки зрения,
сравнивать значения из различных доменов, даже если они имеют
одинаковый тип. В этом проявляется смысловое ограничение доменов.
Синтаксически правильный запрос "выдать список всех деталей, у которых
вес детали больше имеющегося количества" не соответствует смыслу
понятий "количество" и "вес".
В один домен могут входить множества значений, объединенных
помимо одинакового типа данных, еще и логически. Например, домен
может состоять из множества с датой поступления на работу и множества с
датой увольнения. Но в этот домен нельзя включить значения дат рождения,
так как дата поступления на работу и увольнения с работы не связана с датой
рождения.
Замечания:
1. Понятие домена помогает правильно моделировать предметную
область. При работе с реальной системой в принципе возможна ситуация
когда требуется ответить на запрос, приведенный выше. Система даст ответ,
но, вероятно, он будет бессмысленным.
2. Не все домены обладают логическим условием, ограничивающим
возможные значения домена. В таком случае множество возможных
значений домена совпадает с множеством возможных значений типа
данных.
3. Не всегда очевидно, как задать логическое условие, ограничивающее
возможные значения домена. Например, задан домен "Фамилия сотрудника".
Ясно, что строки, являющиеся фамилиями не должны начинаться с цифр,
служебных символов, с мягкого знака и т.д. Но вот является ли допустимой
фамилия "Ггггггыыыыы"? Почему бы нет? Очевидно, нет! Трудности такого
рода возникают потому, что смысл реальных явлений далеко не всегда
можно формально описать. Просто все люди, интуитивно понимают, что
такое фамилия, но никто не может дать такое формальное определение,
которое отличало бы фамилии от строк, фамилиями не являющимися. Выход
из этой ситуации простой – положиться на разум сотрудника, вводящего
фамилии в компьютер.

Атрибут
Атрибут отношения А есть пара вида
<Имя_атрибута : Имя_домена>.
Имена атрибутов должны быть уникальны в пределах отношения.
Часто имена атрибутов отношения совпадают с именами соответствующих
доменов.

Кортеж
6
Кортеж отношения представляет собой множество пар вида
<Имя_атрибута : Значение_атрибута>:
  A1 : Val1 ,  A2 : Val2 ,...,  An : Valn   ,
таких, что значение Vali атрибута Ai принадлежит домену Di .

Отношение
Фундаментальным понятием реляционной модели данных является
понятие отношения. Определение понятию отношение дано согласно книге
К. Дейта.
Отношение R, определенное на множестве доменов D1 , D2 ,..., Dn (не
обязательно различных), содержит две части: заголовок и тело.
Заголовок отношения содержит фиксированное количество атрибутов
отношения:
  A1 : D1 ,  A2 : D2 ,...,  An : Dn   .
Тело отношения содержит множество кортежей отношения.
Отношение обычно записывается в виде:
R   A1 : D1 ,  A2 : D2 ,...,  An : Dn   ,
или короче R  A1 , A2 ,..., An  , или просто R.

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

Число атрибутов в отношении называют степенью (или -арностью)


отношения. Мощность множества кортежей отношения называют
мощностью отношения.
7
Таким образом заголовок отношения описывает декартово
произведение доменов, на котором задано отношение. Заголовок статичен, он
не меняется во время работы с базой данных. Если в отношении изменены,
добавлены или удалены атрибуты, то в результате получим уже другое
отношение (пусть даже с прежним именем). Тело отношения представляет
собой набор кортежей, т.е. подмножество декартового произведения
доменов. Таким образом, тело отношения собственно и является отношением
в математическом смысле слова. Тело отношения может изменяться во время
работы с базой данных – кортежи могут изменяться, добавляться и удаляться.
Пример. Рассмотрим отношение Сотрудники заданное на доменах
НомерСотрудника, Фамилия, Зарплата, НомерОтдела. Так как все домены
различны, то имена атрибутов отношения удобно назвать так же, как и
соответствующие домены. Заголовок отношения имеет вид:
Сотрудники(НомерСотрудника, Фамилия, Зарплата, НомерОтдела)
Пусть в данный момент отношение содержит три кортежа:
(1, Иваненко, 1000000, 1)
(2, Петренко, 2000000, 2)
(3, Сидоренко, 1500000, 2) .
Такое отношение естественным образом представляется в виде
таблицы:
НомерСтрудника Фамилия Зарплата Номертдела
1 Иваненко 1000000 1
2 Петренко 2000000 2
3 Сидоренко 1500000 2
Реляционной базой данных называется набор отношений. Схемой
реляционной базы данных называется набор заголовков отношений,
входящих в базу данных.
Хотя любое отношение можно изобразить в виде таблицы, нужно четко
понимать, что отношения не являются таблицами. Это близкие, но не
совпадающие понятия. Различия между отношениями и таблицами будут
рассмотрены ниже.
Термины, которыми оперирует реляционная модель данных, имеют
соответствующие "табличные" синонимы:

Таблица 1 Соответствие реляционных и «табличных» терминов


Реляционный термин Соответствующий "табличный" термин
База данных Набор таблиц
Схема база данных Набор заголовков таблиц
Отношение Таблица
Заголовок отношения Заголовок таблицы
Тело отношения Тело таблицы
Атрибут отношения Наименование столбца таблицы
Кортеж отношения Строка таблицы
Степень (-арность) Количество столбцов таблицы
8
отношения
Мощность отношения Количество строк таблицы
Домены и типы данных Типы данных в ячейках таблицы
Одно или несколько наименований столбцов
Первичный ключ
таблицы

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


Далее рассмотрены основные свойства отношений, которые следуют из
приведенных ранее определений:
– в отношении нет одинаковых кортежей;
– кортежи не упорядочены (сверху вниз);
– атрибуты не упорядочены (слева направо);
– все значения атрибутов атомарные.
Отсутствие кортежей-дубликатов. То свойство, что отношения не
содержат кортежей-дубликатов, следует из определения отношения как
множества кортежей. В классической теории множеств по определению
каждое множество состоит из различных элементов.
Из этого свойства вытекает наличие у каждого отношения так
называемого первичного ключа – набора атрибутов, значения которых
однозначно определяют кортеж отношения. Для каждого отношения по
крайней мере полный набор его атрибутов обладает этим свойством. Однако
при формальном определении первичного ключа требуется обеспечение его
«минимальности», т.е. в набор атрибутов первичного ключа не должны
входить такие атрибуты, которые можно отбросить без ущерба для основного
свойства – однозначно определять кортеж. Понятие первичного ключа
является исключительно важным в связи с понятием целостности баз данных.
Таблицы в отличие от отношений могут содержать одинаковые
строки.
Отсутствие упорядоченности кортежей. Свойство отсутствия
упорядоченности кортежей отношения также является следствием
определения отношения как множества кортежей. Действительно, несмотря
на то, что мы изобразили отношение Сотрудники в виде таблицы, нельзя
сказать, что сотрудник Иванов «предшествует» сотруднику Петрову.
Причина та же – тело отношения есть множество, а множество не
упорядочено. Это вторая причина, по которой нельзя отождествить
отношения и таблицы – строки в таблицах упорядочены. Одно и то же
отношение может быть изображено разными таблицами, в которых
строки идут в различном порядке.
Отсутствие упорядоченности атрибутов. Атрибуты отношений не
упорядочены, поскольку по определению схема отношения есть множество
пар {имя атрибута; имя домена}. Для ссылки на значение атрибута в
кортеже отношения всегда используется имя атрибута.
Это также третья причина, по которой нельзя отождествить отношения
и таблицы – столбцы в таблице упорядочены. Одно и то же отношение
9
может быть изображено разными таблицами, в которых столбцы идут в
различном порядке.
Атомарность значений атрибутов. Значения всех атрибутов являются
атомарными. Это следует из определения домена как потенциального
множества значений простого типа данных, т.е. среди значений домена не
могут содержаться множества значений (отношения).
Это четвертое отличие отношений от таблиц – в ячейки таблиц
можно поместить что угодно – массивы, структуры, и даже другие
таблицы.
Принято говорить, что в реляционных базах данных допускаются
только нормализованные отношения или отношения, представленные в
первой нормальной форме. Нормализованные отношения составляют основу
классического реляционного подхода к организации баз данных. Они
обладают некоторыми ограничениями (не любую информацию удобно
представлять в виде плоских таблиц), но существенно упрощают
манипулирование данными.
Выводы
1. Не каждая таблица может задавать отношение. Для того, чтобы
некоторая таблица задавала отношение, необходимо, чтобы таблица имела
простую структуру (содержала бы только строки и столбцы, причем, в
каждой строке было бы одинаковое количество полей), в таблице не должно
быть одинаковых строк (т. е. должен быть ключ), любой столбец таблицы
должен содержать данные только одного типа, все используемые типы
данных должны быть простыми.
2. Таблицы, для которых выполняются следующие условия:
– таблицы имеют одинаковое количество столбцов;
– таблицы содержат столбцы с одинаковыми наименованиями;
– столбцы с одинаковыми наименованиями содержат данные из
одних и тех же доменов;
– таблицы имеют одинаковые строки с учетом того, что порядок
столбцов может различаться.
есть различные изображения одного и того же отношения. Значит, каждое
отношение можно считать классом эквивалентности таблиц.
Вопросы
1. Когда и кем были заложены принципы реляционной модели данных?
2. Перечислите и опишите основные части реляционной модели согласно
К.Дейту.
3. Что является единственной структурой данных, используемой в
реляционной модели данных?
4. Опишите три подхода, с помощью которых поддерживается
целостность по ссылкам.
5. Как нужно понимать требование простоты типов данных с точки
зрения реляционной модели данных?
6. Перечислите и опишите основные группы типов данных.
10
7. Дайте определение каждому из следующих понятий в контексте
реляционной модели данных: отношение, атрибут, домен, кортеж, заголовок,
тело, степень отношения, мощность отношения, кардинальное число,
реляционная база данных, схема реляционной базы данных.
8. Перечислите и опишите фундаментальные свойства отношений.
9. Как называются типы данных, которые не обладают внутренней
структурой?
10.Приведите примеры структурированных типов данных.
11.Перечислите основные свойства домена.
12.Назовите основное отличие домена от понятия подмножества.
13.Поясните основное значение доменов.
14.Опишите домен «Пол», который может содержать только два
различных значения: «муж.» и «жен.».
15.Можно ли сравнить значения доменов «Имена_сотрудников» и
«Дата_рождения_сотрудников»? Почему?
16.Может ли быть домен объединение нескольких множеств значений?
Почему?
17.Перечислите все формы записи отношений.

Преподаватель С.В. Банцевич