Лекция №7

 

Название лекции: Введение в теорию реляционных СУБД.

План:

1. Основные термины и понятия реляционных БД.

2. Основные реляционные операции

3. Правила Кодда

 

 

1) Основные термины и понятия реляционных БД.

Перед рассмотрением правил Кодда приведём основные термины и понятия реляционных БД.

Объект – сущность предметной области.

Атрибут (имя Атрибута, реквизит) – параметр объекта предметной области. (Свойство некоторой сущности).

Пример: Фамилия, Возраст – свойства объекта сотрудник.

Домен (атрибута) – множество допустимых значений, которые может принимать атрибут.

Пример: значение атрибута Возраст должно принадлежат интервалу [18…80]

Схема отношения – конечное множество [имен] атрибутов, определяющих объект. (Мощность схемы отношения = арности кортежей.)

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

 

 

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

Схема реляционной базы – множество используемых в приложениях схем отношений.

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

Реляционные операции – операции над отношениями. Результатом любой реляционной операции является также отношение.

Реляционное выражение – выражение над отношениями, составленное из реляционных операций. Реляционное выражение – тоже отношение.

Реляционный запрос – описание свойств (условий), которые должны удовлетворять интересующие пользователя данные.

Эквивалентной формой описания запроса является реляционное выражение.

СУБД – набор программных средств, обеспечивающих хранение и обработку данных в базе. Взаимодействие прикладной программы с базой данных выполняется через СУБД. Приложение взаимодействует с СУБД на некотором языке.

Язык описания данных (ЯОД, DDL) – язык, позволяющий описать структуру БД и создать БД с требуемой структурой.

Язык манипулирования данными (ЯМД, DML) – язык, позволяющий описать действия по чтению, добавлению, обновлению и удалению данных в БД.

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

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

Ограничения целостности – набор условий, определяющие целостность базы данных.

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

Примером ограничения диапазонов является определение доменов атрибутов. Примером структурного ограничения является определение ключей.

Транзакция – неделимая операция по изменению содержания БД. Выполнение транзакции завершается двумя способами:

- отмена транзакции (возврат в предыдущее состояние);

- регистрация транзакции: проверка и, при необходимости, восстановление целостности БД.

Итак, до и после выполнения транзакции база данных гарантированно находится в целостном состоянии. В течение выполнения транзакции целостность базы данных не контролируется.

Защита баз данных – это:

- защита БД от физических и логических разрушений;

- обеспечение санкционированного доступа к данным.

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

 

 

2) Основные реляционные операции

Операция объединения (соединения) – объединение множества кортежей двух отношений в одно общее отношение. Операция определена для двух отношений одинаковой арности.

Пусть R и S – отношения арности n.

Объединение RÈS = { (V1,V2 … Vn) │(V1…Vn)ÎR Ú(V1 … Vn)ÎS }

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

Пусть R и S – отношения арности n.

Разность: R – S = { (V1 … Vn) | (V1 … Vn)ÎR Ù (V1 … Vn)ÏS}

Операция декартового произведения – двух отношений R (арности n), и S (арности m) называется отношение арности m+n, кортежи которого составлены из кортежей R и S.

Пусть R – отношение арности n, S – отношение арности m.

Декартовое произведение для R= {(V1 … Vn)} и S= {(W1 … Wm)} это:

RхS = {(V1…Vn, W1…Wm) │ (V1…Vn)ÎRÙ(W1…Wm)ÎS}

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

Пусть R – отношение арности n, обозначим πi1,i2…im (R) – проекцию R на атрибуты i1, i2, …im, где 1 ≤ ij ≤ n, 1 ≤ j ≤ m

