
- •Введение
- •1. Информационная система (ис):
- •2.Типы и структуры данных
- •2.1.Основные типы данных
- •2.1.Методы доступа к данным
- •2.1.1.Методы поиска по дереву
- •2.2.2.Хеширование
- •3. Представление данных с помощью модели "сущность-связь".
- •3.1.Элементы модели
- •3.2.Диаграмма "сущность-связь".
- •4. Даталогические модели
- •4.1.Иерархическая модель данных
- •4.1.1.Структура данных
- •4.1.2.Операции над данными, определенные в иерархической модели:
- •4.1.3. Ограничения целостности
- •4.2. Сетевая модель данных
- •4.2.1. Структура данных
- •4.2.2.Операции над данными
- •4.3. Реляционная модель данных
- •1. Основные понятия
- •4.3.1. Структура данных
- •4.3.2. Фундаментальные свойства отношений
- •4.3.2.1. Отсутствие кортежей-дубликатов
- •4.3.2.2. Отсутствие упорядоченности кортежей
- •4.3.2.3. Отсутствие упорядоченности атрибутов
- •4.3.2.4. Атомарность значений атрибутов
- •4.3.3.Свойства отношений.
- •4.3.4. Реляционная модель и модель сущность - связь
- •4.3.4.1. Преобразование er-модели в реляционную модель
- •5. Языки запросов к реляционным базам данных
- •5.1. Реляционная алгебра
- •Общая интерпретация реляционных операций
- •Замкнутость реляционной алгебры и операция переименования
- •Правила записи выражений реляционной алгебры
- •5.2. Реляционное исчисление кортежей
- •5.3. Реляционное исчисление доменов
- •5.3. Ограничения реляционных баз данных
- •5.4. Постреляционные субд
- •6. Проектирование информационных систем и баз данных
- •Информационное моделирование процессов предметной области и применение потоковых диаграмм
- •7. Проектирование реляционных баз данных с использованием нормализации
- •7.1. Основные свойства нормальных форм
- •7.2. Функциональная зависимость
- •2. Ни для какого зависимость
- •7.2.1. Аксиомы функциональных зависимостей
- •7.2.2. Вычисление замыканий
- •7.2.3. Полная функциональная зависимость
- •7.2.4. Транзитивная функциональная зависимость
- •7.2.5.2. Вторая нормальная форма
- •7.2.5.3. Третья нормальная форма
- •7.2.5.4. Нормальная форма Бойса-Кодда
- •7.2.5.5. Четвертая нормальная форма
- •7.2.5.6. Пятая нормальная форма
- •7.2.6. Функциональные зависимости и проектирование базы данных.
- •Дополнительная литература
Замкнутость реляционной алгебры и операция переименования
Как мы говорили, каждое отношение характеризуется схемой (или заголовком) и набором кортежей (или телом). Поэтому, если действительно желать иметь алгебру, операции которой замкнуты относительно понятия отношения, то каждая операция должна производить отношение в полном смысле, т.е. оно должно обладать и телом, и заголовком.
Хотя в основе теоретико-множественной части реляционной алгебры лежит классическая теория множеств, соответствующие операции реляционной алгебры обладают некоторыми особенностями.
Два отношения совместимы по объединению в том и только в том случае, когда обладают одинаковыми заголовками. Более точно, это означает, что в заголовках обоих отношений содержится один и тот же набор имен атрибутов, и одноименные атрибуты определены на одном и том же домене.
Другие проблемы связаны с операцией взятия прямого произведения двух отношений. В теории множеств прямое произведение может быть получено для любых двух множеств, и элементами результирующего множества являются пары, составленные из элементов первого и второго множеств. Поскольку отношения являются множествами, то и для любых двух отношений возможно получение прямого произведения. Но результат не будет отношением! Элементами результата будут являться не кортежи, а пары кортежей.
Поэтому в реляционной алгебре используется специализированная форма операции взятия прямого произведения - расширенное прямое произведение отношений. При взятии расширенного прямого произведения двух отношений элементом результирующего отношения является кортеж, являющийся конкатенацией (или слиянием) одного кортежа первого отношения и одного кортежа второго отношения.
По поводу теоретико-множественных операций реляционной алгебры следует еще заметить, что все четыре операции являются ассоциативными. Т. е., если обозначить через OP любую из четырех операций, то (A OP B) OP C = A OP (B OP C), и следовательно, без введения двусмысленности можно писать A OP B OP C (A, B и C - отношения, обладающие свойствами, требуемыми для корректного выполнения соответствующей операции). Все операции, кроме взятия разности, являются коммутативными, т.е. A OP B = B OP A.
Ниже используются обозначения:
A,B,C... (возможно с индексами) - имена полей (атрибуты), причем считается, что для каждого имени однозначно определен тип данных (домен) и этот тип неструктурный;
r,s,t... (возможно с индексами) - переменные типа запись (кортеж), причем считается, что порядок полей в записи не существенен, т.е. записи с одинаковым множеством полей (и их значениями) одинаковы;
R,S,T... (возможно с индексами) - переменные типа файл (таблица, отношение), причем считается, что порядок записей в файле не существенен и одинаковых записей в файле не может быть, т.е. файлы с одинаковым множеством записей одинаковы.
Базовый набор файлов: файлы, содержащие одну запись; базовые файлы определяются с помощью операции - (имя_поля: значение_поля, ...)
Базовый набор операций над файлами.
Теоретико-множественные: - (объединение, пересечение и разность, соответственно). Операции применимы только к парам файлов(таблиц, отношений), имеющих одинаковую структуру (схему отношения базы данных).
Пусть R, S – отношения с эквивалентной схемой (множества кортежей с одинаковым набором атрибутов), r1...rk - кортежи отношения R и s1...sk - кортежи отношения S
объединение (
) - отношение со схемой, эквивалентнойR и S, включающее все различные кортежи из R и S.
разность - (
) - отношение со схемой, эквивалентнойR и S, включающее все кортежи из R, которые отсутствуют в S
пересечение (
) - отношение со схемой, эквивалентнойR и S, включающее только совпадающие в R и S кортежи
Декартово произведение (
)- определено для отношений, с различными атрибутами, схема результата представляет собой конкатенацию схем отношений схем аргументов, результатом является множество всех кортежей
, где
.
Тета-соединение.
(эквивалентно
. Определяет отношение, которое содержит кортежи из
, удовлетворяющих предикату
. Предикат
может иметь вид простого сравнения
, где
. Если
, то говорят о соединении по эквивалентности.
Естественное соединение (
),(
) Естественным соединением называется соединение по эквивалентности двух отношений
и
, выполненное по всем общим атрибутам, из результатов которого исключается по одному экземпляру каждого общего атрибута.
, где операция соединения записей
и
применима только к парам записей, у которых одноименные поля имеют одинаковое значение. Соединение таких записей
и
дает запись, в которую входят все поля (со своими значениями) из
и
(одноименные поля не дублируются). В случае, когда имена полей записей не пересекаются, имеем декартово произведение отношений, участвующих в операции.
ПРИМЕР.(A:1,B:2)*(B:2,C:3)=(A:1,B:2,C:3);
(A:1,B:2)*(C:3,D:4)=(A:1,B:2,C:3,D:4) - в случае файлов без одноименных полей, операция применима к каждой паре записей;
(A:1,B:2)*(B:3,D:4) - к такой паре записей операция не применима.
Внешнее соединение. Иногда возникает ситуация, для кортежа одного отношения не находится соответствующий кортеж в другом отношении. Иначе говоря, в столбцах соединения оказываются несовпадающие значения. Если строка одного отношения должна быть представлена в результатах соединения, даже если в другом отношении нет совпадающего значения. Такое соединение называется внешним.
Левым внешним соединением называется соединение при котором в результирующее отношение включается также кортежи отношения
, не имеющие совпадающих значений в общих столбцах отношения
. Для обозначения отсутствующих значений во втором отношении используются значение NULL. Аналогично определяется правое внешнее соединение
. Покажите, что
.
Реляционные:
Выборка ([P](R)) (
) – отношение с набором кортежей из R, удовлетворяющих условию
. Условие
строится как обычное логическое выражение - из имен полей и констант с помощью операций сравнения
и логических операций
.
[P1 & P2](R)=[P1](R)
[P2](R)
[P1
P2](R)=[P1](R)
[P2](R)
[
P](R)= R-[P](R)
Проекция [имя_поля,...](R) (
) - файл записей из R, в которых удалены все поля, кроме перечисленных в операции. Тем самым, при выполнении операции проекции выделяется "вертикальная" вырезка отношения-операнда с естественным уничтожением потенциально возникающих кортежей-дубликатов.
Деление RS. Операция применима, если все поля «делителя» S являются полями «делимого» R; пусть A1,A2,... - поля файла S, а A1,A2,...B1,B2,... - поля файла R. Результат деления будет файлом с полями B1,B2,... RS={t: такие, что (t*s)R для любой записи s из S}. Отметим, что в этом выражении записи t и s не имеют общих полей, поэтому операция * это просто соединение записей.
ПРИМЕР. Пусть R - файл с полями (A,B), S - файл с полем (A), T=(RS) - будет файлом с полем (B):
B
T
A
S
Дополнительные операции
Переименование полей [A1B1,A2B2,...](R). A1,A2,... должны быть именами полей файла R, а поля B1,B2,... должны иметь соответствующий тип. Результат операции будет содержать те же записи, что и файл R, но поля A1,A2,... будут соответственно переименованы на B1,B2,... Эта операция не оказывает влияние на содержимое отношения, но изменяет его схему.
Расширение
Добавление атрибута, вычисляемого с помощью <выражения>, под именем <имя>. Помимо арифметических операций и операций сравнения могут быть использованы также итоговые функции (к списку скалярных значений):
COUNT() – количество
SUM() – сумма
AVG() – среднее
MAX() - максимальное
MIN() – минимальное
в) подведение итогов
SUMMARIZE <отношение> BY <список атрибутов> ADD <выражение1> AS <имя1>, ... , <выражение1> AS <имя1>
Групповые вычисления. Выполняется расчет значения и добавление нового атрибута под именем <имя>, но предварительно выполняется проецирование на атрибуты, указанные в <список атрибутов>. При проецировании множество кортежей исходного отношения разобьется на группы одинаковых строк отношения – проекции. Для каждой такой группы и выполняется расчет <выражение>. Так как <выражение> применяется к группе, оно должно быть обязательно итоговой функцией от атрибута или скалярного выражения, применяемой уже не к списку скалярных значений, а к столбцу значений в одной такой группе
Рассмотрим примеры: В качестве операндов в рассмотренных ниже примерах используются следующие отношения:
P(D1, D2, D3) |
Q(D4,D5) |
R(M, P, Q, T) |
S(A, B) | |||||||
1 |
11 |
x |
x |
1 |
x |
101 |
5 |
a |
5 |
a |
2 |
11 |
y |
x |
2 |
y |
105 |
3 |
a |
10 |
b |
3 |
11 |
z |
y |
1 |
z |
500 |
9 |
a |
15 |
c |
4 |
12 |
x |
|
|
w |
50 |
1 |
b |
2 |
d |
|
|
|
|
|
w |
10 |
2 |
b |
6 |
a |
|
|
|
|
|
w |
300 |
4 |
b |
1 |
b |
|
|
|
|
|
|
|
|
|
|
|
Взятие проекции:
R(M, T) | |
x |
a |
y |
a |
z |
a |
w |
b |
|
|
|
|
Объединение отношений:
Пересечение отношений:
Разность отношений:
Декартово произведение:
Деление:
Естественное соединение:
q-соединение:
Эта операция предназначается для тех случаев, когда нам нужно соединить вместе два отношения на основе некоторых условий. Пусть отношения А и В не имеют общих имен атрибутов и q определяется так же, как и в операции выборки. Тогда q-соединением отношения А по атрибуту Х с отношением В по атрибуту Y (A join B on X q Y) называется отношение с тем же заголовком, что и при декартовом произведении отношений А и В, и с телом, содержащим множество кортежей t, таких что t принадлежит этому декартову произведению и вычисление условия "X q Y" дает значение истина для этого кортежа. Атрибуты X и Y должны быть определены на одном и том же домене, а операция должна иметь смысл для этого домена.
Если q обозначает "равно", то q-соединение называется эквисоединением. Из определения следует, что результат эквисоединения должен включать два таких атрибута, значения которых должны быть равны в каждом кортеже отношения. Если один из этих атрибутов исключается (что может быть сделано операцией проекции), результатом будет просто естественное соединение.
Операции изменения тела отношения
а) присвоение
<выражение-цель> := <выражение-источник>
Замена в отношении <выражение-цель> всех кортежей на кортежи отношения <выражение-источник>. При этом их схемы должны быть эквивалентны.
Обычно применяют в качестве <выражение-цель> имя отношения, а в качестве <выражение-источник> - выражение реляционной алгебры.
б) вставка INSERT <выражение-источник> INTO <выражение-цель> Добавление кортежей <выражение-источник> в отношение <выражение-цель>. Схемы отношений также должны быть эквивалентны.
в) обновление
UPDATE <выражение-цель> <список элементов>
Изменение значений атрибутов в отношении <выражение-цель> в соответствии со <список элементов>, который представляет собой последовательность вида <атрибут>:=<скалярное выражение>,…, <атрибут>:=<скалярное выражение>
г) удаление
DELETE <выражение-ограничение> FROM <выражение-цель>
Удаление в отношении <выражение-цель> кортежей, перечисленных в <выражение-ограничение>.