Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
раздел 1.8 (ПЗ в ИС), вопросы 4-8.doc
Скачиваний:
5
Добавлен:
19.04.2019
Размер:
388.1 Кб
Скачать

8.2. Индексирование

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

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

И

33

ндексирование может быть одноуровневым и двухуровневым. При одноуровневой схеме в индексе хранятся короткие записи, имеющие два поля: поле содержимого старшего ключа (возможно, хеш-кода ключа) адресуемого блока и поле адреса начала этого блока. В каждом блоке записи располагаются в порядке возрастания значения ключа или свертки. Старшим ключом каждого блока является ключ последней записи – рис. 8.2.

Как показывает рис.8.2, при одноуровневой схеме индексирования ключи в блоках не отделены от соответствующих им записей.

При двухуровневой схеме ключи (свертки) отделены от содержимого записей – рис. 8.3.

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

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

8.3. Связывание таблиц

34

Между таблицами могут устанавливаться бинарные (для двух таблиц), тернарные (между тремя таблицами) и n-нарные связи. Рассмотрим наиболее очевидные бинарные связи.

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

Пример связи типа 1:1, когда одной записи основной таблицы соответствует одна запись дополнительной таблицы, показан на рис. 8.4.

Таблица 1 (основная)

  • +

Код

Значение

а

10

б

40

в

3

Таблица 2 (дополнительная)

  • +

Код

Значение

а

стол

в

книга

Рис. 8.4. Связь таблиц по типу 1:1

На рис. 8.4 показаны две таблицы, содержащие коды некоторых объектов и их значения. Знаками , + обозначены ключевые и обычные поля связи, откуда видно, что поля кодов таблиц являются ключевыми для каждой таблицы и одновременно полями связи между таблицами. Таким образом, сопоставление таблиц дает следующие новые сведения (виртуальные записи или псевдозаписи): (а, 10, стол), (в, 3, книга).

Связь вида 1:М имеет место, когда одной записи основной таблицы соответствует несколько записей вспомогательной таблицы – рис. 8.5. На

Таблица 1 (основная)

  • +

Код

Значение

а

CD-ROM

б

CD-Recorder

в

Sound Blaster

Таблица 2 (дополнительная)

  • + 

Код

Фирма-изготовитель

Наличие

а

Acer

Да

а

Mitsumi

Нет

а

NEC

Да

а

Panasonic

Да

а

Sony

Да

б

Philips

Нет

б

Sony

Нет

б

Yamaha

Да

в

Creative Labs

Да

Рис.8.5. Связь таблиц по типу 1:М

рис.8.5 таблица 2 имеет два ключевых поля, но связь между таблицами может осуществляться только по полям связи, обозначенным как "+". С учетом сказанного виртуальные записи могут быть следующими: (а, CD-ROM, Acer, да), (а, CD-ROM, Mitsumi, нет),… (б, CD-Recorder, Philips, нет) и т.д.

Связь типа М:1 имеет место, когда одной или нескольким записям основной таблицы ставится в соответствие одна запись дополнительной таблицы. Общий вид связи М:М возникает в случае, когда нескольким записям основной таблицы соответствует несколько записей

дополнительной таблицы.