- •Базы данных Вопросы и ответы к экзамену Дисциплина «Базы данных».
- •Вопрос №1
- •Отличия концептуальной, логической и физической моделей данных.
- •Вопрос №2 Определение, назначение субд.
- •Требования, предъявляемые к субд.
- •Типы субд Сравнительная характеристика различных субд.
- •Вопрос №3
- •Типы связей.
- •Вопрос №4
- •Вопрос №5
- •Вопрос №6
- •Вопрос №7
- •I этап. Постановка задачи.
- •II этап. Анализ объекта.
- •III этап. Синтез модели.
- •IV этап. Выбор способов представления информации и программного инструментария.
- •V этап. Синтез компьютерной модели объекта.
- •VI этап. Работа с созданной базой данных.
- •Вопрос №8
- •Нормализация отношений
- •Вопрос №9
- •Нормализация баз данных. Нормальные формы: 1нф,2нф,3нф
- •Вопрос №10
- •Вопрос №11
- •Методы создания и составные части программного файла. Назначение операторов и команд для написания программ
- •Вопрос №12
- •Вопрос №13
- •Вопрос №14 Понятие, виды и назначение триггеров.
- •Вопрос №15 Создание триггера типа update.
- •Вопрос №16 Понятие запроса. Команда выбор
- •Описание select
- •Вопрос №17
- •Дополнительно: Способы обеспечения непротиворечивости и целостности данных.
Вопрос №11
Понятие и виды индексных файлов. Назначение и особенности индексных файлов.
Следует отметить, что такое индексирование проводится только по возрастанию. Отобразим полученный результат с помощью команды LIST
Создание индексных файлов в базах данных преследует цель ускорения поиска записей и для упорядочения записей в таблицах. Вообще в FoxPro существуют 2 типа индексных файлов: *.idx (обычный индексный файл) и *.cdx (составной индексный файл, содержащий несколько индексов).
Следует отметить, что сортировка файла – процесс довольно длительный.
У каждой из этих команд есть свои особенности. Рассмотрим обычный индексный файл *. Idx.
INDEX ON < выражение > TO <имя файла>
Эта команда предназначена для упорядочения информации в базе по значению определенного ключа. Но она не переупорядочивает информацию в самой базе. Вместо этого создается новый индексный файл, записи которого состоят из ключей и указателей. Указатели указывают на позицию соответствующей записи в основной базе. Основное преимущество индексного файла заключается в том, что он используется подобно оглавлению книги. Когда необходимо найти запись с определенным ключом в основной базе, у которой есть индексный файл, используется команда
FIND <строка знаков>/<число>
Она осуществляет поиск строки знаков или числа, указанных в операнде, среди ключей записей в активном индексном файле. Это происходит очень быстро, поскольку индексный файл всегда является упорядоченным. Кроме того, так как записи индексного файла короткие, система располагает их в оперативной памяти. Поэтому операции с индексом часто вообще не требуют обращения к внешним устройствам. Итак, если при поиске использовать индексный файл, понадобится небольшое время для поиска в индексе и всего одно считывание с диска этой записи. Но поиск можно осуществлять только по тем полям базы, для которых созданы индексные файлы. Поэтому, если нужно составлять различные запросы к базе, включающие поиск по разным полям, нужно создавать несколько индексных файлов. Количество индексных файлов к одной базе данных не ограничивается. Однако одновременно открытыми их может быть не более 7 для одной базы. Если необходимо осуществить поиск в базе по двум разным полям, придется завести два индексных файла. Например, для поиска в базе CLIENTS записей по номеру можно создать индексный файл Ponomeru с помощью следующих команд:
USE CLIENTS
INDEX ON Nomer TO Ponomeru
А для поиска записей по имени клиента придется создать индексный файл Poim:
INDEX ON IM TO Poim
Для поиска по этим полям основную базу нужно открыть с одним из индексов. Например:
USE CLIENTS INDEX Ponomeru
или
USE CLIENTS INDEX Poim
Но поиск в базе можно производить только по полю первого индекса. Чтобы не приходилось открывать и закрывать файл базы данных, для смены индекса в таких случаях используется команда
SET ORDER TO <выражение>
Где <выражение> соответствует номеру открытого индексного файла, по которому будет вестись поиск или выборка. Например:
USE CLIENTS INDEX Ponomeru, Poim
ACCEPT “Введите имя” TO Key
SET ORDER TO 2
FIND Key
Вопрос: зачем открывать 7 индексных файлов , если для поиска используется один? Ответ заключается в том, что для автоматического соблюдения упорядоченности индексного файла его нужно держать открытым. Если в базе данных происходят изменения, т.е. в нее добавляются или удаляются записи, то это должно отражаться и в связанном с ней индексном файле. В противном случае информация в индексе не будет соответствовать информации в базе. Чтобы привести в соответствие информацию в индексном файле и основной базе, используется команда REINDEX.
Если во время изменений в базе CLIENTS файл Ponomeru не был открыт, то привести его в соответствие новому состоянию базы можно командами:
USE CLIENTS
SET INDEX TO Ponomeru
REINDEX
Иногда бывает нужно применить составной ключ. Например в базе CLIENTS есть поле IM и поле FAM. Можно выполнить поиск по фамилии и имени одновременно, если индексирование выполнить командой:
INDEX ON FAM+IM TO Famim
Далее для поиска записи можно использовать составной ключ:
USE CLIENTS
INDEX ON FAM+IM TO Famim
ACCEPT “Введите фамилию” TO FAM
ACCEPT “Введите имя” TO IM
STORE FAM+IM TO Key
FIND & Key