
ГОСЫ Ответы Антипов фулл / 8. Антипов / Антипов 12
.docx12.Реляционные объекты данных. Отношения. Переменная отношения Значения отношения. Синтаксис оператора создания и удаления базового отношения. Структура и свойства отношения. Виды отношений.
Основными понятиями реляционных баз данных являются тип данных, домен, атрибут, кортеж, первичный ключ и отношение.
Типы данных: Как правило, типы данных делятся на три группы: 1) Простые типы данных. 2) Структурированные типы данных. (Массивы, Структуры). 3) Ссылочные типы данных. (указатели).
Реляционная модель требует, чтобы типы используемых данных были простыми (не обладали внутренней структурой).
Домены — это типы данных, имеющие некоторый смысл (семантику). Домен характеризуется следующими свойствами:
- Домен имеет уникальное имя (в пределах базы данных).
- Домен определен на некотором простом типе данных или на другом домене.
- Домен может иметь некоторое логическое условие, позволяющее описать подмножество данных, допустимых для данного домена.
- Домен несет определенную смысловую нагрузку.
Кортеж, отношение
Кортеж — это набор именованных значений заданного типа. Отношение — это множество кортежей, соответствующих одной схеме отношения.
Обычным житейским представлением отношения является таблица, заголовком которой является схема отношения, а строками — кортежи отношения-экземпляра; в этом случае имена атрибутов именуют столбцы этой таблицы.
Свойства отношений: 1) В отношении нет одинаковых кортежей. 2) Кортежи не упорядочены (сверху вниз). 3) Атрибуты не упорядочены (слева направо). 4) Все значения атрибутов атомарны.
Реляционной базой данных называется набор отношений. Схемой реляционной базы данных называется набор заголовков отношений, входящих в базу данных.
Теперь обратимся к переменным отношения (relation variable, или сокращенно relvar). Как было отмечено в главе 3, переменные отношения имеют две разновидности — базовые переменные отношения и представления (называемые также, соответственно, реальными и виртуальными переменными отношения). В данном разделе нас в основном интересует именно базовые переменные отношения (представления подробно рассматриваются в главе 10), но следует отметить, что все сказанное здесь применительно к переменным отношения без дополнительного уточнения распространяется на все переменные отношения в целом, включая представления.
Определение базовой переменной отношения
Ниже показан синтаксис определения базовой переменной отношения.
VAR <relvar name> BASE <relation type>
<c andidate k ey def list> [ <foreign key def list> ] ;
Параметр с обозначением типа отношения <relation type> принимает следующую форму.
RELATION { <attribute commalist> }
Здесь параметр <attribute commalist> — разделенный запятыми список атрибутов. Это выражение фактически представляет собой вызов генератора типа RELATION, как описано в разделе 6.3). Параметр <candidate key def list> и необязательный параметр <foreign key def list> описаны в одном из следующих абзацев. Ниже в качестве примера приведены определения базовых переменных отношения для базы данных поставщиков и деталей (которые были также показаны на рис. 3.9).
VAR S BASE RELATION
{ S# S#,
SNAME NAME, STATUS
INTEGER, CITY CHAR
} PRIMARY KEY { S#
} ;
VAR P BASE RELATION { Р# Р#, PNAME NAME,
COLOR COLOR, WEIGHT WEIGHT, CITY CHAR }
PRIMARY KEY { P#};
VAR SP BASE RELATION { S# S#, P# P#, QTY QTY }
PRIMARY KEY { S#, P# } FOREIGN KEY { S# }
REFERENCES S FOREIGN KEY { P#
} REFERENCES P ;
Пояснения
1. Эти три базовые переменные отношения имеют следующие типы (отношения).
RELATION { S# S#, SNAME NAME, STATUS INTEGER, CITY CHAR } RELATION { P# P#, PNAME NAME, COLOR COLOR,
WEIGHT WEIGHT, CITY
CHAR } RELATION { S# S#, P# P#, QTY QTY }
2. Все термины заголовок, тело, атрибут, кортеж, степень (и т.д.), которые были пе ред этим определены для значений отношения, интерпретируются также очевид ным образом применительно к переменным отношения.
3. Все возможные значения любой отдельно взятой переменной отношения принадлежат к одному и тому же типу отношения, а именно к типу отношения, указанному в определении переменной отношения (указанному косвенно, если данная переменная отношения является представлением), и поэтому имеют одинаковый заголовок.
4. При определении базовой переменной отношения ей присваивается начальное зна чение, которое является пустым отношением соответствующего типа.
5. Определения потенциальных ключей подробно рассматриваются в главе 9, а на данный момент мы будем просто предполагать, что определение каждой базовой переменной отношения включает одно и только одно определение потенциаль ного ключа,<candidate key def> в следующей конкретной форме.
PRIMARY KEY { <attribute name commalist> }
6. Определения внешнего ключа также рассматриваются в главе 9.
7. Ввод определения новой переменной отношения вынуждает систему внести в свой каталог записи с описанием этой переменной отношения.
8. Как было отмечено в главе 3, переменные отношения, как и отношения, имеют соответствующий предикат. Таковым является предикат, общий для всех отноше ний, которые представляют собой возможные значения рассматриваемой пере менной отношения. Например, в случае переменной отношения поставщиков S предикат выглядит примерно следующим образом.
Поставщик с номером поставщика S# работает по контракту, имеет имя SNAME и статус STATUS, а также находится в городе CITY
9. Предполагается, что предусмотрены средства определения применяемых по умолчанию значений для атрибутов базовых переменных отношения. Применяемым по умолчанию значением заданного атрибута является такое значение, которое должно быть помещено в позицию соответствующего атрибута, если пользователь явно не предоставит нужное значение при вставке некоторого кортежа. Подходящая синтаксическая конструкция языка Tutorial D для определения применяемых по умолчанию значений может принимать форму новой конструкции в определении базовой переменной отношения, скажем, DEFAULT
Синтаксис оператора создания и удаления базового отношения
CREATE VIEW ТОРЕМР AS
) { EMP#, ENAME, SALARY } ;
( EMP WHERE SALARY > 3 3K
Примечание. Поскольку в данный момент это несущественно, в примере для удобства используется смешанная нотация языков SQL и Tutorial D.
При выполнении этого оператора выражение, следующее за ключевым словом AS и
фактически определяющее представление, не вычисляется, а просто запоминается системой (обычно посредством сохранения в каталоге под указанным именем ТОРЕМР). Однако с точки зрения пользователя все выглядит так, как будто в базе данных появилась вполне
реальная переменная отношения с именем ТОРЕМР, имеющая текущее значение, которое показано на рис. 3.7 только в незатененных участках. И пользователь должен иметь возможность оперировать этим представлением точно так, как если бы оно являлось обычной базовой переменной отношения.
В качестве другого примера рассмотрим операцию удаления DELETE.
DELETE TOPEMP WHERE SALARY < 42K ;
На самом деле будет выполнена следующая операция.
DELETE EMP WHERE SALARY > ЗЗК AND SALARY < 42К ;
Рассматриваемое здесь представление ТОРЕМР является очень простым, состоящим (выражаясь неформально) из подмножества строк и столбцов единственной базовой переменной отношения. Однако, в принципе, определение представления может иметь произвольную сложность (оно может даже ссылаться на другие представления). Например, далее приведено представление, определение которого включает соединение двух базовых переменных отношения.
CREATE VIEW JOINEX AS
( ( EMP JOIN DEPT ) WHERE BUDGET > 7M ) { EMP#, DEPT# } ;
К вопросу определения и обработки представлений мы еще вернемся в главе 10. Между прочим, сейчас уже можно объяснить смысл приведенного в конце раздела 2.2 замечания, касающегося того, что термин представление (view) в реляционном контексте имеет довольно специфическое значение, не совпадающее со значением, приписанным ему в архитектуре ANSI/SPARC. На внешнем уровне этой архитектуры база данных воспринимается как внешнее представление,определяемое внешней схемой (и разные пользователи могут иметь разные внешние представления). В реляционных системах, наоборот, представление, как пояснялось выше, является специально именованной производной виртуальной переменной отношения. Поэтому реляционным аналогом внешнего представления ANSI/SPARC обычно служит множество из нескольких переменных отношения, каждая из которых является представлением в реляционном смысле. Внешняя схема состоит из определений таких представлений. (Из этого следует, что в реляционной модели представления являются одним из способов обеспечения логической независимости от данных, хотя еще раз следует отметить, что современные коммерческие продукты имеют серьезные недостатки в этой части. Подробности приведены в главе 10.)
Типы отношений
И наконец дадим определение отношению, как некой вершине пирамиды, состоящей из всех предыдущих понятий. Итак, отношение (обозначается r, от англ. relation – «отношение») со схемой отношений S определяется как обязательно конечное множество кортежей, имеющих ту же схему отношения S. Таким образом:
r ≡ r(S) = {t(S) | t ∈r};
По аналогии со схемами отношений количество кортежей в отношении называют мощностью отношений и обозначают как мощность множества: |r|.
Отношения, как и кортежи, различаются по типам. Итак, отношения называются:
1) частичными, если для любого входящего в отношение кортежа выполняется следующее условие: [def(t) ⊆ S].
Это (как и с кортежами) общий случай;
2) полными, в том случае если ∀t ∈ r(S) выполняется: [def(t) = S];
3) неполными, если ∃t ∈ r(S) def(t) ⊂ S;
4) нигде не определенными, если ∀t ∈ r(S) [def(t) = ∅].
Обратим отдельное внимание на нигде не определенные отношения. В отличие от кортежей работа с такими отношениями включает в себя небольшую тонкость. Дело в том, что нигде не определенные отношения могут быть двух видов: они могут быть либо пустыми, либо могут содержать единственный нигде не определенный кортеж (такие отношения обозначаются {∅(S)}).
Сравнимыми (по аналогии с кортежами), т. е., возможно равными, являются лишь отношения с одной и той же схемой отношения. Поэтому отношения с различными схемами отношений являются различными.
В табличной форме представления, отношение – это тело таблицы, которому соответствует строка – заголовок столбцов, т. е. буквально – вся таблица, вместе с первой строкой, содержащей заголовки.