Создание многотабличной реляционной базы данных
Что такое индекс
Данные в таблице обычно отображаются в том порядке, в каком их в нее первоначально ввели. Однако такой порядок может не иметь ничего общего с тем порядком, в котором затем требуется эти данные обрабатывать. Скажем, что вы, например, хотите обрабатывать таблицу CLIENT в такой последовательности, чтобы значения в столбце ClientName располагались в алфавитном порядке. Но на такую сортировку записей таблицы требуется определенное время. И чем таблица больше, тем сортировка проходит дольше. Что если в вашей таблице сто тысяч записей? Или миллион? А ведь в некоторых приложениях таблицы такого размера не являются редкостью. Даже при выполнении лучших алгоритмов сортировки, чтобы выстроить записи таблицы в нужном порядке, все равно придется в таком случае проделать примерно двадцать миллионов сравнений и миллионы перестановок. И пусть у вас очень быстрый компьютер, но подождать все-таки придется.
Индексы могут оказаться прекрасным средством экономии времени. Индекс – это подчиненная таблица, или таблица поддержки, которая сопровождает свою таблицу данных.
Каждой строке таблицы данных соответствует определенная строка таблицы индекса. Однако порядок расположения строк в таблице индекса другой.
Небольшой пример таблицы данных показан в табл. 5.2.
Таблица 5.2. Таблица CLIENT.
ClientName | Address1 | Address2 | City | State |
---|---|---|---|---|
Butternut Animal Clinic | 5 Butternut Lane | Hudson | NH | |
Amber Veterinary, Inc. | 470 Kolvir Circle | Amber | Ml | |
Vets R Us | 2300 Geoffrey Road | Suite 230 | Anaheim | CA |
Doggie Doctor | 32 Terry Terrace | Nutley | NJ | |
The Equistrian Center | Veterinary Department | 7890 Paddock Parkway | Gallup | NM< |
Dolphin Institute | 1002 Marine Drive | Key West | FL | |
J.C.Campbell, Credit Vet | 2500 Main Street | Los Angeles | CA | |
Wenger's Worm Farm | 15 Bait Boulevard | Sedona | AZ |
Строки следуют в таком порядке, что значения в столбце ClientName располагаются не по алфавиту. Строки находятся в том порядке, в каком их кто-то вводил.
Индекс для этой таблицы CLIENT может выглядеть примерно так, как табл. 5.3.
Таблица 5.3. Индекс по названию клиента для таблицы CLIENT.
ClientName | Указатель к таблице данных |
---|---|
Amber Veterinary, Inc. | 2 |
Butternut Animal Clinic | 1 |
Doggie Doctor | 4 |
Dolphin Institute | 6 |
J.C.Campbell, Credit Vet | 7 |
The Equistrian Center | 5 |
Vets R Us | 3 |
Wenger's Worm Farm | 8 |
В индексе находятся поле, которое является его основой (в данном случае это поле ClientName), и указатель к таблице данных. Значение указателя, расположенное в каждой строке индекса, является номером соответствующей строки таблицы данных.