Изменения

Основные понятия реляционной модели данных. Понятие о языке SQL
== Основные понятия реляционной модели данных. Понятие о языке SQL ==
 
Также см. [[rupedia:Реляционная модель данных]], [[rupedia:Нормальная форма]].
 
В широком спектре автоматизированных информационных систем особо выделяются системы, предназначенные для поддержки удобного и долговременного хранения и обработки больших объемов информации, имеющей, как правило, достаточно сложную структуру. Для хранения такого рода информации на практике используются базы данных (БД), при этом под базой данных в общем случае понимается набор любых систематизированных данных, согласованных между собой. Обращение к базе данных и управление ею осуществляется с помощью системы управления базами данных (СУБД), которая представляет собой программную систему, ориентированную на поддержку хранения, манипулирования и управления данными, обеспечивая при этом их целостность и безопасность.
 
Способ организации информации в базе данных определяется конкретной моделью данных, положенной в основу построения этой базы. Модель данных описывает на концептуальном уровне связи между элементами хранимых данных и допустимые операции над ними, то есть задает логическую структуру данных и механизм их обработки. Так иерархическая модель базируется на организации данных в виде деревьев, сетевая использует в качестве основного способа представления данных графы и сети.
 
Реляционная модель является теоретической основой не только широко распространенных на сегодняшний день реляционных баз данных и соответствующих СУБД, но и всей области баз данных. Впервые принципы реляционной модели были изложены Е. Ф. Коддом в 1969-70 годах. Позднее в 70-х годах были получены основные теоретические результаты в этой области и появились первые прототипы реляционных СУБД. Наиболее бурное развитие области пришлось на 80-е годы, и это привело к тому, что уже к середине 80-х годов реляционные системы практически вытеснили с мирового рынка ранние СУБД и остаются до сих пор наиболее распространенными. Причиной такой популярности реляционных систем по сравнению с другими СУБД являются такие достоинства реляционного подхода к организации баз данных как:
 
* наличие небольшого набора абстракций, в терминах которых можно достаточно просто моделировать предметную область;
* использование в качестве теоретической основы подхода простого, но мощного математического аппарата на базе теории множеств и математической логики;
* возможность обрабатывать данные, абстрагируясь от физической организации баз данных во внешней памяти.
 
=== Основные термины ===
 
Реляционный подход к организации баз данных базируется на понятии отношения, и, собственно, само название подхода (а также соответствующих БД и СУБД) произошло от английского термина «relation» (отношение). Для удобства изложения рассмотрим в качестве примера отношение СТУДЕНТЫ, которое содержит информацию о студентах некоторого учебного заведения, и проиллюстрируем на нем основные понятия реляционной модели данных. К числу таких понятий относятся тип данных, домен, атрибут, кортеж, первичный ключ и отношение.
 
Понятие типа данных в реляционной модели данных аналогично соответствующему понятию в языках программирования. Обычно в современных реляционных БД используются символьные и числовые данные, битовые строки, а также специализированные числовые данные (например, «Деньги») и специальные данные для обозначения времени (дата, время, временной интервал). В приведенном примере допускается использование данных трех типов: целые числа, строки символов и «Деньги».</div>
 
[[Image:Методичка-Реляционная-Алгебра-Иллюстрация.jpg|600px]]
 
Домен представляет собой именованное множество атомарных значений одного и того же типа. При этом под атомарным значением подразумевается значение, не имеющее внутренней структуры в реляционной модели, то есть значение, которое не может быть представлено в терминах более мелких понятий той же модели. Таким образом, атомарное значение является наименьшей семантической единицей данных в реляционной модели. Примером атомарного значения может служить любое отдельное данное из отношения СТУДЕНТЫ (конкретный номер группы, размер стипендии и т. д.).
 
Все домены в реляционной базе данных имеют уникальные имена, и каждый домен задает множество допустимых значений данного типа. Для определения домена указывается базовый тип данных элементов этого домена и некоторый предикат, с помощью которого формулируются возможные ограничения на значения элементов домена, то есть во многом понятие домена в базах данных аналогично понятию подтипа в языках программирования. Например, домен «Номера групп» определен на базовом типе целых чисел, и в качестве ограничения используется тот факт, что значения элементов домена (номера групп) должны принадлежать диапазону 101—530.
 
