Программирование >>  Хронологические базы данных 

1 ... 53 54 55 [ 56 ] 57 58 59 ... 348


6.3. Синтаксис

в этом разделе представлен синтаксис (в основном, синтаксис языка Tutorial D), который мы будем использовать для выражений реляционной алгебры.

Замечание. В большинстве работ по базам данных для обозначения реляционных операторов используются математические или греческие символы. Например, буква а обозначает оператор выборки, буква я - проекцию, знак п - пересечение и т.д. Мы же предпочитаем использовать ключевые слова, такие как JOIN и WHERE. Хотя при этом длина выражений увеличивается, такие выражения являются более дружественными по отношению к пользователю.

<реляционное выражение>

::= RELATION { <список выражений кортежей> } <имя переменной-отношениа> <реляционная операциа> ( <реляционное выражение> )

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

<реляционная операциа>

::= <проекциа> \ <не проекций>

Мы различаем операции <проекци!0 и <не проекциО в синтаксисе только из-за необходимости соблюдать приоритет операторов (удобнее назначать более высокий приоритет операторам проекции).

<проекциуО

::= <реляционное выражение>

{ [ ALL вит ] <список имен атрибутов> }

Здесь параметр <реляционное выражениё> не должен иметь вид <не проекции.

<не проекциО

::= <переименование>

I <о6ъединение> \ <пересечение> \ <вычитание> \ <произведение> I <вы6орка> I <соединение> \ <деление>

<переименование>

::= <реляционное выражениё>

RENAME <список переименовываемых элементов>

Здесь параметр <реляционное выражение> не должен иметь вид <не проекциа>. Синтаксис параметра <переименовываемый элемент> можно увидеть в примерах из предыдущего раздела.



<о6ъединение>

::= <реляционное выражение>

UNION <реляционное выражениё>

Здесь параметры <реляционное выражение> не должны иметь вид <не проекциЯ>, за исключением тех случаев, когда одно или оба выражения, в свою очередь, являются выражениями типа <о6ъединение>.

<пересечение>

::= <реляционное выражение>

INTERSECT <реляционное выражение>

Здесь параметры <реляционное выражение> не должны иметь вид <не проекциЯ>, за исключением тех случаев, когда одно или оба выражения, в свою очередь, являются выражениями <пересечение>.

<вычитание>

::= <реляционное выражение>

MINUS <реляционное выражение>

Здесь параметры <реляционное выражение> не должны иметь вид <не проекциЯ>.

<произведение>

::= <реляционное выражение>

TIMES <реляционное выражение>

Здесь параметры <реляционное выражениё> не должны иметь вид <не проекциЯ>, за исключением тех случаев, когда одно или оба выражения, в свою очередь, являются выражениями <произведение>.

<вы6орка>

::= <реляционное выражение> WHERE <логическое выражение>

Здесь параметр <реляционное выражение> не должен иметь вид <не проекциЯ>. Замечание. Параметр <логическое выражение> может включать ссылки на атрибуты отношения, обозначенного как <реляционное выражение>, во всех случаях, когда допустимо обращение к оператору выбора (например, выражение S WHERE CITY = London является корректной формой операции <вы6орка>). <соединение>

::= <реляционное выражение>

JOIN <реляционное выражение>

Здесь параметры <реляционное выражение> не должны иметь вид <не проекциЯ>, за исключением тех случаев, когда одно или оба выражения, в свою очередь, являются выражениями типа <соединение>.

<делениё>

::= <реляционное выражение>

DIVIDEBY <реляционное выражение> PER <рег>



Здесь параметры <реляционное выражение> не должны иметь вид <не проекция>. <рег>

::= <реляционное выражение>

I ( <реляционное выражение>, <реляционное выражение> )

Здесь параметры <реляционное выражение> не должны иметь вид <не проекциО.

6.4. Семантика

в этом разделе мы дадим толкование приведенного в разделе 6.3 синтаксиса и обсудим некоторые конкретные примеры. Операторы будут рассматриваться в такой последовательности: объединение, пересечение, вычитание, произведение, выборка, проекция, естественное соединение и деление (оператор RENAME уже рассматривался в разделе 6.2).

Объединение

в математике объединением двух множеств называется множество, состоящее из всех элементов, принадлежащих хотя бы одному из исходных множеств. Поскольку отнощение является множеством (точнее, содержит множество), а именно - множеством кортежей, очевидно, что можно получить объединение двух таких множеств. Результатом выполнения этой операции будет множество, состоящее из всех кортежей, которые принадлежат хотя бы одному из исходных отнощений. Например, объединение множества кортежей описания поставщиков переменной-отнощения S и множества кортежей описания деталей переменной-отнощения Р, определенно, будет множеством.

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

Теперь дадим точное определение оператора реляционного объединения. Для заданных отношений А и В одного и того же типа объединением этих двух отношений (что записывается как А UNION В) называется новое отношение того же типа с телом, состоящим из множества всех кортежей t, которые принадлежат либо отношению А, либо отношению В, либо обоим отношениям одновременно.

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



1 ... 53 54 55 [ 56 ] 57 58 59 ... 348

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика