
71
окажется связанных записей во второй, то будут просто выведены пустые зна-
чения (NULL).
Для предыдущего примера изменим формулировку запроса – выведем
информацию об оценках студентов, а также выведем информацию о студентах,
которые ещё не сдавали экзамены.
Для реализации такого запроса в предыдущем примере необходимо всего
лишь использовать LEFT JOIN вместо JOIN.
SELECT Студент.ФИО, Успеваемость.Предмет, Успевае-
мость.Оценка FROM Студент LEFT JOIN Успеваемость ON Сту-
дент.Номер=Успеваемость.НомерСтудента;
Результат выполнения подобного запроса – таблица 3.18.
Таблица 3.18 – Запрос «Успеваемость» с измененной формулировкой
ФИО
Предмет
Оценка
Иванов Сергей Петрович
Базы данных
4
Белов Петр Иванович
Базы данных
5
Иванов Сергей Петрович
Информатика
4
Белов Петр Иванович
Информатика
4
Алексеев Семен Олегович
Петров Иван Сергеевич
В данном случае были выведены все записи из таблицы «Студент» и свя-
занные с ними записи таблицы «Успеваемость». Как видно из таблицы, для за-
писей, у которых не было связей, были выведены пустые поля (в зависимости
от используемой СУБД на экране в таких ситуациях появляются либо пустые
ячейки, либо значения NULL).
Оператор RIGHT JOIN работает аналогично LEFT JOIN с той лишь
разницей, что «главной» становится таблица, указанная справа от оператора.
Оператор FULL JOIN означает полное внешнее соединение и фактиче-
ски является объединением левого и правого соединения. В итоговый результат
попадают все строки из первой (левой) таблицы, которые дополняются пусты-
ми значениями для несвязанных записей, а также все строки правой таблицы,
которые дополняются пустыми значениями для несвязанных записей.
Оператор CROSS JOIN осуществляет вывод декартова произведения за-
писей нескольких таблиц.

72
3.7.3 Объединение таблиц
Ещё одним оператором, позволяющим выводить данные нескольких таб-
лиц, является оператор UNION. Данный оператор производит «объединение»
строк из нескольких запросов в единый массив и имеет следующий синтаксис:
SELECT … FROM …
UNION
SELECT … FROM …
UNION
SELECT … FROM …
В результате выполнения к строкам первого запроса фактически будут
присоединены строки второго запроса и т. д. Важно понимать, что количество
полей в каждом из объединяемых запросов должно быть одинаковым, кроме
того, типы полей также должны соответствовать друг другу.
Для примера рассмотрим запрос, который выводит список студентов и
преподавателей, а также даты их рождения.
SELECT ФИО, ДатаРождения FROM Студент
UNION
SELECT ФИО, ДатаРождения FROM Преподаватель;
Для работы с группой записей и подсчета различных итоговых результа-
тов для групп в языке SQL существуют групповые функции. Принцип работы
групповой функции состоит в выведении одного результирующего значения
для группы строк.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Контрольные вопросы по главе 3
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
1. Перечислите основные классы языка SQL.
2. Какие два ключевых слова обязательно используются в любой опера-
ции выборки данных из таблицы?
3. Перечислите операторы DML.
4. В чем разница между операторами ORDER BY и GROUP BY?
5. Для чего может быть использован подобный запрос: SELECT
COUNT(*) FROM Таблица1?
6. В чем отличия оператора HAVING от оператора WHERE?
7. В чем разница между операторами INNER JOIN и LEFT(RIGHT)
JOIN?
8. Назовите оператор, используемый при операции объединения таблиц.