Основным назначением доменов с точки зрения семантики является то, что они ограничивают сравнения, то есть данные считаются сравнимыми только в том случае, когда они принадлежат одному и тому же домену. Так, в приведенном выше примере нельзя сравнивать между собой значения элементов доменов «Номера студенческих билетов» и «Номера групп», хотя и те и другие значения относятся к типу целых чисел.
 
С понятием домена тесно связано понятие атрибута. Атрибут способен принимать значения из некоторого домена, причем каждый атрибут должен быть определен на единственном домене. В рамках одного отношения все имена атрибутов должны быть уникальными, причем эти имена могут совпадать с именами соответствующих доменов (если все атрибуты отношения определены на разных доменах) или отличаться от них.
 
Именованное множество пар вида {имя атрибута, имя домена} называется схемой отношения. Мощность такого множества называется степенью или арностью отношения. Из свойств атрибутов отношения следует, что все входящие в данную схему имена атрибутов различны, и каждый атрибут соответствует единственному домену. Например, схема отношения СТУДЕНТЫ содержит четыре пары указанного вида, следовательно, степень этого отношения равна четырем, и данное отношение является 4-арным.
 
Кортеж, соответствующий некоторой схеме отношения, представляет собой множество пар вида {имя атрибута, значение}, причем это множество содержит по одной паре такого вида для каждого имени атрибута указанной схемы отношения, а в качестве значения может употребляться любое допустимое значение из домена данного атрибута. Для кортежа так же, как и для схемы отношения, определено понятие его степени или арности (количество входящих в кортеж пар), при этом из определения понятия кортежа следует, что арность кортежа всегда совпадает с арностью соответствующей схемы отношения.
 
Отношение представляет собой множество кортежей, соответствующих одной схеме отношения. Мощность этого множества называется кардинальным числом данного отношения. Часто схему отношения называют заголовком отношения, а само отношение как множество кортежей — телом отношения.
 
Общепризнанным неформальным представлением отношения является таблица некоторого специального вида. Эта таблица состоит из заголовка, в качестве которого используется схема отношения, и некоторого числа неповторяющихся строк, каждая из которых является кортежем отношения. Имена атрибутов при данном способе представления соответствуют именам столбцов таблицы. Примером такой таблицы может служить таблица, задающая отношение СТУДЕНТЫ.
 
=== Свойства отношений ===
 
Из приведенных определений вытекают следующие основные свойства отношений, существенно использующиеся в реляционной модели данных:
 
* отсутствие в отношении одинаковых кортежей;
* отсутствие упорядоченности кортежей;
* отсутствие упорядоченности атрибутов;
* атомарность значений атрибутов.
 
Первые два свойства являются следствием определения отношения как множества кортежей, так как множество по определению представляет собой неупорядоченный набор различных значений.
 
Тот факт, что все кортежи данного отношения различны, гарантирует наличие у каждого отношения первичного ключа, под которым подразумевается некоторый набор атрибутов, значения которых однозначным образом определяют кортеж отношения. Таким образом, доступ к конкретному кортежу отношения осуществляется по первичному ключу. Исходя из свойства уникальности кортежей, в качестве первичного ключа отношения всегда можно использовать полный набор атрибутов данного отношения, однако при формальном определении первичного ключа необходимо обеспечивать неизбыточность составляющего этот ключ набора атрибутов. Это означает, что такой набор атрибутов должен быть минимальным в том смысле, что он не должен содержать в себе атрибуты, которые можно отбросить, не нарушая основное свойство первичного ключа — однозначно определять кортеж. Так, первичным ключом отношения СТУДЕНТЫ является набор из одного единственного атрибута СТНОМЕР, поскольку значение именно этого атрибута однозначным образом определяет любой кортеж данного отношения.
 
Свойство отсутствия упорядоченности атрибутов вытекает из определения схемы отношения как множества пар заданного вида.
 
