Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коспект БД.doc
Скачиваний:
116
Добавлен:
01.05.2014
Размер:
300.54 Кб
Скачать

Лекция 3 Манипуляционная составляющая реляционной модели данных

Реляционная модель, как отмечает Дейт [3], не только определяет принципы хранения данных, но и способы их обработки. Она состоит из трех частей:

  • структурной,

  • целостной,

  • манипуляционной.

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

В основу манипуляционной части модели положена теория множеств с некоторыми уточнениями. Основная идея состоит в том, что, поскольку отношение – это множество, то средства манипулирования отношениями могут базироваться на традиционных теоретико-множественных операциях, дополненных некоторыми операциями, специфичными для БД.

Набор операций, предложенный Коддом, содержит восемь операций, которые делятся на два класса:

  • теоретико-множественные операции,

  • специальные реляционные операции.

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

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

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

Все четыре операции: объединение, пересечение, разность и декартово произведение являются ассоциативными, то есть, если обозначить отношения символами А, В и С, а любую операцию знаком #, то

(А # В) # С = А # (В # С) = А # В # С

Все операции кроме разности также коммутативны, то есть

А # В = В # А

Восемь выделенных Коддом операций реляционной алгебры определяют эффективность реляционной СУБД. Рассмотрим выполнение этих операций на примерах.

  1. Объединение. R3 = R1  R2

Пусть отношение R1 – это таблица «Абитуриенты – победители олимпиады», а R2 – таблица «Абитуриенты, прошедшие по конкурсу на основании экзаменов».

Таблица Абитуриенты – победители олимпиады.

Фамилия

школы

Иванов

30

Петров

239

Петров

45

Сидоров

56

Таблица Абитуриенты, прошедшие по конкурсу на основании экзаменов.

Фамилия

школы

Алексеев

47

Иванов

30

Петров

45

Сидоров

47

Степанов

239

Пусть основанием для зачисления в университет является победа в олимпиаде, либо успешная сдача вступительных экзаменов. Результат объединения (R3), который мы назовем «Абитуриенты, зачисленные в университет», включает все строки первой таблицы и недостающие строки из второй.

Таблица Абитуриенты, зачисленные в университет.

Фамилия

школы

Иванов

30

Петров

239

Петров

45

Сидоров

56

Алексеев

47

Сидоров

47

Степанов

239

  1. Пересечение. R3 = R1  R2

Исходные данные те же, что и в случае объединения. Результат пересечения включает только те строки первой таблицы, которые есть во второй. В нашем случае результатом будет таблица, которую можно назвать «Абитуриенты, зачисленные в университет по двум показателям».

Таблица Абитуриенты, зачисленные в университет по двум показателям.

Фамилия

школы

Иванов

30

Петров

45

  1. Разность. R3 = R1 \ R2

Исходные данные те же, что и в случае объединения. Результат вычитания включает только те строки первой таблицы, которых нет во второй. В нашем случае результатом будет таблица, которую можно назвать «Абитуриенты, зачисленные в университет только по результатам олимпиады».

Таблица Абитуриенты, зачисленные в университет только по результатам олимпиады.

Фамилия

школы

Петров

239

Сидоров

56

Операция «разность» не коммутативна, т.о. результатом операции R2 \ R1 будет таблица, содержащая список абитуриентов, зачисленных в университет только по результатам экзаменов.

Таблица Абитуриенты, зачисленные в университет только по результатам экзаменов.

Фамилия

школы

Алексеев

47

Сидоров

47

Степанов

239

  1. Декартово произведение. R3 = R1  R2

Отношения, участвующие в операции должны иметь разные схемы. Степень результирующего отношения равна сумме степеней отношений операндов, а мощность – произведению их мощностей. Если имена столбцов в R1 и R2 частично перекрываются, их следует переименовать.

Пусть имеем 2 отношения: «Студенты» и «Экзамены».

Таблица Студенты.

зачетки

Фамилия

12539

Иванов

10642

Петров

11560

Сидоров

Таблица Экзамены.

Предмет

Дата

информатика

14.01.2003

история

23.01.2003

Результатом будет таблица, которую, можно было бы назвать экзаменационной ведомостью если бы не отсутствие столбца «оценка»,.

Таблица Экзаменационная ведомость.

зачетки

Фамилия

Предмет

Дата

12539

Иванов

информатика

14.01.2003

12539

Иванов

история

23.01.2003

10642

Петров

информатика

14.01.2003

10642

Петров

история

23.01.2003

11560

Сидоров

информатика

14.01.2003

11560

Сидоров

история

23.01.2003

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

  1. Деление. R3 = R1  R2

Отношение – делимое должно содержать подмножество атрибутов отношения – делителя. Результирующее отношение содержит только те атрибуты делимого, которые отсутствуют в делителе. В него включаются только те строки, декартовы произведения которых с делителем содержатся в делимом.

Изменим немного содержимое таблицы «Экзаменационная ведомость». Пусть Сидоров сдал оба предмета не в дни, обозначенные в таблице «Экзамен», а Петров сдал в другой день экзамен по истории.

Таблица Экзаменационная ведомость (с измененными данными).

зачетки

Фамилия

Предмет

Дата

12539

Иванов

информатика

14.01.2003

12539

Иванов

история

23.01.2003

10642

Петров

информатика

14.01.2003

10642

Петров

история

25.01.2003

11560

Сидоров

информатика

15.01.2003

11560

Сидоров

история

20.01.2003

Если R1 – это таблица Экзаменационная ведомость (с измененными данными), а R2 – таблица «Экзамены», то в результате выполнения операции R1  R2 получим таблицу, содержащую список студентов, вовремя сдавших хотя бы один экзамен.

Таблица Студенты, вовремя сдавшие хотя бы один экзамен.

зачетки

Фамилия

12539

Иванов

10642

Петров

  1. Проекция. R2 = i1 i2… in (R1)

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

Выполним, например, проекцию отношения «Экзаменационная ведомость» (с измененными данными) (R1) на атрибуты «предмет», и «дата». Результатом операции 3 4 (R1) будет отношение «Даты сдачи студентами экзаменов по всем предметам».

Таблица Даты сдачи студентами экзаменов по всем предметам.

Предмет

Дата

информатика

14.01.2003

история

23.01.2003

история

25.01.2003

информатика

15.01.2003

история

20.01.2003

Если же выполнить проекцию на те же атрибуты отношения «Экзаменационная ведомость», то результатом будет отношение «Экзамены».

  1. Селекция (выбор). R2 = F (R1), где F –условие.

Операция выполняется над одним отношением. Результирующее отношение R2 содержит строки отношения R1, выбранные по некоторому заданному с помощью F признаку. Операция позволяет разделить таблицу по горизонтали.

Например, применение операции выбора по условию №школы = “239” к отношению «Абитуриенты, зачисленные в университет» даст отношение

Фамилия

школы

Петров

239

Степанов

239

  1. Соединение. R3 = R1 ⊲iθj⊳ R2,

где R1, R2 – исходные отношения, R3 – результирующее отношение, i- атрибут отношения R1, j – атрибут отношения R2, θ – оператор сравнения. (=, <, >, <>, <=, >=). Если θ – это равенство (=), то операция называется эквисоединением.

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

Отношения R1 и R2 должны иметь разные схемы. При выполнении соединения необходимо для каждого кортежа отношения R1 взять значение атрибута i и сравнить его со значением атрибута j каждого кортежа отношения R2.

Частным случаем операции соединения является операция естественного соединения , которая записывается как

R3 = R1 ⊲⊳ R2. В этом случае отношения R1 и R2 должны иметь в своем составе одинаковые атрибуты. Результирующее отношение включает все атрибуты, как первого, так и второго отношения, одинаковые атрибуты не дублируются. В результирующее отношение включаются только строки, в которых значения одинаковых атрибутов отношений равны.

Применим операцию естественного соединения к таблицам «Дни рождения абитуриентов» и «Дни экзаменов».

Таблица Дни рождения абитуриентов

Фамилия

школы

День

Иванов

30

03.01

Петров

239

08.12

Петров

45

10.01

Сидоров

56

19.08

Алексеев

47

16.03

Сидоров

47

18.01

Степанов

239

18.11

Таблица Дни экзаменов

Предмет

День

Информатика

03.01

Физика

10.01

Математика

18.01

Иностранный язык

25.01

Получим таблицу Абитуриенты, родившиеся в день сдачи одного из экзаменов.

Фамилия

школы

День

Предмет

Иванов

30

03.01

Информатика

Петров

45

10.01

Физика

Сидоров

47

18.01

Математика

Соседние файлы в предмете Базы данных