
- •3. Назначение, основные функции и понятие субд.
- •4. Трёхуровневая архитектура бд.
- •5. Жизненный цикл базы данных.
- •6. Иерархическая и сетевая модели данных.
- •7. Реляционная модель данных. Общие представления.
- •8. Понятие домена.
- •8. Отношения, атрибуты и кортежи.
- •9. Формализация отношений в виде таблиц.
- •11. Потенциальные ключи. Первичные и альтернативные ключи.
- •12. Null-значения. Правило целостности объектов.
- •14. Внешние ключи. Ссылочная целостность.
- •15. Индексные файлы. Сортировка файлов бд.
- •16. Поиск записей в файле бд.
- •17. Стратегии ссылочной целостности.
- •18. Основные операции над реляционными базами данных.
- •18. Основы реляционной алгебры. Операции "Объединение", "Разность", "Декартово произведение". Примеры.
- •19. Специальные реляционные операции: "Выборка", "Проекция", "Соединение", "Деление". Примеры.
8. Отношения, атрибуты и кортежи.
С помощью понятия домена удается формально описать базовую структуру данных реляционной модели данных, получившую название «отношение».
Отношением называют структуру данных, которая задается с помощью заголовка отношения и тела отношения. Заголовок отношения определяется так: <имя_отношения> (фиксированный список атрибутов) – R(А1, А2, …, Аn).
Атрибутом отношения называется формальная пара вида: <имя_атрибута: имя_домена>. Атрибут определяется на домене и поэтому имеет единственное отличие от домена – имя атрибута должно быть уникальным только в пределах данного отношения. Сравнение атрибутов возможно внутри одного домена.
Тело отношения (заданные в базе данные) состоит, по определению, из множества кортежей, где каждый кортеж представляет собой множество различных комбинаций допустимых значений атрибутов. Формально кортеж определяется так: (А1: значениеА1, А2: значениеА2, …, Аn: значениеАn).
Свойства кортежей:
■ Каждый кортеж содержит точно одно значение (соответствующего типа) для каждого из своих атрибутов.
■ Для компонентов кортежа не предусмотрено упорядочение, допустим, слева направо. Это свойство следует из того, что понятие кортежа определено на основании множества компонентов, а в математике множества не характеризуются упорядочением своих элементов.
■ Каждое подмножество кортежа представляет собой кортеж (а каждое подмножество заголовка является заголовком). Более того, эти свойства являются истинными применительно, в частности, к пустым подмножествам!
В результате разделения функции отношения между заголовком и телом, мы получаем возможность разработки прикладных программ для фиксированных структур данных при бесконечных вариациях самих данных. Заголовок отношения – статичен и неизменен, тело отношения – абсолютно динамично.
Заголовок отношения фактически описывает декартово произведение доменов, на которых это отношение определено. Тело отношение есть множество кортежей, или некое подмножество декартового произведения доменов. В результате тело отношение и является той структурой данных, с которой работает реляционная алгебра.
Кстати, схемой реляционной БД называется только набор заголовков, входящих в нее отношений и связей между ними.
9. Формализация отношений в виде таблиц.
Одно из достоинств реляционной модели данных состоит в том, что отношения могут быть представлены в виде таблиц (внешний уровень архитектуры БД). Однако структура данных отношение и структура данных таблица – это совершенно разные структуры.
Конкретные отличия между отношениями и таблицами:
■ В теле отношения по определению не может быть одинаковых кортежей. Таблица может содержать одинаковые строки (автоматически реализуется в СУБД).
■ Кортежи в теле отношения не только не должны быть упорядочены, но и в принципе не могут быть упорядочены (исключение – сортиров. файлы). Любая таблица, как правило, использует упорядоченные строки.
■ Аналогично атрибуты в заголовке отношения по определению неупорядочены, каждый атрибут в пределе одного отношения имеет уникальное имя. Порядок столбцов (заголовки столбцов) имеют для таблицы важнейшее значение.
■ Все значения атрибутов скалярны, в ячейках таблиц можно размещать любые сложные структуры данных, например, массивы алгебраических выражений.
■ Для каждого компонента каждого кортежа в теле отношения предусмотрено имя типа и имя атрибута, но эти имена типа и атрибута обычно не показаны на изображениях в виде таблицы.
■ Каждое значение атрибута в каждом кортеже в теле отношения является значением соответствующего типа, но эти значения на изображениях в виде таблицы обычно показаны в сокращенной форме, например, s1 вместо s# (' S1').
Некоторые другие отличия:
■ Безусловно, что таблицы обычно рассматриваются как имеющие по меньшей мере один столбец, а отношения не обязательно должны иметь хотя бы один атрибут.
■ Безусловно, допускается (по крайней мере, в языке SQL), чтобы таблицы включали неопределенные значения (NULL), в то время как для отношений это ни в коем случае не допускается.
■ Безусловно, что таблицы являются "плоскими" (или двухмерными), а отношения — n-мерными.
Таблица может рассматриваться как приемлемое изображение отношения тогда и только тогда, когда каждый столбец характеризуется соответствующим типом, каждое значение атрибута представляет собой значение определенного типа, упорядочение строк и столбцов не имеет значения и дубликаты строк не допускаются.
___. Схемы отношений и представление данных в РБД.
Представление в реляционной модели, по сути, является именованным выражением реляционной алгебры (либо конструкцией, эквивалентной выражению реляционной алгебры). Ниже приведен пример на языке Tutorial D.
VAR GOOD_SUPPLIER VIEW
( S WHERE STATUS > 15 ) { S#, STATUS, CITY } ;
При выполнении данного оператора выражение реляционной алгебры (которое называется выражением, определяющим представление) не вычисляется, а просто запоминается системой посредством его записи в каталог базы данных под указанным именем, GOOD_SUPPLIER. Тем не менее, со стороны пользователя это выглядит так, как будто в базе данных существует реальная переменная отношения GOOD_SUPPLIER С собственными кортежами и атрибутами.
Любое представление, такое как GOOD_SUPPLIER, в некотором смысле можно считать просто окном для просмотра данных. Любые изменения, вносимые в исходную базовую таблицу, будут автоматически и мгновенно отображаться в представлении (как в окне), конечно, если они попадут в область, охваченную
данным представлением. И наоборот, все изменения, вносимые в представление, будут автоматически переноситься в данные исходной базовой таблицы, в результате чего станут видимыми и в самом представлении.
Поддержка представлений желательна по многим причинам. Укажем некоторые из них.
■ Пользователям предоставляется возможность использовать средства сокращенной записи операторов — своего рода "макросы ".
■ Представления позволяют разным пользователям различным образом видеть одни и
те же данные в одно и то же время.
■ Обеспечивается автоматическая защита скрытых данных.
■ Представления могут обеспечивать логическую независимость от данных.