Лекция №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) Согласования языковых уровней.
Если реляционная система имеет низкоуровневый язык доступа (элемент доступа – запись) и высокоуровневый язык доступ (элемент доступа – отношения). То выполнение низкоуровневых команд должно производиться с контролем целостности, так же как и при высокоуровневых командах.