Рамиля Рамисовна Латыпова

Базы данных. Курс лекций. Учебное пособие


Скачать книгу

между таблицами БД.

      Обычно в СУБД для реализации ссылочной целостности в дочерней таблице создают внешний ключ, ссылающийся на родительскую таблицу, и указывают вид каскадных воздействий.

      Внешний ключ создается в дочерней таблице. В него входят поля связи дочерней таблицы. Для связей типа «один-ко-многим» внешний ключ должен совпадать по составу полей с первичным ключом главной таблицы или с частью первичного ключа (в этом случае нормализация таблиц БД выполнена не полностью).

      При определении первичного и внешнего ключей СУБД автоматически строит индексы. Индекс, соответствующий внешнему ключу, строится для обеспечения связей родительской и дочерней таблиц [2].

      Индексы обеспечивают механизм быстрого доступа к данным в таблицах. Индексы хранят значения индексных полей (по которым построен индекс) и указатель на запись в таблице.

      Использование индексов позволяет использовать не просто последовательный, а индексно-последовательный доступ.

      При последовательном доступе просматриваются все записи таблицы – от первой до последней, что неэффективно.

      При индексно-последовательном доступе указатель в индексе устанавливается на первую строку, соответствующую условиям запроса (или его части), и считывается запись из таблицы по хранящемуся на нее в индексе указателю. Далее последовательно считываются остальные записи, удовлетворяющие условиям запроса.

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

      Например, рассмотрим табл. 1.

      Таблица 1

      Отпуск товара

      Номер

      Дата

      Товар

      Количество

      1

      06.01.14

      Спички

      2

      2

      02.01.14

      Мыло

      100

      3

      03.01.14

      Мука

      5000

      4

      08.01.14

      Спички

      10

      Структура индексов по каждому из четырех полей показана в табл. 2.

      Таблица 2

      Индексированные поля таблицы

      По дате прихода

      По наименованию

      По количеству

      Дата

      Номер записи

      Товар

      Номер записи

      Количество

      Номер записи

      02.01.14

      2

      Мука

      3

      5000

      3

      03.01.14

      3

      Мыло

      2

      100

      2

      06.01.14

      1

      Спички

      1

      10

      4

      08.01.14

      4

      Спички

      4

      2

      1

      Если несколько товаров имеет одно и то же наименование, то достаточно найти в индексе, построенном по столбцу «Наименование», первую запись, а затем повторить чтение подряд для всех товаров