Здавалка
Главная | Обратная связь

Специальные аспекты работы с БД. Процедура индексирования.



Тема 12. Специальные аспекты работы с БД. Процедура индексирования. Создание процедур и функций. Контроль целостности данных с использованием триггеров. Средства обработки транзакций. Методы блокировки.

 

Лекции: 4 часа

 

Следующая стадия проектирования состоит в дополнении реляционных схем разделов распределенной базы данных определениями общих ограничений целостности, триггеров и хранимых процедур. На каждом из этих компонентов схемы следует остановиться отдельно. Начнем с общих ограничений целостности.

Язык SQL/92 позволяет определить ограничения целостности, относящиеся к общему состоянию базы данных и включающие ссылки на произвольное число таблиц. Семантика таких ограничений целостности может быть существенно шире, чем ограничения, задаваемые связями 1 к n и даже n к m (1-to-many и many-to-many). Поэтому часто ограничения общего вида не выводятся автоматически из концептуальной схемы базы данных, и их приходится добавлять к реляционной схеме вручную. Для того чтобы понять, какие ограничения общего вида должны быть включены в реляционные схемы разделов, приходится возвращаться к документу, содержащему анализ требований корпорации. Задача проектировщика состоит в том, чтобы, с одной стороны, выявить все необходимые ограничения целостности и, с другой стороны, не перегрузить базу данных необязательными ограничениями (любое дополнительное ограничение целостности вызывает дополнительные проверки на стороне сервера при выполнении операций изменения базы данных; проверки для ограничений общего вида могут быть весьма громоздкими). Конечно, если предполагается использование распределенной базы данных, то опять придется учитывать возможности сервера по части ссылок на объекты "чужих" разделов. Это может повлиять на выбор ограничений целостности и/или повлечь создание новой декомпозиции общей базы данных на разделы.

Специальные аспекты работы с БД. Процедура индексирования.

Основным преимуществом использования индексов является значительное ускорение процесса выборки и извлечения данных

Термин «индекс» тесно связан с понятием «ключ», хотя есть некоторые отличия. Индекс - средство ускорения поиска записей в таблице, а следовательно и других операций, использующих поиск.: извлечение, модификацию, сортировку и т.д. Таблица, для которой используется индекс, называется индексированной.

Индекс выполняет роль оглавления таблицы. В некоторых системах, например PARADOX, индексы хранятся в индексных файлах, хранимых отдельно от обычных файлов.

Индексный файл является файлом особого типа, в котором каждая запись состоит из 2-х значений:

1. данные,

2. указатель номера записи.

Как уже было отмечено, основное преимущество использования индексов- ускорение процесса выборки данных

Если индексирование организовано на основе ключевого поля, то индекс называют первичным, иначе вторичным.

Основным недостатком индексирования является замедление процесса обновления данных, т.к. при каждом добавлении новой записи в файл, требуется добавить новый индекс в индексный файл.

Индексы можно использовать двумя способами

1. для последовательного доступа к индексированному файлу.

2. Индексы могут использоваться для прямого доступа к отдельным записям файла на основе заданного значения индексирования.

К достоинствам использования индексов относится ускорение процесса извлечения данных за счёт уменьшения числа дисковых операций ввода вывода.

К недостаткам - сам индекс занимает место на устройстве хранения информации, следовательно, при создании таблиц проектировщик должен решать - индексировать или нет.

Синтаксис создания индексов Create index <имя индекса>on <имя табл>,(<имя столбца>,<имя столбца>,)

 

 

USP
SN PNAME SNAME OCENKA
Физика Иванов
Химия Петров
Физика Сидоров
Физика Цветков
Математика Казанцев

 

PN
Математика
Физика
Физика
Физика
Химия

 

Например

 

Предположим нужно выполнить запрос на поиск студентов, сдавших физику. Для этого упорядочим специальный файл по алфавиту. Для поиска возможны две стратегии:

1. из таблицы USP выбрать строки, у которых PN= ▒ФИЗИКА▓

2. использовать индексный файл PN, согласно указателям извлечь все соответствующие записи из файла USP.

Если доля студентов, сдавших физику невелика по отношению к общему количеству студентов, то не надо делать всего перебора таблицы. Поиск будет прекращен после извлечения следующего предмета - химия. Даже если потребуется просмотреть файл предметов полностью на это потребуется минимум операций ввода √ вывода, поскольку размер файла PN меньше чем размер файла USP.

