- •Предисловие
- •1. Основы информационного обеспечения процессов и систем
- •1.1. Понятие и содержание информационного обеспечения
- •1.2. Структура и классификация информационных систем
- •1.3. Система представления и обработки данных фактографических аис
- •Вопросы и упражнения
- •2. Системы управления базами данных фактографических информационных систем
- •2.1. Функции, классификация и структура субд
- •2.2. Модели организации данных
- •2.2.1. Иерархическая и сетевая модели организации данных
- •2.2.2. Реляционная модель организации данных
- •2.3. Внутренняя схема баз данных фактографических аис
- •2.3.1. Физические структуры данных
- •2.3.2. Индексирование данных
- •2.3.3. Расстановка (хеширование) записей
- •Вопросы и упражнения
- •3. Основы создания автоматизированных информационных систем
- •3.1. Общие положения по созданию автоматизированных систем
- •3.2. Проектирование банков данных фактографических аис
- •3.2.1. Концептуальное проектирование
- •3.2.2. Проектирование схем реляционных баз данных
- •3.2.2.1. Проектирование и создание таблиц
- •3.2.2.2. Нормализация таблиц
- •Вопросы и упражнения
- •4. Ввод, обработка и вывод данных в фактографических аис
- •4.1. Языки баз данных
- •4.2. Ввод, загрузка и редактирование данных
- •4.2.1. Ввод и редактирование данных в реляционных субд
- •4.2.2. Особенности ввода и загрузки данных в субд с сетевой моделью организации данных
- •4.3. Обработка данных
- •4.3.1. Поиск, фильтрация и сортировка данных
- •4.3.2. Запросы в реляционных субд
- •4.3.2.1. Запросы на выборку данных
- •4.3.2.1.1. Запросы на выборку данных из одной таблицы
- •4.3.2.1.2. Запросы на выборку данных из нескольких таблиц
- •4.3.2.1.3. Вычисления и групповые операции в запросах
- •4.3.2.2. Запросы на изменение данных
- •4.3.2.3. Управляющие запросы
- •4.3.2.4. Подчиненные (сложные) запросы
- •4.3.2.5. Оптимизация запросов
- •4.3.3. Процедуры, правила (триггеры) и события в базах данных
- •4.3.4. Особенности обработки данных в субд с сетевой моделью организации данных
- •4.4. Вывод данных
- •Вопросы и упражнения
- •5. Распределенные информационные системы
- •5.1. Понятие распределенных информационных систем, принципы их создания и функционирования
- •5.2. Технологии и модели «Клиент-сервер»
- •5.2.1. Модель файлового сервера
- •5.2.2. Модель удаленного доступа к данным
- •5.2.3. Модель сервера базы данных
- •5.2.4. Модель сервера приложений
- •5.2.5. Мониторы транзакций
- •5.3. Технологии объектного связывания данных
- •5.4. Технологии реплицирования данных
- •Вопросы и упражнения
- •6. Документальные информационные системы
- •6.1. Общая характеристика и виды документальных информационных систем
- •6.2. Информационно-поисковые каталоги и тезаурусы
- •6.2.1. Классификационные системы поиска документов
- •6.2.2. Координация понятий в классификационных системах
- •6.2.3. Информационно-поисковые тезаурусы
- •6.2.4. Автоматизация индексирования документов
- •6.3. Полнотекстовые информационно-поисковые системы
- •6.3.1. Информационно-технологическая структура полнотекстовых ипс
- •6.3.2. Механизмы поиска документов в полнотекстовых ипс
- •6.3.3. Методы количественной оценки релевантности документов
- •6.4. Гипертекстовые информационно-поисковые системы
- •6.4.1. Гипертекст
- •6.4.2. Структура, принципы построения и использования гипертекстовых ипс
- •6.4.3. Модель организации данных в гипертекстовых ипс
- •6.4.4. Формирование связей документов в гипертекстовых ипс
- •Вопросы и упражнения
- •7. Администрирование информационных систем и защита данных
- •7.1. Администрирование информационных систем
- •7.2. Разграничение доступа и защита данных
- •7.2.1. Понятие и модели безопасности данных
- •7.2.2. Технологические аспекты защиты информации
- •7.2.2.1. Идентификация и аутентификация
- •7.2.2.2. Языки безопасности баз данных
- •7.2.2.3. Безопасность повторного использования объектов
- •7.2.2.4. Надежное проектирование и администрирование
- •7.2.3. Требования и классы защищенности автоматизированных (информационных) систем в «Руководящих документах...» Государственной технической комиссии при Президенте рф
- •Вопросы и упражнения
- •Литература
- •Алфавитно-предметный указатель Содержание
4.3.2.1.2. Запросы на выборку данных из нескольких таблиц
Запросы на выборку данных из нескольких таблиц, как правило, предназначены для решения логическихинформационных задач и, в свою очередь, подразделяются натригруппы:
• запросы на сочетание данных;
• запросы на соединение данных;
• запросы на объединение данных.
Запросы на сочетаниестроятся на основе операциискалярного произведения реляционных таблици по смыслу направлены наформирование полного набора сочетании строк-записей,представленных в исходных таблицах. Запросы на сочетание строятся на основе SQL-инструкции SELECT ипредложения FROM c пpoстым перечислением отбираемых полей и их таблиц.
Для примера на рис. 4.14 приведен запрос на выборку сочетания данных из таблицы «Подразделения» и таблицы «Мероприятия». Формирование и исполнение такого запроса может быть обусловлено потребностями автоматического формирования новой таблицы для составления определенных планов или графиков, где нужно предусмотреть в исходном виде полный набор сочетаний данных по подразделениям и по мероприятиям.
Рис. 4.14. Пример реализации запроса на сочетание дачных из двух таблиц
Запросы на соединение,* в свою очередь, подразделяются на запросы на основе внутреннего соединения (INNER JOIN) и запросы на основе правого или левого внешнего соединения(RIGHT JOIN и LEFT JOIN).
* В некоторых источниках данный тип запросов называют запросами на объединение (JOIN).Англ. термин JOIN переводится в глагольном виде как «объединяться», «соединяться», что и обусловливает неодинаковое его использование в русском переводе в разных источниках. В данном контексте более правильным является его перевод как «соединение», так как в реляционной модели данных операции «объединения» и «соединения» различны.
Запросы на выборку, строящиеся на основе внутреннего соединения,реализуют рассматриваемую по реляционной модели данныхоперацию соединения реляционных таблиц.Данная операция является одной из наиболее характерных и частых при решениилогических информационных задач,когда нужно получить и просмотреть данные из разных таблиц,связанных определенной логикой или предварительно установленными в схеме базы данных связями.Напомним, что при реализации операции соединения двух таблиц выделяетсяполе соединения, которое должно быть одинакового типа в соединяемых таблицах. Результатом соединения таблиц является новая таблица, содержащая все поля, или часть полей первой таблицы и все или часть полей второй таблицы. Строки итоговой таблицы при внутреннем соединении образуются из сцепления строк первой и второй таблиц, когда их значения по соединяемому полю совпадают.
Запросы на внешнее соединение строятся на основе модификации операции соединения. При левом внешнем соединении (LEFT JOIN)строки итоговой таблицы образуются из всех строк первой (левой) таблицы с «прицеплением» строк второй таблицы, если значенияполя соединениясовпадают. Если среди строк второй (правой) таблицы нет строк с соответствующим значением поля соединения, то в итоговой таблице присоединяемые поля заполняются пустыми значениями. При правом внешнем соединении (RIGHT JOIN)строки итоговой таблицы строятся по противоположному правилу.
В большинстве случаев запросы на основе внутреннего соединения, по сути, являются процессом денормализациисвязанных таблиц, на которые база данных разделяется при проектировании, исходя из требований рационализации размещения данных.
Запросы на соединение реализуются на основе включения в предложение FROMв качестве источника данных конструкции вида «имя_1-й_таблицы INNER (LEFT/RIGHT) JOINимя_2-й_таблицыONимя__поля_соединения_1-й_таблицы=имя_поля_соединения_2-й_таблицы». На рис. 4.15 приведен пример реализации операций внутреннего, а также левого и правого внешних соединений таблиц «Сотрудники» и «Исполнение» (документов) по полю «Фамилия».
На рис. 4.15 приведены также варианты построения SQL-инструкций, для реализации соответствующих запросов. Как видно из рисунка, выбортипа соединенияопределяетсяцелямидальнейшегоиспользования результатовзапроса.
Рис. 4.15, а. Левое внешнее соединение
При внутреннем соединении целью является получение новой таблицы с итоговыми данными по уже состоявшимся связям.
Рис. 4.15, в. Правое внешнее соединение
Внешнее соединение по смыслу направлено на создание итоговой таблицы для просмотра и анализа состоявшихся и еще несостоявшихся связей. При этом для левого внешнего объединения упор делается на анализ связей от первой таблицы (в нашем случае от сотрудников, чтобы просмотреть и проанализировать, кто и какие документы исполнил, а кто вообще не исполнил ни одного документа). Иначе говоря, информация по связямслужит в качестведополнительного аспекта, дополнительной характеристики для записей левой таблицы. Для правого внешнего объединения упор делается на анализ связей от второй таблицы (в нашем случае от «Исполнения», чтобы просмотреть и проанализировать, какие документы исполнены и какими сотрудниками, записи о которых находятся в таблице «Сотрудники»).
В некотором смысле антиподом запросов на соединение является специальный вид запросов на выборку, называемый запросом на поиск записей без подчиненных.
Поиск записей без подчиненных применяется для анализа данных в связанных таблицах, когда связи в силу каких-либо причин не состоялись. Реализуется данный вид запроса на основе запроса на левое (правое) внешнее соединение с дополнительным условием отбора записей с пустыми значениями по полю соединения в правой (левой) таблице. По сути, запрос на поиск записей без подчиненных противоположен запросу на внутреннее соединение. Примером запроса по поиску записей без подчиненных, представленным на рис. 4.16, является запрос, строящий набор записей по таблице «Сотрудники», которые не исполнили ни одного документа, т. е. не имеют подчиненных записей в таблице «Исполнение».
Запросы на соединение могут решать и более сложные логические информационные задачи по анализу связанных данных в цепочках из нескольких таблиц. В качестве примера такого рода запросов* можно привести следующий запрос по формированию набора записей сотрудников, командированных в январе 1998 г. в организации г. Саратова со служебным заданием «Сопровождение поставок», данные из которого выбираются из последовательно связанных отношением «Один-ко-многим» 4-х таблиц — «Сотрудники», «Командировки», «Пункт командирования», «Задания»:
* В данном случае далеко не самого сложного.
SELECTCoтрудники*
FRОМ((Сотрудники INNERJOINКомандировкиONСотрудники.ФИО = Командировки.ФИО) INNER JOINЗадания ONКомандировки.Служебное задание=Задания.Наименование)INNER JOINПункт командированияONКомандировки. Пункт командирования = Пункт командирования. Наименование
Рис. 4.16. Пример запроса по поиску записей без подчиненных
WHERE((Пункт командирования.Город) = «Саратов») AND ((Задания.Наименование) = «Сопровождение поставок») AND ((Командировки. Дата убытия) Between #1/1/98#Апd#1/31/98#);
Запросы на объединение данныхреализуютоперацию объединения реляционных таблици решают задачи создания наборов данных, объединяющих однотипные по смыслу записи (по группам однотипных полей) из нескольких таблиц. Строятся запросы на объединение через SQL-инструкцию SELECT—UNION SELECT.При этом запрос состоит из первой инструкции SELECT,в которой перечисляются отбираемые поля и условия отбора записей из первой таблицы, и последующих инструкций UNION SELECT,в которых указываются отбираемые поля и условия отбора записей из других таблиц. Обязательным условием является одинаковое количество отбираемых полей в первой инструкции SELECTи последующих инструкциях UNION SELECT.При этом типы и длина полей в первой инструкции и последующих инструкциях могут не совпадать.
При необходимости в итоговом наборе данных наименования отбираемых полей можно изменить через ключевое слово ASпосле соответствующего поля в первой инструкцииSELECT.
По умолчанию повторяющиеся записи не возвращаются, но через использование предиката ALLпосле ключевого словаUNION можно обеспечить режим отбора всех, в том числе и повторяющихся записей.
На рис. 4.17 приведен пример отбора и объединения данных из таблиц «Исходящие» и «Входящие» базы «Документооборот» с целью формирования общего списка документов, поступивших после 1 декабря 1998 г., и документов, отправленных после 20 декабря 1998 г. В запросе первые и последние поля переименованы, чтобы объединить смысл этих полей в исходных таблицах.