Проекция: πi1,i2…im (R) = {(a1 … am) | $ (b1 … bn) Î R | aj = bij " j = 1 … m }

Пример: проекция π2,1(R) – составлена из значений второго и первого элемента схемы отношения R.

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

Пусть F (предикат на множества атрибутов) – логическая формула, в которую входят:

- константы;

- имена атрибутов;

- функции;

- операции арифметических отношений <, >, ≤, ≥≠, =;

- логические операции Ù,Ú,¬.

Селекцией отношения R по формуле F – это отношение: δF(R )={(V1…Vn)ÎR| F≡1}

Естественное соединение.

Пусть отношение А имеет атрибуты{X1, X2…Xm, Y1, Y2…Yn}, а отношение В {Y1, Y2…Yn, Z1, Z2, …Zk}.

Атрибуты Y1, Y2 … Yn, и только они являются общими для этих отношений. Пусть атрибуты с одинаковыми именами определены на одних и тех же доменах.

Для простоты множества атрибутов обозначим буквами: X,Y,Z

Естественным соединением А и В (A Join B) называется отношение с атрибутами X, Y, Z, состоящими из кортежей (x, y, z), таких, для которых в отношении А атрибуты X=xÙY=y, при этом в отношении В атрибуты Y=yÙZ=z.

(A Join B) JoinС = A Join (B Join C)

Пример: А = {код, имя, статус, город} – поставщики, В = {номер, вес, город} – детали

 

Отношение A:

 

Код Имя Статус Город
Иванов Москва
Петров Казань
Сидоров Казань
Семенов Москва
Конкин Новгород

 

Отношение В:

 

Номер Вес Город
Москва
Казань
Ростов
Москва
Казань
Москва

 

Отношение A Join B:

 

Код Имя Статус Город Номер Вес
Иванов Москва
Иванов Москва
Иванов Москва
Петров Казань
Петров Казань
Сидоров Казань
Сидоров Казань
Семёнов Москва
Семёнов Москва
Семёнов Москва

 

Другие примеры операций над отношениями:

R:

A B C
a b c
d a f
c b d

S:

D E F
b g a
d a f

 

R È S:

     
a b c
d a f
c b d
b g a

&

Схему необходимо выбрать дополнительно

R – S:

 

     
a b c
c b d

 

R ´ S

 

A B C D E F
a b c b g a
d a f b g a
c b d b g a
a b c d a f
d a f d a f
c b d d a f

 

 

pA,C (R):

 

A C
a с
d f
c d

 

δB=b (R )

 

A B C
a b c
c b d

 

 

3) Правила Кодда (требования к реляционным БД)

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

Перечислим эти правила:

1) Явное представление данных.

Все данные должны быть представлены явно и их значения должны рассчитываться косвенными алгоритмами (исключение – однозначные отображения).

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

2) Гарантированный доступ к данным.

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

а) имени отношения;

б) указателя на кортеж (например, значение первичного ключа кортежа);

в) имени атрибута;

( имя_отношения, первичный ключ, атрибут)

3) Полная обработка неопределенных значений.

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

4) Доступ к базе данных в терминах реляционной модели.

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

5) Полнота подмножества реляционного языка.

Реляционная схема может поддерживать несколько языков, по крайней мере, язык DDL и DML. Однако хотя бы один из языков должен иметь синтаксис предложений, поддерживающий следующие понятия:

- определение данных (отношения, атрибуты, домены, ключи, ограничения целостности);

- определение виртуальных (мнимых) отношений образованных с помощью реляционных выражений на основе одного или нескольких отношений (определение представлений);

- манипулирование данными (интерактивное или программное);

- ограничение целостности;

- санкционированный доступ;

- управление транзакциями (начало транзакции, фиксация выполнения, отказ от выполнения).

 

6) Обновляемость представлений.

Все представления (виртуальные отношения) должны автоматически обновляться при модификации данных в базовых отношениях. Если, например, A= R È S, и А – это представление, то А должно обновляться как только меняется R или S.

7) Наличие высокоуровнего языка манипулирования данными.

Операции вставки, обновления и удаления должны применяться к отношению в целом:

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

8) Физическая независимость данных.

Прикладные программы не должны зависеть от используемых способов хранения данных на носителях информации и методов доступа к ним.

Физически независимые обеспечивает работоспособность приложений при изменении расположения данных в сети.

9) Логическая независимость данных.

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

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

10) Независимость контроля целостности.

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

11) Дистрибутивная независимость.

Реляционная система должна быть распространяема и переносима. Создание разнородных компьютерных систем требует обеспечения доступа к базам данных в различных OS и на различных платформах.

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

12) Согласования языковых уровней.

Если реляционная система имеет низкоуровневый язык доступа (элемент доступа – запись) и высокоуровневый язык доступ (элемент доступа – отношения). То выполнение низкоуровневых команд должно производиться с контролем целостности, так же как и при высокоуровневых командах.