Смекни!
smekni.com

Методические указания по курсам «Теория информационных систем» и«Базы данных» Разделы «Реляционная алгебра» и«Язык sql» (стр. 1 из 6)

Нижегородский государственный университет

имени Н. И. Лобачевского

Кафедра информатики и автоматизации научных исследований

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

по курсам «Теория информационных систем» и «Базы данных»

Разделы «Реляционная алгебра» и «Язык SQL»

Нижний Новгород 2005


УДК 519.6

Методические указания по курсам «Теория информационных систем» и «Базы данных». Разделы «Реляционная алгебра» и «Язык SQL»

/Сост. Фомина И.А., Исаев С.А. - Нижний Новгород: Нижегородский государственный университет, 2005.

Материал предназначен для студентов специальности “Прикладная информатика” факультета ВМК (формы обучения дневная, вечерняя, заочная). Он также может быть интересен всем, кто в силу научных, учебных и практических целей заинтересован в рассмотрении абстрактной трактовки запросов в рамках реляционной модели и изучении языка запросов SQL. Данные методические указания могут быть использованы как помощь при изучении теоретического материала и при выполнении практических и лабораторных работ в терминал - классе.

Составители - канд. техн. наук, доцент Фомина И.А.

канд. техн. наук, ассистент Исаев С.А.

Рецензент - канд. техн.-наук, доцент Карпенко С.Н.

Нижегородский государственный университет имени Н.И.Лобачевского 2005г.


Часть1. Основы реляционных баз данных

Впервые термин "реляционная модель данных" появился в статье сотрудника фирмы IBM д-ра Кодда (Codd E.F., A Relational Model of Data for Large Shared Data Banks. CACM 13: 6, June 1970). Будучи математиком по образованию Кодд предложил использовать для обработки данных аппарат теории множеств (объединение, пересечение, разность, декартово произведение). Он показал, что любое представление данных сводится к совокупности двумерных таблиц особого вида, известного в математике как отношение – relation (англ.).

Реляционной является БД, в которой все данные, доступные пользователю, организованы в виде набора двумерных таблиц, а все операции над данными сводятся к операциям над этими таблицами.

Рис. 1.1. Некоторые операции реляционной алгебры

Предложив реляционную модель данных, Кодд создал и инструмент для удобной работы с отношениями – реляционную алгебру. Каждая операция этой алгебры использует одну или несколько таблиц (отношений) в качестве ее операндов и получает в результате новую таблицу, т.е. позволяет "разрезать" или "склеивать" таблицы (рис. 1.1).

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

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

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

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

В состав теоретико-множественных операций входят традиционные операции над множествами:

- объединение;

- пересечение;

- разность;

- декартово произведение.

Специальные реляционные операции включают:

- выборку;

- проекцию;

- естественное соединение;

- деление.

Операции объединения, пересечения и разности требуют от операндов совместимости по типу. Два отношения совместимы по типу, если:

  1. каждое из них имеет одно и то же множество имен атрибутов (одна и та же степень),
  2. соответствующие атрибуты (с одинаковыми именами) определены на одном и том же домене.

Отношение А Отношение В

ID_NUM NAME CITY AGE ID_NUM NAME CITY AGE
1809 Иванов Москва 45 1809 Иванов Москва 45
1996 Петров Нижний Новгород 39 1896 Галкин Иваново 40
1777 Сидоров Рязань 21

Объединением двух совместимых по типу отношений А и В (А È В) называется отношение с тем же заголовком, как в отношениях А и В, и с телом, состоящим из множества кортежей t, принадлежащих А или В или обоим отношениям.

А È В

ID_NUM NAME CITY AGE
1809 Иванов Москва 45
1996 Петров Нижний Новгород 39
1777 Сидоров Рязань 21
1896 Галкин Иваново 40

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

Пересечением двух совместимых по типу отношений А и В (А Ç В) называется отношение с тем же заголовком, как в отношениях А и В, и с телом, состоящим из множества кортежей t, принадлежащих одновременно обоим отношениям А и В. Операция пересечения двух отношений создает отношение, включающее все кортежи, входящие в оба отношения-операнда.

А Ç В

ID_NUM NAME CITY AGE
1809 Иванов Москва 45

Разностью двух совместимых по типу отношений А и В (А - В) называется отношение с тем же заголовком, как в отношениях А и В, и с телом, состоящим из множества кортежей t, принадлежащих отношению А и не принадлежащих отношению В.

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

А - В

ID_NUM NAME CITY AGE
1996 Петров Нижний Новгород 39
1777 Сидоров Рязань 21

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

Пусть отношение Асодержит имена всех текущих поставщиков, а отношение Вномера всех текущих деталей. Тогда А ´ В – это все текущие пары поставщик – деталь и деталь – поставщик.

Отношение А Отношение В

S1 P1
S2 P2
S3 P3
P4

А ´ В

S1 P1 S2 P1 S3 P1
S1 P2 S2 P2 S3 P2
S1 P3 S2 P3 S3 P3
S1 P4 S2 P4 S3 P4

На практике явное использование операции декартово произведение требуется только для очень сложных запросов. Эта операция включена в реляционную алгебру по концептуальным соображениям: (декартово произведение требуется как промежуточный шаг при определении операции θ - соединения, которая используется довольно часто).

Выборка – это сокращенное название θ - выборки, где θ означает любой скалярный оператор сравнения (

).

θ - выборкой, из отношения А по атрибутам Х и Y (А where X θ Y) называется отношение, имеющее тот же заголовок, что и отношение А, и тело, содержащее множества кортежей t отношения А, для которых проверка условия Х θ У дает значение истина. Атрибуты X и Y должны быть определены на одном и том же домене, а оператор должен иметь смысл для этого домена.

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

Пример операции выборки.

Отношение А.

ID_NUM NAME CITY AGE
1809 Иванов Москва 45
1996 Петров Нижний Новгород 39
1777 Сидоров Рязань 21
1896 Галкин Москва 30

A where CITY = 'Москва'

ID_NUM NAME CITY AGE
1809 Иванов Москва 45
1896 Галкин Москва 30

A where CITY = 'Москва' and AGE < 40

ID_NUM NAME CITY AGE
1896 Галкин Москва 30

Проекцией отношения А по атрибутам Х, Y,…,Z (A[X, Y,…Z]), где каждый из атрибутов принадлежит отношению А, называется отношение с заголовком {Х, Y,…,Z} и с телом, содержащим множество всех кортежей вида <Х:x, Y:y, ..., Z:z> таких, что в отношении A имеется кортеж, атрибут Х которого имеет значение x, атрибут Y имеет значение y, ..., атрибут Z имеет значение z. Тем самым, при выполнении операции проекции получается «вертикальное» подмножество данного отношения, то есть подмножество, получаемое исключением всех атрибутов, отношения-операнда с естественным уничтожением потенциально возникающих кортежей-дубликатов.