73
4 Проектирование баз данных
Как уже говорилось ранее, любая база данных не может существовать са-
ма по себе, ведь в большинстве случаев база данных является главной состав-
ной частью некоторой информационной системы. Всех пользователей такой
информационной системы, а следовательно и находящейся в её составе базы
данных, можно условно разделить на две категории: пользователи, работающие
с информацией в базе данных, и проектировщики, участвующие в создании и
поддержании базы данных в рабочем состоянии.
Первая категория пользователей осуществляет непосредственно операции
над данными, такие как внесение информации в базу данных, изменение суще-
ствующей информации, удаление, просмотр, распечатка и т. д. Пользователи
порой даже не задумываются над тем, какие объекты используются в конкрет-
ной базе данных, а просто работают с различными инструментами, которые вы-
водят нужную информацию на экран. Например, заходя на сайт интернет-
магазина или просматривая новости, пользователи не знают, в каких таблицах
хранится эта информация, а просто осуществляют взаимодействие с ней с по-
мощью предложенного проектировщиками и разработчиками пользовательско-
го интерфейса системы.
В задачи проектировщика входят уже совершенно другие процессы.
Главной его задачей является создание корректной структуры базы данных, ко-
торая позволит оптимальным образом обеспечить хранение и управление ин-
формацией. Таким образом, проектировщики основную часть времени взаимо-
действуют не с данными, а с объектами баз данных, такими как таблицы,
запросы, связи и т. д. Даже после создания и внедрения в работу проектиров-
щик может вносить изменения в существующие структуры баз данных: изме-
нять таблицы, добавлять новые объекты. Ещё одной важной задачей при разра-
ботке информационной системы является разработка интерфейса пользователя,
однако эта задача напрямую не относится к проектированию базы данных, а ре-
ализуется отдельно либо после разработки готовой базы данных, либо создает-
ся параллельно с процессами проектирования БД.
4.1 Жизненный цикл БД
Все процессы, связанные с созданием, проектированием и эксплуатацией
баз данных, образуют так называемый жизненный цикл баз данных.

74
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Жизненный цикл баз данных (ЖЦ БД) – это непрерывный
процесс, начинающийся с момента принятия решения о необходи-
мости создания базы данных и заканчивающийся в момент полного
ее изъятия из эксплуатации.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Основные этапы ЖЦ приведены на рисунке 4.1.
Рис. 4.1 – Этапы жизненного цикла БД
Остановимся подробнее на каждом из этапов ЖЦ:
1. Планирование и анализ требований к информационной системе.
Планирование будущей информационной системы является первым эта-
пом жизненного цикла, без которого остальные этапы просто не имели бы
смысла. Именно здесь выясняется необходимость в создании действительно
нового подхода к дальнейшей деятельности организации, связанного с автома-
тизацией при работе с информацией. Это может произойти в силу разных при-
чин, например предприятие или пользователь до этого осуществляли работу с
информацией в ручном режиме или просто в режиме работы с отдельными
электронными документами или файлами. Кроме того, необходимость в созда-
нии новой ИС, а вследствие и базы данных, могла возникнуть по причине уста-
ревания уже существующей ИС.
Наиболее важными результатами этого этапа являются:
• описание целей и задач будущей ИС;
• выработка общих требований заказчика к созданию ИС;
Планирование
Проектирование БД
Реализация ИС
Внедрение
Эксплуатация

75
• обследование объекта автоматизации – функций и структуры органи-
зации, перечень задач, подлежащих автоматизации, исследование уже
существующей на предприятии АИС и т. д.;
• ориентировочный
состав технических средств и технико-
экономическое обоснование всего проекта;
• исследование информационных потребностей всех будущих пользо-
вателей системы.
Для серьезных проектов этап планирования и анализа требований закан-
чивается составлением технического задания, т. е. документа, определяющего
цели, требования и основные исходные данные, необходимые для разработки
автоматизированной информационной системы [13].
2. Проектирование базы данных.
Процесс проектирования БД представляет собой последовательность пе-
реходов от неформального словесного описания информации о некоторой
предметной области к формализованному описанию объектов предметной об-
ласти в терминах некоторой модели, например реляционной. Выделим основ-
ные шаги данного этапа:
• системный анализ и описание объектов предметной области;
• инфологическое проектирование;
• логическое проектирование на основе выбранной СУБД;
• физическое проектирование.
Основные этапы проектирования приведены на рисунке 4.2.
Системный анализ предметной области состоит в том, что необходимо
привести подробное словесное описание всех объектов и взаимосвязей между
описываемыми объектами в предметной области. Кроме того, должны быть
сформулированы конкретные задачи, которые будут решаться с использовани-
ем данной БД с кратким описанием алгоритмов их решения, описанием вход-
ных и выходных документов, на основе которых будет производиться ввод и
вывод информации в информационную систему.
Инфологическое проектирование – проектирование инфологической мо-
дели предметной области, т. е. формализованного описания объектов предмет-
ной области в терминах некоторой семантической модели, например в терми-
нах модели «сущность – связь», или ER-модели.
Результатом данного этапа будет получение так называемой ER-
диаграммы предметной области, которая фактически является промежуточным
звеном между словесным описанием ПО и схемой данных готового проекта БД.