- •Базы данных
- •1. Введение в базы данных
- •1.1. Базы данных и информационные системы
- •1.2. Архигсюура информационной системы
- •1.3. Системы управления базами данных
- •1.4. Локальные информационные системы
- •1.5. Способы разработки и выполнения приложений
- •1.6. Схема обмена данными при работе с бд
- •2. Модели и типы данных
- •2.1. Иерархическая модель
- •Сотоудники
- •2.2. Сетевая модель
- •2.3. Реляционная модель
- •2.4. Постреляционная модель
- •2.5. Многомерная модель
- •1996 1994 Петров Смирнов Яковлев
- •2.6. Объектно-ориентированная модель
- •2.7. Типы данных
- •3. Реляционная модель данных
- •3.1. Определение реляционной модели
- •3.2. Индексирование
- •3.3. Связывание таблиц
- •3.4. Контроль целостности связей
- •3.5. Теоретические языки запросов
- •I аспределенное Удаленное Распределен- Удаленн! 1йдо- Распределен- предстаеление представление ная функция ступ к данным наяЬд
- •4.5. Информационные системы в Интернете и интранете
- •Часть 2. I Ъоектиросанн ? и использование бд
- •7. Средства автоматизации проектирования
- •7.1. Основные определения
- •7.8. Рекомендации по применению case-систем
- •9. Дополнительные вопросы применения баз данных
- •9.1. Программно-аппаратные платформы
- •9.2. Перспективы развития субд
- •9.3. Стандартизация баз данных
- •9.4. Характеристика технологии ado.Net
- •10.1. Общая характеристика
- •10.2. Новые возможности Microsoft Access 2002
- •10.3.Средства поддержки проектирования
- •10.4. Создание основных элементов бд
- •IQdbl mdb
- •Option Compare Database Public Function funl() beep End Function
- •10.5. Работа с гиперссылками
- •10.6. Использование языка sql
- •Аргументы макрокоманды ' Инструкция sQl. Select distinctrow tof
- •10.7. Защита баз данных
- •10.9. Обслуживание баз данный
- •10.10. Репликация баз данных
- •Реплицируемые объекты
- •Реплицируемые объекты
- •10.11. Работа с мультимедиа-данными
- •Тип объекта
- •Comic Chat Boom Microsoft Graph so Music Prop pry Page 2 1 Option f ropery Page21 Ры-ndox FableВидео-клип
- •10.12. Создание файлов приложений
- •10.13. Страницы доступа к данным
- •Краткая характеристика отличий сДд от форм и отчетом
- •10.14. Разработка проекта
- •Распределение атрибутов по вариантам
- •11.1. Пользовательский интерфейс
- •11.2. Характеристика проекта
- •11.3. Компиляция и выполнение проекта
- •11.4. Разработка приложения
- •11.5. Средства интегрированной среды разработки
- •Управление параметрами среды
- •11.6. Базы данных и средства работы с ними
- •Компоненты приложений для баз данных
- •11.7. Создание таблиц базы данных
- •11.8. Создание приложения bde
- •Значения свойств компонентов
- •11.9. Работа с отчетами
- •12. Субд Visual FoxPro 8.0
- •12.1. Общая характеристика
- •12.2. Новые возможности Visual FoxPro 8.0
- •12.3. Элементы проекта
- •12.4. Интерфейс Visual FoxPro
- •12.5. Средства автоматизации разработки
- •12.6. Создание баз данных
- •12.7. Таблицы и индексы
- •12.8. Организация межтабличных связей
- •12.9. Обеспечение ссылочной целостности
- •12.10. Создание запросов
- •Variables:
- •13. Microsoft sql Server 2000
- •13.1. Характеристика sql Server
- •13.2. Язык запросов Transact-sql
- •13.3. Системные базы данных и таблицы
- •13.4. Создание баз данных
- •13.5. Работа с таблицами
- •15.1. Принципы функционирования Web-приложений
- •15.2. Архитектура Web-приложений, публикующих бд
- •15.3. Обзор Web-серверов
- •15.4. Использование Personal Web-server
- •15.5. Использование Microsoft Internet Information Server
- •15.6. Использование Apache дляMicrosoft Windows 9х/2000
- •Вы видите это вместо ожидаемой страницы?
- •15.7. Варианты создания Web-узла
- •16. Интерфейсы программирования Web-приложений
- •16.1. Общий интерфейс взаимодействия cgi
- •18. Публикация бд средствами Microsoft Access
- •18.1. Характеристика вариантов публикации
3.2. Индексирование
Как отмечалось выше, определение ключа для таблицы означает автоматическую сортировку записей, контроль отсутствия повторений значений в ключевых полях записей и повышение скорости выполнения опера ций поиска в таблице. Для реализации этих функций в СУБД применяют индексирование.
Термин «индекс» тесно связан с понятием «ключ», хотя между ними есть и некоторое от личие.
Под индексомпонимают средство ускоренииоперации поиска записей в таблице, а следовательно, и аругих операций, использующих поиск: извлечение, модификация, сортировка и т. д. Таблицу, для которой используется индекс, называют индексированной
Индекс выполняет роль оглавлениятаблицы,npot мотр которого предшествует обращению к записям таблицыR некоторых системах, например,Paradox, индексы хранятся в индексных файлах, хранимых отдельно от табличных файлов.
Ьариан гы решения проблемы организации физического доступа к информации зависят в основном от следующих факторов.
вида содержимого в поле ключа записей индексного фай ла;
типа используемых ссылок (указателей) на запись основной таблицы;
метода поиска нужных записей
В поле ключа индексного файламожно хранить значения ключевых полей индексируемой таблицы либо свертку ключа (так называемый хеш- код). Преимущество хранения хеш-кода вместо значения состоит в том, что длина свертки независимо от длины исходного значения ключевого поля всегда имеет некоторую постоянную и достаточно матую величину (например, 4 байта), что существенноснижав! время поисковых операций. Недостатком хеширования является необходимость выполнения операции свертки (требует определенного времени), а также борьба с возникновением коллизий (свертка различных значений может дать одинаковый хеш-код).
Для организации ссылкина запись таблицы могут использоваться три типа адресов: абсолютный (действительный), относительный и символический ( идентифика! ор).
На практике чаще всего используются два метода поиска: последовательный и бинарный (основан на делении интервала поиска пополам).
Проиллюс грируем организацию индексировяния таблиц двумясхемами: одноуровневой и двухуровневой. При этом примем ряд предположений, обычно выполняемых в современных вычислительны^ системах. Пусть ОС поддерживаетпрямую организацию данных на магнитных диска::, основныетаблицы и индексные файлы хранятся в отдельных файлах. Информация файлов хранится в виде совокупности блоков фиксированного размера, например целого числа кластеров.
При одноуровневой схемев индексном файле хрэнлтея короткие записи, имеющие два поля: поле содержимого старшего ключа (хеш-кода ключа) адресуемого блока и поле адреса начала этого блока (рис. 3.3).
ключ
адрес
ключ
адрес
ключ
адрес
Индексный
файл
ключ
заш сь
ключ
ключ
запись
запись
ключ
запись
ключ
запись
ключ
запись
II
ч
запись
_ключ
запись
__ключ
запись
Блок
— N
Блок
— 2
Блок
— 1
Рис. 3.3. Одноуровневая схема индексации
В каждом блоке записи располагаются в порядке возрастания значения ключа или свертки. Старшим ключом каждого блока является ключ его последней записи.
Если в индексном файле хранятся хеш-коды ключевых полей индекс иро ванной таблицы, то алгоритм поиска нужной записи (с указанным ключом) в таблице включает в себя следующие три этана
Образование сверл ки значе ния ключевого поля искомой запчеи.
Поиск в индексном файле записи о блоке, значение первого поля которою больше полученной свертки (это гарантирует нахождение искомой свертки в этом блоке).
Последовательный птюсмотр записей блока до совпадения сверток искомой "аписи и записи блока файла В случае ко. шизий сверюк ищетсязапись, значение ключа которой совпадает со значением ключа искомой записи
Основным недостаткомодноуровневой схемы является то, чю ключи (< вертки) запи< ей хранятся вмегте с записями. Это приводит к уве личению времени поиска записей из-за большой длины просмо гра (значения данньп в записях приходится пропускать).
Двухуровневая схемав ряде случаев оказывается более рациональной, в ней ключи (свертки) записей отделены от содержимого записей (рис. 3.4).
Блок
ключей — 1
Рис.
3.4. Двухуровневая схемг индексации
В этой схеме индекс основной таблицы распределен но совокупности файлов: одному файлу главного индекса и множеству файлов с блоками ключей.
На практике для создан* я индекса для некоторой таблицы БД пользова тель указывает поле таблицы, которое требует индексации. Ключевые поля таблицы во многих СУБД как правило индексируются автоматически. Индексные файлы, создаваемые по ключевым полям таблицы, часто называются файлами перзичных индексов.
Индексы, создаваемые пользовате лем для не ключевых полей, иногда называют вторичными (пользовательскими) индексами.Введение таких индексов не изменяет физическою расположения записей таблицы, но влияет на последовательность просмотра записей. Индексные файлы, создаваемые для поддержаниг вторичных индексов таблицы, обычно назыгаютсяфайлами вторичных индексов.
С^язь вторичного индекса с элементами данных базы может быть уста новл^на различными способами. Один из них - использование вторичного индекса как входа для получения первичного ключа, по которому затем с использованием первичного индекса производится поиск необходимых записей (рис. 3.5).
Рис.
3.5. Способ использования вторичных
индексов
Некоторыми СУБД, например Access, деление индексов на первичные и вторичные не производится. В этом случае используются автоматически со здава< мыс индексы и индексы, определяемые пользователем по любому из нг ключевых полей.
Главная причина повышения скорости ьыполнения различных операций в индексированных таблицах состоит в том, что основная часть рабопы про- изво П1тся с небольшими индексными файлами, а не с самими таблицами. Наибольший эффект повышения производительности работы с индексиро ванными таблицами достигается для значительных по объему таблиц. Индексирование требует небольшого дополнительного места на диске и незначительных затрат процессора на изменение индексов в процессе работы. Индексы в общем случае мо\ут изменяться перед выполнением запросов к ЬД, после выполнения запросов к БД, по специальным командам пользователя или программным вызовам приложений