
- •1.1. Архитектура бд
- •2. Тема 2. Системы управления бд (субд). Выбор систем управления бд. Функции субд.
- •3.1. Жизненный цикл бд. Этапы жц бд.
- •3.1.1. Оценка работы и поддержка б.Д. Производится оценка с точки зрения выполнения требований пользователей. В случае необходимости в систему вносятся изменения.
- •3.1.1.1. Документальные системы
- •3.1.1.2.Обобщенная функциональная структура дипс.
- •3.1.1.3. Коммерческие б.Д.
- •3.1.1.4. Коммерческие базы данных.
- •3.1.1.5. Распределенная обработка данных. Распределенные базы данных
- •3.2. Литература
- •4.1. Уровни.
- •4.2. Этапы проектирования.
- •4.3.Трехуровневая архитектура организации бд
- •4.4. Этапы проектирования: исследование проблемы, этап анализа, проектирование, реализация, внедрение, сопровождение.
- •4.5. Проектирование бд.
- •4.5.1. Этапы проектирования.
- •Тема 5. Средства и методы проектирования бд. Методика диаграмм взаимосвязей между объектами erd-диаграммы. Использование case-технологий при проектировании бд.
- •5.1. Базовые понятия.
- •5.2. Case - приложение eRwin
- •5.2.1. Объекты в eRwin
- •5.2.2. Связь в Erwin
- •6.1. Правила отношений между сущностями. Определение ключей
- •6.2. Нормализация бд. Денормализация бд.
- •Тема 7. Реляционная модель бд. Таблицы. Ограничения целостности данных. Реляционная алгебра. Реляционное исчисление.
- •Тема 8. Организация процессов обработки данных в бд. Обработка транзакций
- •Понятие транзакции.
- •9.1.1. Операторы определения данных ddl
- •9.1.2. Операторы манипулирования данными Data Manipulation Language dml
- •9.1.3. Язык запросов Data Query language (dql)
- •9.1.4. Средства администрирования данных
- •9.1.5. Программный sql
- •9.2. Оператор выборки данных select, использование условий поиска, сортировка результатов запроса. Синтаксис оператора select.
- •C.10. Тема 10. Простые запросы и правила их выполнения. Особенности многотабличных запросов. Объединение таблиц. Использование вложенных запросов
- •10.1. Простые запросы и правила их выполнения
- •10.2. Особенности многотабличных запросов
- •10.3. Объединение таблиц
- •10.4. Использование вложенных запросов
- •Тема 11. Внесение изменений в бд. Добавление информации в бд, удаление данных, изменение существующих данных.
- •C.11.1.Внесение изменений в базу данных
- •Удаление данных
- •11.2. Изменение существующих данных
- •12.1. Специальные аспекты работы с бд. Процедура индексирования.
- •12.2. Триггеры
- •12.2.1. Ключевые слова и параметры
- •12.2.2. Компоненты триггера
- •12.2.3.Типы триггеров.
- •12.2.4.Включение и выключение триггеров.
- •C.12.2.5. Удаление триггера
- •C.12.2.6. Корреляционные имена
- •12.3. Процедуры и функции
- •12.4. Функция
- •12.5.Курсоры.
- •Тема 13. Физическая организация бд на примере Oracle9i. Организация табличных пространств, журналов транзакций. Серверные процессы. Структуры памяти и взаимодействие между процессами.
- •13.1. Архитектура бд.
- •14.1. Системы обработки транзакций oltp и olap - технологий
- •14.2. Хранилища данных. Многомерные хранилища данных
- •14.3. Методы аналитической обработки (olap)
- •14.3.1. Хранилища данных
- •14.3.2. Причины внедрения информационных систем на основе хранилищ данных
- •Литература
- •14.5. Olap в России
- •Тема 15. Основы фракталов. Фрактальная математика. Фрактальные методы в архивации. Управления складами данных
- •15.1. Понятие "фрактал"
- •15.2. Классификация фракталов
- •15.2.1. Геометрические фракталы
- •15.2.2. Алгебраические фракталы
- •C.15.2.3. Стохастические фракталы
- •C.15.3. Системы итерируемых функций
- •15.4. Фрактальное сжатие
- •15.5. История фрактального сжатия
- •15.6. Идея фрактальной архивации
- •15.7. Сравнение с jpeg
- •15.8. Литература
- •Темы рефератов
12.5.Курсоры.
В ответ на запросы пользователя SQL может возвращать многие сотни тысяч сторон, общим объемом в 10 Мбайт. В системе не каждый может иметь достаточный объем памяти и обработать их.
Кроме того, обычно клиент работает с небольшой частью данных в определенный момент времени, например с одной строкой, а не со всем набором строк.
Т.е. клиенту не нужен одновременно весь набор данных, и для него предпочтительно получать данные порциями.
Механизмом, обеспечивающим хранение результата выборки и представляют пользователю возможность доступа к любой строке выборки по ее номеру, являются курсоры.
Пользователь может работать в каждый момент времени только с одной строкой и курсор является своего рода окном, накладываемым на результат выборки. Перемещая окно, пользователь может не иметь доступ к любой строке выборки.
Для обработки SQL оператора Oracle выделяет атлас памяти, называемый контекстной областью. Она содержит информацию, необходимую для завершения обработки:
1. число строк, обработанных оператором
2. указатель на представление этого оператора
3. активный набор (набор строк, возвращение запросом).
Курсор - это указатель на контекстную область, с помощью которого PL SQL может управляться контекстной областью и ее состоянием во время обработки оператора.
Курсор - разновидность файла, которая создается во время.
Это средство погруженного SQL хранения результатов для дальнейшей обработки.
Для использования курсоров надо:
1. объявить курсор
2. открыть курсор для запроса
3. выбрать результаты в переменные PL SQL
4. закрыть курсор
1.Объявление курсора.
При объявлении курсора ему назначается имя и ставится в соответствие некоторой Select.
Cursor имя курсора IS оператор Select
Курсор должен быть объявлен (описан) до того, как на него будет произведена ссылка в нем, можно использовать любые оператор Select, в том числе соединение (joins), объединение (union), вычитание (minus).
Все переменные, которые используются в курсоре, должны быть ему видимы, т.е. они должны быть объявлены до их использования в курсоре.
Declare
V - probeg cena √ avto. probeg % type;
V - cena cena √ avto. Ceno % type;
Объявление курсора : cursor c √ cena is
Select from cena √ avto where cena = v √ cena;
Begin
V √ cena: = 2000;
Open c √ cena;
End.
2. Открытие курсора.
Open - имя курсора.
Позволяет СУБД обработать запрос курсора и записать результат в ╚курсор╩.
При открытии курсора происходит:
1. анализируется значения переменных привязки
2. на основе значений переменных привязывается определенный активный набор (т.е. набор строк, возвращаемый запросом)
3. указатель активный: наборы устанавливаются на одну строку.
Чтобы переменным привязки присвоить новые значения и курсор, работая с ними надо курсор закрыть, присвоить переменной привязки новые значения и снова открыть курсор.
3. Выбрать данные для обработки (считывание строк из курсора).
FETCH - имя курсора INTO √ список переменных
FETCH имя курсора INTO запись PL/SQL
С помощью оператора FETCH считывается 1 строка из курсора. Тип переменной курсора должен соответствовать переменной выбора запроса.
В случае если считывание идет в запись PL/SQL, то переменная типа запись объявляется
V √ cur cena √ avto % ROWTYPE
4. Закрытие курсора.
Close имя курсора. Закрытие курсора производят после того как выбран весь активный набор. При этом все отведенные ресурсы для курсора освобождают (пространство для хранения активного набора и временное пространство, используемое для определения такого набора).
Курсорные атрибуты.
Добавляются к имени курсора в блоке PL/SQL подобно атрибутам % type и % nowtype.
1. % found √ возвращает значение TRUE если строка была выбрана RALSE если не выбрана строка.
2. % notfound √ противоположно % found
3. % open используется для определения открыт или нет соответствующий курсор. Если открыт - TRUE , иначе √ FALSE.
4. % ROWCOUNT √ возвращает число строк, считанных курсором.
Циклы выборки.
Чаще всего курсоры используются для считывания всех строк активного набора с помощью циклов.
Примеры:
Для работы с курсором, триггером, процедурами необходимо установить привилегии.
Установка привилегий:
1. войти в ORACLE под именем SUSTEM пароль MANAGER
2. ввести следующую запись:
SQL grant all privileges to scott
3. зайти в SQL под именем scott
Пример:
Declare
V √ name cena_avto name % TYPE
V √ cena cena_avto cena % type
V √ probeg cena_avto probeg % type
V √ aod cena_avto god % type
/ *объявляем курсор*/
cursor curmy is
select name, probeg, cena, god from cena_avto
Where god between 1991 and 12000
Begin
Open curmy
Loop
/ *считываем информацию о машине* /
fetch aurmy into v_name v_cena v_probeg v_god;
(выйдем из цикла, когда строк для выбора больше нет)
exit when cuemy % NOFFOUND
(обработали считанные строки)
insert into table (name, probeg, cena, god)
values (v_name, v_probeg, v_ceno, v-god)
End loop;
(освободить ресурсы, используемые курсор)
close curmy
(завершим работу)
commit
End.
Пример больница:
Пациент, его атрибуты
Врачи, карточка
Create table Pazient
( FIO varchar 2 (30)
Vozrast char (20)
N polis char (20)
Address varchar 2 (30)
N kart char (20) not null
N uch char (20 not null)
Primary ney (N kart N uch))
Create table Vrach
( FIO vrach varchar 2 (30)
spezialnost char (30)
N vracha char (20) not null
Primary ney (N vrach))
Create table kartochka
( data char (20)
shialoba varchar 2 (2000)
diagnoz varchar 2 (2000)
lechenie varchar 2 (2000)
povt priem char (20)
N ZAP char (20) not null
N kart char (20)
N uch char (20)
Primary key (N ZAP)
Foreing key (N kart N uch)
Pacient (N kart N uch))
Create table uslugi
Name varchar 2 (500) not null
Cena char (10)
N vracha char (20)
N ZAP char (20)
Brimary rey (name)
Forein key (N ZAP)
Create table vizov vracha
N vrach char (20)
N ZAP char (20)
Foreing key (N vrach)
Расписание и начисление заработной платы.
Crate procedure
V_vrach (nvr in char npo in char) is begin
Declare
Cursor cur2 is select vrach. Kartochka n ZAP from vrach pacient kartochka where nach fio vrach = nvr and pacient n polis = npo and kartochka nuch = pacient nuch
(объявляем курсорную переменную)
cur2 VIZOV VRACH % type
begin
open cur2
fetch cur2 into
cur2
insert into VIZOV VRACH
values (cur2-r n vrach cur2_r nZAP )
close cur2
end
end
/
execute v_vrach (IVANOV)
selest * from VIZOV_ VRACHA