Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курс лекций СБД.doc
Скачиваний:
23
Добавлен:
13.11.2019
Размер:
1.94 Mб
Скачать
    1. Реляционный подход

Мы будем придерживаться, как правило, терминологии и представлений, предложенных К.Дж. Дейтом, внесшим значительный вклад в развитие теории баз данных, и Е.Ф. Коддом, предложившим реляционную модель данных.

О сновные термины, касающиеся объектов баз данных, показаны на рис. 1.7.1.

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

Значение наименьшей семантической единицы данных, которая предполагается отдельным значением данных (таким как отдельный табельный номер, отдельная фамилия или отдельная зарплата в примере на рис. 1.7.1), принято называть скаляром. Скалярные значения атомарны, т.е. у них нет внутренней структуры при рассмотрении в реляционной СУБД (несмотря на то, что фамилия состоит их букв, для базы данных она неделима). Тогда домен можно определить как именованное множество скалярных значений одного типа. Например, домен кодов отделов – это множество всех возможных значений, которые могут использоваться для кодирования отделов, домен фамилий – это множество текстовых данных с количеством знаков от 1 до, например, 20. Итак, домены – это общая совокупность значений, из которых берутся реальные значения атрибутов, или, другими словами, значения атрибутов должны браться из соответствующего домена.

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

Пример создания и удаления доменов:

CREATE DOMAIN Фамилия CHAR(20); CREATE DOMAIN Зарплата NUMERIC(5); DESTROY DOMAIN Зарплата;

Можно сказать, что домен тождественен типу данных (как это понимается в современных языках программирования)1.

Отношение определяется на множестве доменов и состоит из заголовка (интерпретация данных) и тела (набора данных). Тело содержит множество кортежей (кардинальное число) и атрибутов (степень). Основные свойства отношений:

  • Нет одинаковых кортежей;

  • Кортежи не упорядочены сверху вниз;

  • Атрибуты не упорядочены слева направо;

  • Все значения атрибутов атомарны.

Сейчас становится более понятным различие между отношением и таблицей. В реляционной модели основной абстрактный объект отношение имеет простое реальное представление – таблицу, которое делает реляционные системы простыми и понятными. Однако, в отличие от отношения, в таблице строки (кортежи) и столбцы (атрибуты) расположены в определенном порядке.

Именованное отношение называется базовым, если оно является непосредственной частью базы данных. Производные отношения определяются через базовые отношения посредством реляционных выражений и, как правило, неименованные. Именованное производное отношение называется представлением. Различие между базовой таблицей и представлением часто характеризуется так: базовые таблицы реально существуют в том смысле, что они представляют данные, которые действительно хранятся в базе данных; представления, наоборот, реально не существуют, а просто предоставляют различные способы просмотра реальных данных.

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

Например, предикат отношения, изображенного на рис. 1.7.1, может быть следующим: Сотрудник с определенным табельным номером (атрибут Табель) имеет определенную фамилию (атрибут Фамилия), определенную зарплату (атрибут Зарплата) и зарегистрирован в определенном отделе (атрибут Код_отдела); кроме того, нет двух сотрудников с одинаковыми табельными номерами. При обновлении атрибута Зарплата в кортеже

Табель='В3'; Фамилия= 'Котов'; Код_отдела='А3'; Зарплата='200';

предикат имеет значение истина, а в кортеже

Табель='В3'; Фамилия= 'Котов'; Код_отдела='А1'; Зарплата='200';

предикат имеет значение ложь, т.к. в базе данных этот сотрудник зарегистрирован в отделе А3, и в этом случае СУБД не позволит сделать изменения.