Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Остальные темы.doc
Скачиваний:
1
Добавлен:
19.08.2019
Размер:
538.11 Кб
Скачать

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

 

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

 

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

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

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

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

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

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

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

1. данные,

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

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

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

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

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

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

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

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

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

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

USP

SN

PNAME

SNAME

OCENKA

3412

Физика

Иванов

4

3413

Химия

Петров

5

3414

Физика

Сидоров

5

3415

Физика

Цветков

4

3416

Математика

Казанцев

3

 

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

4

5

4

3

5

математика

физика

физика

физика

химия

 

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

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

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

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

Create index PNIND on USP (PN);  

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