
- •Основы баз данных. Введение.
- •БзХранятся не только данные, но и знания о применении этих данных. Реализуются они в виде процедур и алгоритмов. Выборки обрабатывают данные.
- •История БнД.
- •Проблемы бд:
- •Состав БнД.
- •Процесс проектирования базы данных.
- •Er-модель (модель Чена).
- •Основные понятия:
- •Виды связи
- •Рекурсивные связи
- •Представление связей более высокого порядка (не бинарных).
- •Избыточное дублирование.
- •Реляционная модель данных.
- •12 Правил Кодда, которым должна удовлетворять реляционная база данных.
- •Операции над данными.
- •Реляционная алгебра.
- •Свойства реляционных операций.
- •Понятие функциональной зависимости (ф.З).
- •Запись запросов на языке реляционной алгебры.
- •Проектирование реляционной базы данных.
- •Методы проектирования.
- •7 Правил Джексона.
- •Язык доступа к данным, основанный на исчислении с переменными кортежами.
- •Атрибуты, используемые для описания таблиц.
- •Обработка ссылочной целостности.
- •Операторы манипулирования данными.
- •Как задается условие?
- •Запросы, которые реализуются на основе соединения.
- •Подзапрос.
- •Использование квантора exists для поиска пересечения и разности.
- •Квантор общности моделирующий операцию деления.
- •Соответствия между операциями реляционной алгебры и sql.
- •Технологии клиент-сервер.
- •1 Вариант - файловый сервер.
- •2 Вариант – удаленный доступ.
- •3 Вариант – сервер Базы Данных.
- •4 Вариант – сервер приложений.
- •Внутренняя модель данных.
- •B-дерево.
- •Язык query by example (qbe)
- •Операции выборки в отношениях, имеющих древовидную структуру
- •Операции запоминания
- •Библиотечные функции
Использование квантора exists для поиска пересечения и разности.
Пересечение
Найти множество городов, где есть поставщики и детали ( организуем его следующим образом: выбираем город поставщика и проверяем хранятся ли в этом городе детали).
Select distinct город
from Поставщики 1
where exists (select * from Детали 2
where 1.город=2.город)
Разность
A B
Найти множество городов, где есть поставщик, но нет детали.
В этом случае в предыдущий запрос нужно вместо exists поставить not exists.
Квантор общности моделирующий операцию деления.
Реализация
деления идет на основе формулы
.
Выдать фамилии поставщиков, которые поставляют все детали (иначе выдать фамилии поставщиков такие, что для всех деталей существует поставщик их поставляющий).
select фамилия from Поставщики 1
where not exists (select * from Детали 2
where not exists (select * from Поставки 3
where 1.код-поставщика=3.код-поставщика
and 2.код-детали=3.код_детали))
Соответствия между операциями реляционной алгебры и sql.
Мощность языка SQL совпадает с мощностью реляционной алгебры, все операции реляционной алгебры можно записать и на языке SQL.
Запись части операций мы рассмотрели выше, теперь рассмотрим оставшиеся.
Проекция записывается следующим образом
Select ст1, ст2, ст3 from таблица.
Селекция записывается через where условие.
Объединение (union) рассмотрим на примере:
Перечислить города, в которых находится поставщик или деталь
Select город from Поставщики
union all (select город from Детали).
Декартово произведение
Select 1.*, 2.* from Поставщики 1, Детали 2
А если еще записать [where условие], то тогда это будет соединение.
Технологии клиент-сервер.
Сервер – это компьютер, управляющий некоторыми ресурсами и предоставляющий их для коллективного использования. Сервера бывают почтовые, баз данных, вычислительные.
Клиент – это программа или компьютер, обращающийся к услугам сервера
Существуют разные технологии клиент-сервер.
Любая программа может быть представлена из нескольких частей:
Ввод/вывод (интерфейсная часть);
Вычисление на основе каких-либо бизнес правил;
Обращение к данным;
Управляющая часть, создает единый алгоритм.
В зависимости от того, как поделить эти части между сервером и клиентом, получаются различные технологии.
1 Вариант - файловый сервер.
Введем обозначения: К – клиент, С – сервер.
К выполняет 1,2,4 части, а на С содержится информация, необходимая для запроса, т.е. С выполняет 3 часть.
запрос
К С
ответ-файл
В данной технологии основная нагрузка падает на клиента.
2 Вариант – удаленный доступ.
Данная
технология позволяет получить только
ту информацию, которая нас интересует,
а не весь файл.
Запросы пишутся на динамическом SQL. А в ответ получаем ту порцию информации, которую запросили, эта порция информации называется курсором.
Динамический SQL - это операторы SQL, которые передаются и выполняются не сервере.
Имеют место следующие операторы:
Prepare имя_оператора from строка
Select
Insert
Delete
Update
Execute имя_оператора – позволяет выполнить запомненный на сервере оператор;
Drop имя_оператора – позволяет удалит оператор;
Эти операторы передаются в интерактивном режиме, а если хотим записать в рамках какой-то программы, то, например на Паскале, это будет выглядеть так:
Exec sql “sql оператор”.
Описание курсора на SQL:
Declare имя_курсора [scroll] cursor for подзапрос [for update].
Курсор может быть обычным, то есть просматриваемым в одном направлении, от начала к концу, если стоит scroll, то просматривать курсор можно в любом направлении. Если стоит for update, то это значит, что курсор изменяемый, все изменения будут запоминаться на сервере.
Операции с курсором:
Open имя_курсора – позволяет получить курсор;
Fetch имя_курсора – позволяет перейти к следующей записи курсора, если перед именем курсора поставить Last, то перейдем к последней записи, First – к первой записи, Current к текущей;
Close имя_курсора – закрытие курсора, но он остается определенным;
Free имя_курсора – удаление курсора.