Если доступ к конкретному кортежу отношения осуществляется по первичному ключу, то доступ к значению какого-либо атрибута в кортеже всегда осуществляется по имени этого атрибута.
 
Свойство атомарности значений атрибутов является следствием определения домена как потенциального множества значений некоторого простого типа данных, не имеющего внутренней структуры в реляционной модели. Отношение, удовлетворяющее данному свойству, называется нормализованным или представленным в первой нормальной форме. В реляционной модели данных рассматриваются только нормализованные п-арные отношения, которые составляют основу классического реляционного подхода к организации баз данных. Несмотря на наличие некоторых ограничений, нормализованные отношения существенно упрощают обработку данных.
 
=== Реляционная модель данных ===
 
Реляционной моделью данных называется формальная теория, лежащая в основе реляционных систем. Фундамент этой теории составляют теория множеств и логика предикатов. Реляционная модель описывает некоторый набор основных понятий и признаков, которыми должны обладать все СУБД и управляемые ими базы данных, основывающиеся на этой модели. Реляционная модель рассматривает данные только на логическом уровне, что позволяет абстрагироваться от конкретного способа их реализации.
 
В реляционной модели выделяется три аспекта рассмотрения данных — структура данных, целостность данных и обработка данных, и в соответствии с этим модель делится на три части, каждая из которых рассматривает один из этих аспектов.
 
Часть реляционной модели, связанная со структурой данных, — структурная часть модели — фактически уже описана в предыдущих разделах. В структурной части модели декларируется, что единственной структурой данных, используемой в реляционных базах данных, является нормализованное n-арное отношение.
 
Рассмотрению аспекта целостности данных посвящена целостная часть реляционной модели. Здесь формулируются следующие два требования целостности, которые должны поддерживаться в любой реляционной СУБД:
 
* целостность сущностей;
* целостность по ссылкам.
 
Более подробно эта часть модели описана в следующем разделе.
 
Аспект обработки данных рассматривается в манипуляционной части реляционной модели. Здесь определяются два основных механизма манипулирования реляционными данными — реляционная алгебра и реляционное исчисление. Первый механизм базируется на классической теории множеств, а второй на логике исчисления предикатов первого порядка. Оба эти механизма обладают свойством замкнутости относительно понятия отношения, то есть выражения реляционной алгебры и формулы реляционного исчисления определяются над отношениями и результатом вычисления также являются отношения, что позволяет использовать результат в других выражениях и формулах.
 
Причиной включения указанных механизмов в реляционную модель является их большая выразительная мощность, что позволяет формулировать сложные запросы к базе данных в виде одного выражения реляционной алгебры или одной формулы реляционного исчисления. Основной функцией манипуляционной части реляционной модели является обеспечение меры реляционное™ любого конкретного языка реляционных баз данных. При этом язык называется реляционно полным, если он обладает не меньшей выразительностью и мощностью, чем реляционная алгебра или реляционное исчисление, то есть если любой запрос, выражаемый с помощью одного выражения реляционной алгебры или одной формулы реляционного исчисления, может быть выражен одним оператором этого языка.
 
Механизмы реляционной алгебры и реляционного исчисления эквивалентны, то есть для любого выражения реляционной алгебры можно построить эквивалентную (приводящую к тому же результату) формулу реляционного исчисления и наоборот. Отличаются эти механизмы способом интерпретации выражений и формул: выражения реляционной алгебры имеют строго определенную однозначную интерпретацию, тогда как для формул реляционного исчисления однозначная интерпретация, как правило, отсутствует. Это означает, что при формулировке запроса к базе данных в реляционной алгебре четко указывается способ получения результирующего отношения в виде последовательности выполнения реляционных операций. В случае же реляционного исчисления указываются только свойства результирующего отношения без уточнения способа его формирования. Поэтому реляционная алгебра лежит в основе процедурных языков обработки реляционных данных, а реляционное исчисление составляет основу непроцедурных или декларативных языков. Более подробно реляционная алгебра и реляционное исчисление описаны ниже.
 
=== Целостность данных ===
 