Здесь файл предметов называют индексным файлом. Файл USP индексирован по отношению к файлу предмета. Индексный файл является хранимым файлом особого типа, в котором каждая запись состоит как минимум из двух значений 1- данные; 2 - указатель номер записи.

При этом данные необходимы для индексированного поля из файла USP, а указатели - для связи с соответственной записью индексированного файла USP. Если индексирование организованно на основе ключевого поля, например, поля SN - то индекс называют первичным, если на основе PNAME - вторичным. Основным недостатком индексирования является замедление процесса обновления данных, т.к. при каждом добавлении новой записи в файл USP потребуется добавить новый индекс в индексный файл PN.

Индексы можно использовать двумя способами:

1. для последовательного доступа к индексированному файлу. Например, индекс PN определяет доступ к записям файла USP согласно алфавитному перечню предметов

2. индексы могут использоваться для прямого доступа к отдельным записям USP, на основе заданного значения индексного поля.

Хранимый файл может иметь несколько индексов, например, индекс PN и индекс ▒оценка▓. Индексы PN и ▒оценка▓ могут как совместно так и раздельно использоваться для наиболее эффективного доступа к данным USP.

Например

При запросе студентов, сдавших физику на 5, согласно индексу PN будут найдены записи - 3412, 3414, 3415, согласно индексу ▒оценка▓ будут найдены - 3413, 3414. затем производится сравнение на совпадение индексов PN и ▒оценка▓ и запись 3413 рассматриваться не будет.

 

оценка PN
математика физика физика физика химия

 

Такой способ также ускоряет поиск, комбинированный индекс можно использовать и по раздельности.

Итак, при использовании индексов ускоряется процесс извлечения данных за счет уменьшения операций ввода - вывода, однако сам индекс занимает место на диске, следовательно при создании таблиц надо принять решение - индексировать ее или нет

Для создания индекса

Create index UNIQUE <имя индекса > on < имя таблицы>

Create index PNIND on USP (PN);

Однако индекс PNIND не будет уникальным. Для создания уникальных (не содержащих повторное значение индексов) используют ключевое слово UNIQUE в команде Create index.

ТРИГГЕРЫ

 

Триггер БД - хранимый блок PL/SQL, который связан с таблицей. Oracle автоматически исполняет триггер когда указанное предложение PL/SQL выдается по соответствующей таблице. Прежде чем может быть создан триггер, пользователь должен выполнить скрипт файл DBMSSTDX.SQL его местоположение может варьироваться в зависимости от ОС.

Синтаксис Создание триггера

CREATE [ORREPLACE] TRIGGER имя триггера

BEFORE/ALTER

[{DELETE|INSERT|UPDATE}] ON имя_табл

[REFERENCING {OLD/NEW}]

FOR EACH ROW

[WHEN]

блок PL/SQL (begin √end)

Разделы тела триггера:

OR REPLASE - пересоздаёт триггер, если он уже существует;

BEFORE - указывает что ORACLE возбуждает триггер перед исполнением предложение триггера;

ALTER - возбуждает триггер после исполнения предложение триггера;

REFERENCING - специфицирует корреляционные имена;

FOR EACH ROW- триггер строк, если нет этой строки, тогда это триггер предложений;

WHEN - ограничение триггера содержит условие SQL которое должно быть удовлетворенно, чтобы ORACLE возбудил триггер;

Триггер БД - хранимая процедура, связанная с таблицей. ORACLE автоматически возбуждает и исполняет триггер, когда выдаётся предложение триггера, т.е. предложение SQL которое специфицировано или описано в триггере.

Триггер используется для следующих целей:

- Для автоматической генерации вычисляемых значений столбцов

- Для реализации сложных проверок защиты и ограничений

- Для реализации регистраций

Триггеры-являются именованными блоками PL\SQL с разделами:

1. объявления

2. выполняемый раздел

3. раздел исключительной ситуации

В отличии от процедуры ,которую надо вызывать явным образом, триггер выполняется не явно когда происходит событие, запускающее этот триггер. Акт выполнения триггера называется его активизацией. запускается триггер операциями DML выполняемой над БД. Oracle автоматически исполняет триггер когда указанное предложение SQL выдвигается по соответственной таблице.

Для каждой таблицы можно определить 3 типа триггеров:

1. триггеры ввода

2. триггеры добавления

3. триггеры удаления

Триггеры можно использовать для:

1. отслеживания модификаций данных

2. журнализации (регистрация событий)

3. реализация комплексных организационных правил

4. автоматическое вычисление столбцов

5. осуществление сложных процедур защиты данных и т.д.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.