- •Основы баз данных. Введение.
- •БзХранятся не только данные, но и знания о применении этих данных. Реализуются они в виде процедур и алгоритмов. Выборки обрабатывают данные.
- •История БнД.
- •Проблемы бд:
- •Состав БнД.
- •Процесс проектирования базы данных.
- •Er-модель (модель Чена).
- •Основные понятия:
- •Виды связи
- •Рекурсивные связи
- •Представление связей более высокого порядка (не бинарных).
- •Избыточное дублирование.
- •Реляционная модель данных.
- •12 Правил Кодда, которым должна удовлетворять реляционная база данных.
- •Операции над данными.
- •Реляционная алгебра.
- •Свойства реляционных операций.
- •Понятие функциональной зависимости (ф.З).
- •Запись запросов на языке реляционной алгебры.
- •Проектирование реляционной базы данных.
- •Методы проектирования.
- •7 Правил Джексона.
- •Язык доступа к данным, основанный на исчислении с переменными кортежами.
- •Атрибуты, используемые для описания таблиц.
- •Обработка ссылочной целостности.
- •Операторы манипулирования данными.
- •Как задается условие?
- •Запросы, которые реализуются на основе соединения.
- •Подзапрос.
- •Использование квантора exists для поиска пересечения и разности.
- •Квантор общности моделирующий операцию деления.
- •Соответствия между операциями реляционной алгебры и sql.
- •Технологии клиент-сервер.
- •1 Вариант - файловый сервер.
- •2 Вариант – удаленный доступ.
- •3 Вариант – сервер Базы Данных.
- •4 Вариант – сервер приложений.
- •Внутренняя модель данных.
- •B-дерево.
- •Язык query by example (qbe)
- •Операции выборки в отношениях, имеющих древовидную структуру
- •Операции запоминания
- •Библиотечные функции
12 Правил Кодда, которым должна удовлетворять реляционная база данных.
Правило информации.
Информация в реляционной базе данных должна быть представлена исключительно на логическом уровне и только в таблицах, все значения в таблице должны быть атомарными.
Правило гарантированного доступа.
Доступ к таблице должен осуществляться только с использованием имени таблицы, именем атрибута, ключа.
Поддержка недействительных значений.
Настоящая реляционная база данных должна позволять вводить неопределенное значение (null) и должны быть значения которые есть, но пока нам не известны.
Правило динамического каталога, основанного на реляционной модели.
Доступ к описанию базы данных осуществляется по тем же правилам, что и к реально хранимым данным.
Правило исчерпывающего подъязыка данных.
Языки могут быть разные, они должны содержать:
Описание данных;
Описание представлений – части информации, нужной для конкретного представления;
Обработка данных – интерактивная и программная. Интерактивная – запрос и тут же ответ, а программная – пишем программу запросов, обрабатываем, получаем результат.
Условия целостности. Целостность должна поддерживаться на уровне доменов, на уровне атрибутов, на уровне соответствия атрибутов. Кроме ссылочной целостности еще есть объектная целостность (в объектной таблице должны быть уникальные кортежи). Каскадное удаление означает, что при удалении объекта, удаляются и все его связи.
Идентификация прав доступа пользователя к данным. Это необходимо для исключения несанкционированного доступа.
Границы транзакции (начало – завершение - отмена). Транзакция – это работа, которая должна быть либо целиком выполнена, либо целиком не выполнена.
правило обновления представлений.
Правило добавления, обновления и удаления.
Таблицы должны позволять добавлять, удалять и корректировать записи.
Правило физической независимости данных.
Правило логической независимости данных.
Правило независимости условий целостности.
Условия целостности должны храниться в базе данных, а не в программе.
Правило независимости условий распространения.
Реляционная база данных не должна быть привязана к конкретным потребностям конкретного пользователя.
Правило единственности.
Работа с базой данных должна осуществляться на едином языке. И никакой язык низкого уровня не должен позволять обходить ограничения.
Операции над данными.
Существует три класса операций:
Реляционная алгебра – процедурный язык, операндами выступают таблицы, и в ответе мы тоже получаем таблицы.
Исчисление кортежей (SQL) – декларативный язык. В качестве переменных выступают кортежи.
Исчисление доменов (QBE). В качестве переменных выступают столбцы.
Реляционная алгебра.
Договоримся, что малыми латинскими буквами мы будем обозначать таблицы, большими латинскими буквами – атрибуты и множества атрибутов. Например, r(R) – это таблица r со множеством атрибутов R.
R(A,B,C.D) – ключевые атрибуты подчеркиваются - R={A,B,C,D}.
Операции:
Операция объединения.
Эта операция определена над двумя таблицами с одинаковой схемой, в результате получается третья таблица с такой же схемой, которая сдержит кортежи из первой и второй таблицы без повторений.
Пример:
r(A,B,C) s(A,B,C) = q(A,B,C)
a1bc1 a2bc a1bc1
abc1 a1bc1 abc1
ab1c ab1c ab1c
a2bc
Операция разность.
Эта операция определена над двумя таблицами с одинаковой схемой, результатом является третья таблица с такой же схемой, в которой есть кортежи, которые есть в первой таблице, но нет во второй.
Пример:
r(A,B,C) \ s(A,B,C) = q(A,B,C)
a1bc1 a2bc abc1
abc1 a1bc1
ab1c ab1c
Декартово произведение.
Операция определена над двумя таблицами с произвольной схемой, в результате получаем третью таблицу, в схеме которой используются все атрибуты обоих таблиц, каждый кортеж образуется комбинацией кортежей первой таблицы с каждым кортежем второй таблицы.
r(A,B) s(C,D) = q(A,B,C,D)
ab cd abcd
a1b cd1 abcd1
a1bcd
a1bcd1
Операция пересечения.
Эта операция не является основной, ее можно выразить через операцию разности: rs=r\(r\s).
Эта операция определена над двумя таблицами с одинаковыми схемами, в результате получается третья таблица с той же самой схемой, которая содержит данные, встречающиеся в первой и второй таблице.
Пример:
r(A,B) s(A,B) = q(A,B)
ab ab ab
a1b1 a1b a1b
a1b a2b2
a2b1
Операция селекции ().
Операция определена над одной таблицей, в результате получаем таблицу с той же схемой, в которой те кортежи, которые удовлетворяют записанному условию.
Пример:
R(A,B,C) = g(A,B,C)
123 123
245 138
138
451
210
При этом дублирование не допускается.
= q’(A,B,C)
210
Операция проекции ().
В качестве исходных данных имеем одну таблицу и в ответе одну таблицу, которая содержит только указанные столбцы. XR – X является подмножеством R.
Пример:
R(A,B,C) =q(A) = q’(B,A)=q’(A,B) порядок столбцов
112 1 11 11 не фиксируется
123 2 21 12
145 41 14
223 22 22
114
117
224
Операция соединения (основная).
Обозначение: Join или.
Существует внутренняя операция соединения и внешняя, при этом внешняя делится на правую и левую.
Внутренняя
а) естественное соединение – осуществляется по равенству значений в одноименных столбцах. Одноименные столбцы имеют одно и тоже имя и определены на одних и тех же доменах. Для соединения используются две таблицы, в результате получаем третью таблицу, кортежи которой получаются комбинацией тех кортежей из исходных таблиц, которые имеют одинаковые значения в одноименных столбцах. Операция соединения коммутативна относительно операндов, т.е. от перестановки мест результат не изменяется.
r(A,B,C) s(A,B,D) = q(A,B,C,D)
11a 112a
11b 112b
123 42c 113a
113b
421c
операция соединения для таблиц с одинаковыми схемами равносильна операции пересечения:
r(A,B) s(A,B) = q(A,B)
11 11 11
12 42 42
14
42
Операция соединения для таблиц с разными схемами равносильна декартовому произведению:
r(A,B) s(C,D) = q(A,B,C,D)
11 cd 11cd
12 c1d 11c1d
14 12cd
42 12c1d
14cd
14c1d
42cd
42c1d
б) Тета-соединение ().
Это соединение не обязательно по равенству, операция соединения происходит по любой операции сравнения(=(эквивалентное соединение),<>, <,>).
Тета-соединение осуществляется не обязательно по одноименным столбцам, а по разным тоже, но столбцы должны быть определены на одних и тех же доменах.
r(A,B,C) s(D,E) = q (A,B,C,D,E)
B=D
a1c 1e a1c1e
a12c 1e1 a1c1e1
a11c2 2e a2c2e
a13c 2e1 a12c2e1
a11c21e
a11c21e1
r(A,B,C) s(D,E) = q (A,B,C,D,E)
B>D
a1c 1e a12c1e
a12c 1e1 a12c1e1
a11c2 2e a13c1e1
a13c 2e1 a13c1e
a13c2e
a13c2e
внешнее соединение. Рассмотрим на примере естественного соединения. тогда внешнее соединение выполняется по тем же правилам, что и естественное, но в ответ выписываются строки из левой таблицы, если соединение левое (из правой таблицы, если соединение правое).
Пример:
r(A,B,C) s(A,D) = q(A,B,C,D)
left
1ac 1d 1acd
2a1c 2d 1acd1
1ac1 1d1 2a1cd
3ac 1ac1d
4a1c 1ac1d1
3ac null
4a1c null
операция деления. (операция обратная декартовому произведению).
Пусть нам дано: r(R), s(S), тогда =R\S,
а r’()=rs={t|S}, где r’- частное.
То есть нужно найти такое отношение r’, что оно будучи декартово перемножено с s дает приблизительно r.
Пример:
r(A,B,C,D) s(C,D) r[CD CD]s = r’(A,B)
abef ef ab
abcd dc ef
abdf
efdc
efef
afdc
Проверка:
r’s = A,B,C,D
abef
efef
abdc
efdc
операция деления равносильна квантору общности в математической логике.
Эту операцию можно выразить через другие операции:
Убедимся, что операция деления равносильна квантору общности:
Пусть у нас есть данные о том, какой пилот каким типом самолета может управлять –
Право (пилот, тип самолета)
Иванов ТУ 154
Иванов ИЛ 62
Иванов ЯК 42
Петров ТУ 154
Петров ИЛ 62
Смирнов ТУ 154
Смирнов ИЛ 62
Смирнов ЯК 42
Смирнов АН 24
Панин ИЛ 62
Запрос: найти пилотов, которые могут управлять всеми типами самолетов из следующего списка: ТУ 154;
Ил 62;
ЯК 42;
То есть q(тип самолета)
ТУ 154
Ил 62
ЯК 42
правоq
Иванов
Смирнов
Запрос: нужно найти пилотов, которые умеют управлять самолетом ТУ 154
q’(тип самолета)
ТУ 154
Право q’
Иванов
Петров
Смирнов