В реляционных базах данных любой объект или сущность реального мира представляется некоторыми кортежами отношений. Требование целостности сущностей заключается в том, что для всех отношений должно выполняться условие: любой кортеж отношения должен отличаться от любого другого кортежа этого же отношения или, другими словами, любое отношение должно обладать первичным ключом. Выполнение этого требования в реляционной модели данных обеспечивается основными свойствами отношений этой модели.
 
Ограничение первой нормальной формы, требующее атомарности значений атрибутов в отношениях, приводит к тому, что сложные сущности реального мира невозможно представить в виде кортежей одного какого-либо отношения, они представляются в реляционной базе данных в виде некоторых кортежей нескольких отношений.
 
Пусть, например, в реляционной базе данных требуется представить сущность ГРУППА с атрибутами ГРНОМЕР (номер группы), ГРКОЛ (количество студентов в группе) и ГРСТУД (множество студентов группы), причем для каждого студента необходимо также хранить СГНОМЕР (номер студенческого билета), СТИМЯ (фамилия студента), СТСТИП (размер стипендии студента). Тогда для соблюдения ограничения нормализованное отношение необходимо представить сущность ГРУППА в виде двух отношений: ГРУППЫ (ГР НОМЕР, ГРКОЛ) с первичным ключом ГР_НОМЕР и СТУДЕНТЫ (СТНОМЕР, СТИМЯ, СТ_СТИП, СТ_ГР_НОМ) с первичным ключом СТНОМЕР.
 
В данном представлении основное назначение атрибута СТГРНОМ состоит в том, чтобы иметь возможность восстанавливать полную сущность ГРУППА. При этом существенно, что значение атрибута СТГРНОМ в любом кортеже отношения СТУДЕНТЫ должно соответствовать значению атрибута ГРНОМЕР в некотором кортеже отношения ГРУППЫ, то есть по сути оба эти атрибута должны представлять одно и то же свойство сущности. Такой атрибут называется внешним ключом, поскольку его значения однозначно характеризуют сущности (задают значения их первичного ключа), представленные кортежами другого отношения. В этом случае говорят, что отношение, в котором определен внешний ключ, ссылается на отношение, в котором такой же атрибут является первичным ключом. В нашем примере отношение СТУДЕНТЫ ссылается на отношение ГРУППЫ.
 
Требование целостности по ссылкам или требование внешнего ключа заключается в том, что для каждого значения внешнего ключа, входящего в отношение, из которого осуществляется ссылка, должен найтись кортеж с таким же значением первичного ключа в отношении, на которое эта ссылка осуществляется, в противном случае значение внешнего ключа должно быть неопределенным. Для рассмотренного примера требование целостности по ссылкам означает, что при указании для какого-либо студента номера группы необходимо существование группы с таким номером.
 
Оба указанные требования целостности данных должны поддерживаться реляционными СУБД. Для поддержки требования целостности сущностей достаточно обеспечить уникальность первичного ключа в рамках любого отдельного отношения. Основные проблемы по обеспечению целостности по ссылкам возникают при выполнении удаления кортежа из отношения, на которое имеется ссылка. Эти проблемы могут быть решены одним из следующих способов. Первый способ заключается в запрете удаления кортежей, на которые имеются ссылки. Второй способ при удалении кортежа, на который имеются ссылки, приводит к автоматической замене внешнего ключа на неопределенное значение во всех кортежах, ссылающихся на удаленный кортеж. И, наконец, третий способ (каскадное удаление) заключается в том, что наряду с удалением кортежа, на который имеются ссылки, удаляются все ссылающиеся на него кортежи. Выбор конкретного способа обеспечения целостности по ссылкам во многом определяется спецификой прикладной области.
 
=== Реляционная алгебра ===
 
В реляционной алгебре средства обработки отношений базируются на теоретико-множественных операциях, состав которых расширен некоторыми дополнительными операциями, специфичными для баз данных. Набор основных алгебраических операций состоит из восьми операций, которые делятся на два класса — теоретико-множественные операции и специальные реляционные операции. К теоретико-множественным операциям набора относятся операции:
 
