Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Software development.docx
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
324.44 Кб
Скачать

Запросы

Предположим, что на крупном предприятии есть огромная СУБД Кадры, содержащая подробнейшие сведения о каждом сотруднике. Кроме формальной информации база может содержать и конфиденциальную, например, сведения о заработной плате. Вся эта информация хранится в таблицах.

Работать с базой данных Кадры могут разные подразделения предприятия, и всем им нужны разные данные. Не все то, что положено знать службе безопасности предприятия, должно быть доступно штатному врачу, и наоборот. Поэтому пользователям СУБД доступ к базовым таблицам, как правило, закрывают.

Для доступа к данным есть другое, гораздо более гибкое и удобное средство –запросы. У сотрудника бухгалтерии должен быть запрос, который позволит определить сколько дней в году по болезни отсутствовал тот или иной работник, но у него не должно быть запроса, позволяющего узнать, чем он болел и где лечился, а у главного врача такой запрос быть должен.

Классификация запросов

Рисунок 13 – Классификация запросов

Запросы на выборку

Среди всего многообразия запросов наиболее часто применяемыми являются запросы на выборку, рисунок 13. В результате выполнения такого запроса из исходных таблиц в БД формируется временное представление данных (см. описание к лабораторной работе №3), содержащее необходимую часть общей информации.

Отличия фильтров от запросов на выборку

Запросы – это самостоятельные объекты СУБД, они имеют своё имя, могут быть перенесены из одной СУБД в другую и т.д. Фильтры – это лишь надстройка над таблицей. По сути, фильтр – это частный, очень ограниченный случай запроса на выборку, рисунок 13. Это – основное отличие, предопределяющее все остальные.

  • Каждая таблица может иметь только один такой фильтр (одна таблица – один фильтр), но с её данными могут работать несколько разных запросов.

  • Каждый фильтр имеет областью применимости только свою таблицу (один фильтр – одна таблица), в то время как областью применимости запроса является все таблицы в своей БД и даже, возможно, во внешних БД. Кроме того, запрос может использовать данные из других запросов.

  • Запросы, в отличие от фильтров, могут содержать вычисляемые поля, выполнять группировку и выдавать итоговые вычисления (например, среднюю зарплату по каждому отделу – см. описание к лабораторной работе №5).

Итого, пользуясь терминологией вида связей, можно сказать, что таблицы и фильтры связаны отношением 1-1, а таблицы и запросы – -. Единственным преимуществом фильтров является лёгкость и быстрота их применения, рисунок 7.

Понятие предиката

В запросах, помимо хорошо известных выражений вида 2+3, 14,2*5 и т. п. встречаются и так называемые предикаты. Предикат – это функция, которая из любой своей области определения областью значения имеет только константы Да или Нет.

Чаще всего предикаты встречаются в условиях отбора, где они отвечают на вопрос «Включать или не включать очередную запись в набор?». При выполнении запроса СУБД сначала соединяет множество таблиц в один набор записей, а потом в нём последовательно проходит все записи и для каждой из них проверяет условие отбора. Если условие истинно, то запись включается в итоговый набор представления, если ложно – то не включается.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]