Классика баз данных - статьи

       

Этот запрос выявляет группы, членом


Этот запрос выявляет группы, членом которых является Билл. Здесь используется "вложенная точечная нотация" обращения к элементам множества, получившая распространение благодаря языку баз данных GEM [ZANI83]. Если состав задается массивом указателей, оптимизатор запросов может последовательно просматривать все записи GROUPS, и, переходя к каждому указателю, искать Билла. Оптимизатор запросов также может сначала узнать идентификатор Билла, а затем просматривать все поля композиции в поисках этого идентификатора. С другой стороны, если используется интенсиональное представление, приведенный запрос может быть преобразован оптимизатором следующим образом: select g-name from GROUPS, ALUMNI where ALUMNI.name = "Bill" and ALUMNI.age > GROUPS.min-age and ALUMNI.age < GROUPS.max-age

Если имеются индексы на GROUPS.min-age или GROUPS.max-age, а также на ALUMNI.name, то такой запрос будет выполнен значительно производительнее двух первых запросов.

Словом, есть по меньшей мере два способа задания коллекций, таких как множества, массивы, последовательности и т.д. Их можно определять экстенсионально

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

Кроме того, при интенсиональной спецификации оптимизатор запросов может производить семантические преобразования. Это позволяет выбирать пути доступа, лучшие для данного запроса. Никаких ограничений, наложенных структурами указателей, не существует. Таким образом, полномочия по принятию решений по вопросам физического представления делегируются администратору базы данных, туда, где они должны находиться. Администратор может решать, какие способы доступа следует поддерживать (например, связанные списки или массивы указателей) [CARE90].


Содержание  Назад  Вперед