Типы пользовательских запросов

Ранее мы уже говорили о составе и задачах систем управления БД. Рассмотрим их здесь более подробно:

1. Основная задача СУБД – обеспечить эффективное хранение данных и осуществление легкого доступа к ним. Для выполнения этой задачи современные СУБД (например, Access, входящий в систему Windows) имеют развитую среду пользователя. К ее задачам относятся обеспечение процедуры ввода данных. Данные вводятся в виде простой таблицы или с помощью специальных форм. Форма-это специальный бланк, выводимый на экран компьютера, в котором имеются окна для ввода данных. Имеется стандартный набор форм (ленточный, в столбик и т.п.), который может быть дополнен пользователем своими собственными формами, привязанными к конкретной таблице. Здесь пользователь может проявить талант дизайнера, размещая поля ввода по экрану, расцвечивая области ввода, расставляя управляющие кнопки, скрытые МЕНЮ, всплывающие подсказки, прокрутки и т.д.При вводе данных можно указывать ключевое поле или их совокупность, и тогда данные будут сортироваться по этим полям.

2. Следующая задача СУБД- это выполнение запросов пользователя. Пользователь может запрашивать данные разного типа. Все пользовательские запросы делятся на три основных типа:

· Получить единичную запись

· Получить выборку записей

· Получить пакет записей

Рассмотрим каждый из них по отдельности:

1. При поиске единичной записи указывается номер записи или какой-нибудь отличительный признак искомой записи, например, фамилию сотруднику. Атрибут, по которому осуществляется поиск, называется ключом поиска. Ключом поиска в таблице “Сотрудники предприятия” может быть, например, ФИО сотрудника, его табельный номер или совокупность атрибутов, позволяющая однозначно идентифицировать запись. Рассмотрим в качестве примера таблицу “Телефонный справочник”, содержащую 2 поля : ФИО и номер телефона. Основной тип запроса в этом случае состоит в том, чтобы по заданным ФИО найти нужный номер телефона. Если данные в таблице заполнялись произвольным образом, то для данного вида поиска требуется просматривать всю таблицу, пока не встретится требуемая фамилия. Такой поиск неэффективен, поэтому желательно данные в таблицах сортировать, например, по алфавиту. В этом случае, вместо последовательного сканирования всего файла, достаточно производить выборочные проверки и методом деления пополам выйти на искомую запись. Число операций считывания при этом равно log_2 n, где n-число записей в таблице. Предположим теперь, что нам требуется решить обратную задачу: найти фамилию по номеру телефона. В этом случае упорядочение таблицы по фамилиям ничего нам не даст, и опять придется просматривать всю таблицу. Значит, для ускорения поиска надо создать копию таблицы, где данные будут сортированы уже по номерам телефонам.

В общем случае, таблицы могут иметь несколько десятков полей и возникает необходимость поиска по различным полям и их комбинациям. В этом случае, приходится иметь многочисленные копии данных, упорядоченные различными способами.

2. Второй тип пользовательского запроса называется поиском по шаблону, когда указывается отличительный признак, которому удовлетворяют несколько записей, например, запрос “найти данные о сотрудниках отдела Х”. Здесь ключом поиска является номер или название отдела, не позволяющий однозначно идентифицировать отдельную запись. Опять же для выполнения такого запроса желательно иметь таблицу, сортированную по номерам отдела. Поскольку записей, соответствующих одному и тому же отделу, будет несколько, то можно дополнительно их отсортировать по другому полю, например, фамилиям. Список студентов КФУ можно например, отсортировать по факультетам, курсам, группам и фамилиям.

3. Третий тип запросов означает просмотр всей таблицы или основной ее части для выполнения статистики или создания отчетов. Данные, извлекаемые из таблиц, могут дополнительно обрабатываться с сортировкой, выводом суммарных или других статистических данных.