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

В реляционной модели объекты-сущности инфологической схемы предметной области АИС представляются плоскими таблицами данных. Столбцы таблицы, называемые полями базы данных, соответствуют атрибутам объектов-сущностей инфологической схемы предметной области. Множество атомарных значений атрибута называется доменом. Так доменом для поля «Имя» является множество всех возможных имен. Различные атрибуты могут быть определены на одном и том же домене — например, атрибуты «Год поступления» (в вуз) и «Год окончания» определены на одном и том же домене, являющемся перечнем дат определенного диапазона.

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

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

Ключевому атрибуту объекта-сущности, который идентифицирует (определяет, отличает от других) конкретный экземпляр объекта, в таблице соответствует ключевое поле (так называемый ключ таблицы). Примером ключа в таблице «Отделы» может быть поле «Номер отдела» или поле «Наименование отдела». В тех случаях, когда конкретную запись таблицы идентифицирует значение не одного поля, а совокупность значений нескольких полей, тогда все эти поля считаются ключевыми, а ключ таблицы является составным — razgovorodele.ru. Примером такой ситуации может служить таблица «Сотрудники», роль составного ключа в которой может играть совокупность полей «Фамилия», «Имя», «Отчество».

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

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

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

Как уже отмечалось, таблица в реляционной модели отражает определенный объект-сущность из мифологической схемы предметной области АИС. Отношения-связи объектов-сущностей в реляционной модели устанавливаются через введение в таблицах дополнительных полей, которые дублируют ключевые поля связанной таблицы. К примеру, связь между таблицей «Сотрудники» и таблицей «Отделы» устанавливается через введение копии ключевого поля «Номер отдела» из таблицы «Отделы» в таблицу «Сотрудники» — см. схему. Такие поля, дублирующие ключи связанной таблицы, называются внешними ключами.


Пример связи в реляционных таблицах

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

Так как значения первичного ключа уникальны, т. е. не могут повторяться (в таблице «Отделы» может быть только один кортеж по, к примеру, 710-му отделу), а значения других полей и, в частности, внешнего ключа могут повторяться (в таблице «Сотрудники» может быть несколько строк-кортежей сотрудников по 710-му отделу), то такой механизм автоматически обеспечивает связь типа «Один-ко-многим». Отсюда также можно заключить, что связи между таблицами типа «Один-к-одному» в реляционной модели автоматически обеспечиваются при одинаковых первичных ключах, например между таблицей «Сотрудник» с ключом «Таб_№» и таблицей «Паспорт» с таким же ключом. Другой вывод, который следует из анализа данного механизма реализации связей, заключается в том, что реляционная модель не может непосредственно отражать связи типа «Многие-ко-многим», что объективно снижает возможности реляционной модели данных при отражении сложных предметных областей.

Таким образом, структурная составляющая реляционной модели определяется небольшим набором базовых понятий — таблица-отношение, схема таблицы-отношения, домен, поле-атрибут, кортеж-запись (строка), ключ, первичный ключ, вторичный ключ, внешний ключ (отсылка). Данный набор понятий позволяет описывать естественным образом, близким к понятийному аппарату диаграмм Бахмана, большинство инфологических схем не слишком сложных предметных областей. Это обстоятельство как раз и способствовало интенсивному развитию реляционных СУБД в 80-х-90-х годах прошлого столетия.

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

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

Требование целостности ссылок заключается в том, что для любого кортежа-записи с конкретным значением внешнего ключа (отсылки) должен обязательно существовать кортеж связанной таблицы-отношения с соответствующим значением первичного ключа. Простым примером этого очевидного требования является таблица-отношение «Сотрудники» с внешним ключом «№ отдела» и отсылаемая (связанная) таблица «Отделы» с первичным ключом «№ отдела» (см. схему). Если существует кортеж-запись «Иванов», работающий в отделе № 710, то в таблице «Отделы» обязательно должен быть кортеж-запись с соответствующим номером отдела (каждый сотрудник должен обязательно в каком-либо отделе хотя бы числиться).

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

Все операции над данными в реляционной модели (манипуляционная составляющая) можно разделить на две труппы — операции обновления таблиц-отношений и операции обработки таблиц-отношений. К операциям обновления относятся:

• операция ВКЛЮЧИТЬ — добавляет новый кортеж (строку-запись) в таблицу-отношение. Требует задания имени таблицы и обязательного значения ключей — razgovorodele.ru. Выполняется при условии уникальности значения ключа. Добавить новую строку-запись со значением ключа, которое уже есть в таблице, невозможно;
• операция УДАЛИТЬ — удаляет одну или группу кортежей (строк-записей). Требует задания имени таблицы, имени поля (группы полей) и параметров значений полей, кортежи с которыми должны быть удалены;
• операция ОБНОВИТЬ — изменяет значение не ключевых полей у одного или группы кортежей. Требует задания имени таблицы-отношения, имен полей и их значений для выбора кортежей и имен изменяемых полей.