* объединения отношений,
* пересечения отношений,
* вычитания отношений,
* прямого произведения отношений. Специальные реляционные операции включают операции:
* ограничения отношения,
* проекции отношения,
* соединения отношений,
* деления отношений.
 
Кроме того, в состав реляционной алгебры включены операция присваивания, которая позволяет сохранить в базе данных результаты вычисления алгебраических выражений, и операция переименования атрибутов, в результате которой тело отношения остается неизменным, но меняются имена атрибутов. Операция переименования атрибутов обеспечивает возможность корректно сформировать схему (заголовок) результирующего отношения при возникновении конфликтов именования атрибутов в отношениях, являющихся операндами одной реляционной операции.
 
Теоретико-множественные операции имеют традиционную в теории множеств интерпретацию, хотя и обладают некоторыми особенностями. Результатом объединения двух отношений является отношение, в состав которого входят все кортежи, входящие хотя бы в одно из отношений-операндов. Пересечение двух отношений дает в результате отношение, включающее в себя все кортежи, входящие одновременно в оба отношения-операнда. Результатом вычитания двух отношений является отношение, содержащее все кортежи отношения, указанного в качестве первого операнда, которые не входят в отношение-второй операнд. Прямое произведение двух отношений дает в результате отношение, кортежи которого представляют собой конкатенацию (сцепление) кортежей первого и второго операндов.
 
Особенностью операций объединения, пересечения и вычитания является то, что для их выполнения схемы (заголовки) отношений-операндов должны быть одинаковыми, то есть в заголовках этих отношений должен использоваться один и тот же набор имен атрибутов, причем одноименные атрибуты должны быть определены на одном и том же домене. Если заголовки отношений-операндов совпадают с точностью до имен атрибутов, то полную идентичность заголовков можно обеспечить за счет применения операции переименования атрибутов. Для выполнения операции прямого произведения необходимо напротив, чтобы множества имен атрибутов отношений-операндов не пересекались. Добиться этого можно также путем применения операции переименования атрибутов к одному из отношений.
 
Все указанные теоретико-множественные операции реляционной алгебры являются ассоциативными и (за исключением операции вычитания отношений) коммутативными, то есть:
 
(А ор В) ор С = А ор (В ор С),
 
А ор В = В ор А, где А, В, С — отношения, ор — теоретико-множественная операция.
 
Рассмотрим теперь специальные реляционные операции. Результатом ограничения отношения по некоторому условию является отношение, состоящее из кортежей отношения-операнда, удовлетворяющих данному условию. Проекция отношения на заданный набор его атрибутов дает в результате отношение, кортежи которого формируются путем взятия соответствующих значений из кортежей отношения-операнда. Результатом соединения двух отношений по некоторому условию является отношение, кортежи которого представляют собой конкатенацию кортежей первого и второго отношений и удовлетворяют заданному условию. Более точно в качестве результата операции соединения отношений А и В по условию сотр принимается отношение, полученное при применении операции ограничения по условию сотр прямого произведения отношений А и В.
 
Операция реляционного деления определена над бинарным и унарным отношениями. В результате деления получается унарное отношение, содержащее в качестве кортежей все значения первого атрибута кортежей бинарного отношения, для которых множество значений второго атрибута (при фиксированном значении первого атрибута) совпадает с множеством значений исходного унарного отношения. То есть результатом деления бинарного отношения А(а,Ь) на унарное отношение В(Ь) является унарное отношение С(а), состоящее из таких кортежей v, для которых в отношении А имеются кортежи <v, w> такие, что множество значений {w} совпадает с множеством значений атрибута b в отношении В.
 
