Реляционная модель данных. Базовые понятия, структура реляционных баз данных
Реляционные базы данных являются наиболее распространенными в настоящее время, хотя наряду с общепризнанными достоинствами обладает и рядом недостатков. К числу достоинств реляционного подхода можно отнести:
• наличие небольшого набора абстракций, которые позволяют сравнительно просто моделировать большую часть распространенных предметных областей и допускают точные формальные определения, оставаясь интуитивно понятными;
• наличие простого и в то же время мощного математического аппарата, опирающегося главным образом на теорию множеств и математическую логику и обеспечивающего теоретический базис реляционного подхода к организации баз данных;
• возможность ненавигационного манипулирования данными без необходимости знания конкретной физической организации баз данных во внешней памяти.
Реляционные системы далеко не сразу получили широкое распространение. В то время, как основные теоретические результаты в этой области были получены еще в 70-х, и тогда же появились первые прототипы реляционных СУБД, долгое время считалось невозможным добиться эффективной реализации таких систем. Однако отмеченные выше преимущества и постепенное накопление методов и алгоритмов организации реляционных баз данных и управления ими привели к тому, что уже в середине 80-х годов реляционные системы практически вытеснили с мирового рынка ранние СУБД.
В настоящее время основным предметом критики реляционных СУБД является не их недостаточная эффективность, а присущая этим системам некоторая ограниченность (прямое следствие простоты) при использование в так называемых нетрадиционных областях (наиболее распространенными примерами являются системы автоматизации проектирования), в которых требуются предельно сложные структуры данных. Еще одним часто отмечаемым недостатком реляционных баз данных является невозможность адекватного отражения семантики предметной области. Другими словами, возможности представления знаний о семантической специфике предметной области в реляционных системах очень ограничены. Современные исследования в области постреляционных систем главным образом посвящены именно устранению этих недостатков.
Основными понятиями реляционных баз данных являются тип данных, домен, атрибут, кортеж, первичный ключ и отношение.
Понятие тип данных в реляционной модели данных полностью адекватно понятию типа данных в языках программирования. Обычно в современных реляционных БД допускается хранение символьных, числовых данных, битовых строк, специализированных числовых данных (таких как "деньги"), а также специальных "темпоральных" данных (дата, время, временной интервал). Достаточно активно развивается подход к расширению возможностей реляционных систем абстрактными типами данных (соответствующими возможностями обладают, например, системы семейства Ingres/Postgres).
Структуры данных реляционной модели.Реляционная модель данных организует и представляет данные в виде таблиц или реляций. Реляция – это термин, пришедший из математики и обозначающий простую двумерную таблицу. В реляционном подходе к построению баз данных используется терминология теории отношений. Простейшая двумерная таблица определяется какотношение.
Таблица является основным типом структуры данных (объектом) реляционной модели. Структура таблицы определяется совокупностью столбцов. В каждой строке таблицы содержится по одному значению в соответствующем столбце. В таблице не может быть двух одинаковых строк. Общее число строк не ограничено.
Столбец соответствует некоторому элементу данных –атрибуту, который является простейшей структурой данных. В таблице не могут быть определены множественные элементы, группа или повторяющаяся группа, как в рассмотренных выше сетевых и иерархических моделях. Каждый столбец таблицы должен иметь имя соответствующего элемента данных (атрибута).
Столбец таблицы со значениями соответствующего атрибута называется доменом, а строки со значениями разных атрибутов –кортежем.
Реляционная таблица-отношение. На рис. 9 приведена иллюстрация реляционной таблицы-отношения R. Формальное определение отношения R (реляционной таблицы) опирается на представление о ее доменахDi, (столбцах) и кортежах Kj (строках). Отношением R, определенным на множествах доменов {Di}, называется подмножество декартова (прямого) произведения доменов D1*D2*…..*Dn
Таблица-отношение (см. рис. 1) содержит столбцы с именами элементов данных – атрибутов (А1, А2, ...). Значения атрибутов d находятся в содержательной части таблицы и образуют строки и столбцы. Множество значений атрибутов в одном столбце образует одиндоменDi. Множество значений атрибутов в одной строке образуют одинкортеж Кj. Отношение R образуется множеством упорядоченных кортежей.
R={Кj}, J=1- m Кj={d1j, d2j,…dnj},
где n – число доменов отношения; определяет размерность отношения;
j – номер кортежа;
m – общее число кортежей в отношении, называемое коорвинальным числом отношения.
Рис.9. Иллюстрация реляционной таблицы-отношения
Домен. В самом общем виде домен определяется заданием некоторого базового типа данных, к которому относятся элементы домена, и произвольного логического выражения, применяемого к элементу типа данных. Если вычисление этого логического выражения дает результат "истина", то элемент данных является элементом домена.
Наиболее правильной интуитивной трактовкой понятия домена является понимание домена как допустимого потенциального множества значений данного типа. Например, домен "Имена" в нашем примере определен на базовом типе строк символов, но в число его значений могут входить только те строки, которые могут изображать имя (в частности, такие строки не могут начинаться с мягкого знака).
Следует отметить также семантическую нагрузку понятия домена: данные считаются сравнимыми только в том случае, когда они относятся к одному домену. В нашем примере значения доменов "Номера пропусков" и "Номера групп" относятся к типу целых чисел, но не являются сравнимыми. Заметим, что в большинстве реляционных СУБД понятие домена не используется, хотя в Огас1е V.7 оно уже поддерживается.
Схема отношения, схема базы данных. Схема отношения – это именованное множество пар {имя атрибута, имя домена (или типа, если понятие домена не поддерживается)}. Степень или "арность" схемы отношения - мощность этого множества. Степень отношения ПРИМЕРА равна ШЕСТИ, то есть оно является 6-арным. Если все атрибуты одного отношения определены на разных доменах, осмысленно использовать для именования атрибутов имена соответствующих доменов (не забывая, конечно, о том, что это является всего лишь удобным способом именования и не устраняет различия между понятиями домена и атрибута). Схема БД (в структурном смысле) – это набор именованных схем отношений.
Список, в котором даются имена реляционных таблиц с перечислением их атрибутов (ключи подчеркнуты) и определений внешних ключей, называется реляционной схемой базы данных. Она является предварительным итогом создания этапа жизненного цикла реляционной базы данных. Пример:
WORKER [WORKER-ID, NAME, HOURLY-RATE, SKILL-TYPE, SVPV-ID]
Внешние ключи: SKILL-TYPE ссылается SKILL
SVPV-ID ссылается WORKER
ASSIGNMENT [WORKER-ID, BLDG-ID, START-DATE, NUMBER-OF-DAYS]
Внешние ключи: WORKER-ID ссылается WORKER
BLDG-ID ссылается BVILDING
BVILDING [BLDG-ID, ADRESS, TYPE, QLTY-LEVEL, STATVS]
SKILL [SKILL- TYPE, BONUS-RATE, HOURS-PER-WEEK]
Кортеж, отношение. Кортеж, соответствующий данной схеме отношения, – это множество пар {имя атрибута, значение, которое содержит одно вхождение каждого имени атрибута, принадлежащего схеме отношения. "Значение" является допустимым значением домена данного атрибута (или типа данных, если понятие домена не поддерживается). Тем самым, степень или "арность" кортежа, т.е. число элементов в нем, совпадает с "арностью" соответствующей схемы отношения. Попросту говоря, кортеж – это набор именованных значений заданного типа.
Отношение – это множество кортежей, соответствующих одной схеме отношения. Иногда, чтобы не путаться, говорят "отношение-схема" и "отношение-экземпляр", иногда схему отношения называют заголовком отношения, а отношение как набор кортежей – телом отношения. На самом деле, понятие схемы отношения ближе всего к понятию структурного типа данных в языках программирования. Было бы вполне логично разрешать отдельно определять схему отношения, а затем одно или несколько отношений с данной схемой.
Однако в реляционных базах данных это не принято. Имя схемы отношения в таких базах данных всегда совпадает с именем соответствующего отношения-экземпляра. В классических реляционных базах данных после определения схемы базы данных изменяются только отношения-экземпляры. В них могут появляться новые и удаляться или модифицироваться существующие кортежи. Однако во многих реализациях допускается и изменение схемы базы данных: определение новых и изменение существующих схем отношения. Это принято называть эволюцией схемы базы данных.
Обычным житейским представлением отношения является таблица, заголовком которой является схема отношения, а строками – кортежи отношения-экземпляра; в этом случае имена атрибутов именуют столбцы этой таблицы. Поэтому иногда говорят "столбец таблицы", имея в виду "атрибут отношения". Когда мы перейдем к рассмотрению практических вопросов организации реляционных баз данных и средств управления, мы будем использовать эту житейскую терминологию. Этой терминологии придерживаются в большинстве коммерческих реляционных СУБД.
Реляционная база данных – это набор отношений, имена которых совпадают с именами схем отношений в схеме БД.
Как видно, основные структурные понятия реляционной модели данных (если не считать понятия домена) имеют очень простую интуитивную интерпретацию, хотя в теории реляционных БД все они определяются абсолютно формально и точно.
Ключ таблицы-отношения. Кортежи не должны повторяться внутри таблицы-отношения и, соответственно они должны иметь уникальный идентификатор – первичный ключ. Один или несколько атрибутов, значения которых однозначно идентифицируют строку таблицы, являютсяключом таблицы.
Первичный ключ называетсяпростым, когда он состоит из одного атрибута, или составным, когда он состоит из нескольких атрибутов. Кроме первичного ключа, в отношении могут существовать и вторичные ключи.
Вторичный ключ – это такой ключ, значения которого могут повторяться в разных строках-кортежах. По ним может отыскиваться группа строк с одинаковым значением вторичного ключа.
Внешний ключ – это набор атрибутов одной таблицы, являющийся ключом другой (или той же самой) таблицы. Внешние ключи обеспечивают важные связи между таблицами. Они используются Для того чтобы связать данные из одной таблицы с данными в другой таблице. Атрибуты внешнего ключа не обязательно должны иметь те же имена, что и атрибуты ключа, которым они соответствуют.