Заметим, что к бинарному и унарному отношениям можно привести отношения большей арности за счет введения понятия составного атрибута. Пусть, например, заданы отношения А с заголовком {a<sub>1</sub>, a<sub>2</sub>, ..., a<sub>n</sub>, b<sub>1</sub>, b<sub>2</sub>, ..., b<sub>m</sub>} и В с заголовком {b<sub>1</sub>, b<sub>2</sub>, ..., b<sub>m</sub>}, причем атрибут Ы отношения А и атрибут b<sub>i</sub> отношения В имеют одно и то же имя и определены на одном и том же домене. Тогда множество атрибутов {aj} называется составным атрибутом а и, соответственно, множество атрибутов {b<sub>j</sub>} - составным атрибутом b. После этого можно говорить о реляционном делении бинарного отношения А(а,b) на унарное отношение В(Ь).
 
=== Реляционное исчисление ===
 
В основе реляционного исчисления лежит формальная теория исчисления предикатов первого порядка. Базисными понятиями реляционного исчисления являются понятие переменной с определенной для нее областью допустимых значений (область определения переменной) и понятие правильно построенной формулы, обеспечивающее формирование формул на основе литералов, переменных, предикатов и кванторов. В зависимости от того, что представляет собой область определения переменной, подразделяется два вида реляционного исчисления — исчисление кортежей и исчисление доменов. В исчислении кортежей переменные определены на отношениях базы данных, то есть допустимым значением каждой такой переменной является кортеж некоторого отношения. В исчислении доменов областями определения переменных служат домены, на которых определены атрибуты отношений базы данных, и допустимым значением любой такой переменной является значение элемента из некоторого домена.
 
Рассмотрим более подробно исчисление кортежей. Переменной этого исчисления является кортежная переменная, определяемая с помощью оператора RANGE, который указывает, кортежи какого отношения представляет данная переменная. Доступ к атрибутам кортежной переменной осуществляется по указанию имени переменной и имени атрибута. Для выражения условий, накладываемых на кортежные переменные, используются правильно построенные формулы (WFF — Well-Formed Formula). WFF строятся на базе простых сравнений (сравнений атомарных значений) с помощью логических связок NOT, AND, OR, конструкции IF … THEN и кванторов EXIST и FORALL.
 
Так же, как в исчислении предикатов в исчислении кортежей определяется понятие свободного и связанного вхождения переменной, при этом связывание вхождения переменной производится кванторами. Связанное вхождение ограничивает область видимости соответствующей переменной пределами ближайшей объемлющей WFF, связавшей данную переменную.
Для определения набора и имен атрибутов результирующего отношения в исчислении кортежей используется понятие целевого списка. Элементом целевого списка в общем случае является конструкция вида var.attr, где var — имя свободной переменной, attr -имя атрибута отношения, на котором определена переменная var. Если имя переменной в целевом списке указано без имени атрибута, то в целевой список включаются имена всех атрибутов определяющего отношения. При формировании целевого списка необходимо обеспечивать уникальность имен атрибутов результирующего отношения, для этого любое повторное вхождение имени атрибута в целевой список должно быть заменено новым именем.
 
Выражением исчисления кортежей называется конструкция вида tl WHERE wff. Значением этого выражения является отношение, тело которого определяется указанной в данном выражении WFF, а набор атрибутов и их имена — целевым списком tl.
 
В исчислении доменов областью определения переменных являются домены. Правила построения формул и выражений исчисления доменов аналогичны соответствующим правилам исчисления кортежей. Основным отличием является наличие в исчислении доменов дополнительного набора предикатов, с помощью которого выражается условие членства или условие принадлежности. Для n-арного отношения R это условие имеет вид:
 
R (pair<sub>1</sub>,…, pair<sub>m</sub>) (m <= n),
 
где каждая пара pair; задается конструкцией A:v, в которой А -имя атрибута отношения R, v — либо литерал, либо имя переменной домена. Условие членства принимает значение true тогда и только тогда, когда в отношении R существует кортеж, содержащий заданные значения указанных в нем атрибутов.
 
Литература:
 
* К. Дейт. Введение в системы баз данных. −6-е издание. Издательский дом «Вильяме», 1999.
* С. Д. Кузнецов. Основы современных баз данных. Информационно-аналитические материалы Центра Информационных Технологий: [http://citforum.ru/database/osbd/contents.shtml http://citforum.ru/database/osbd/contents.shtml]
== Экспертные системы: архитектура, типы решаемых задач, области применения ==