Материал: Базы данных Учебное пособие

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
background image

71 

окажется связанных записей во второй, то будут просто выведены пустые зна-
чения (NULL). 

Для  предыдущего  примера  изменим  формулировку  запроса  –  выведем 

информацию об оценках студентов, а также выведем информацию о студентах, 
которые ещё не сдавали экзамены. 

Для реализации такого запроса в предыдущем примере необходимо всего 

лишь использовать LEFT JOIN вместо JOIN. 

SELECT  Студент.ФИО,  Успеваемость.Предмет,  Успевае-

мость.Оценка FROM Студент LEFT JOIN Успеваемость ON Сту-
дент.Номер=Успеваемость.НомерСтудента; 

Результат выполнения подобного запроса – таблица 3.18. 

Таблица 3.18 – Запрос «Успеваемость» с измененной формулировкой 

ФИО 

Предмет 

Оценка 

Иванов Сергей Петрович 

Базы данных 

Белов Петр Иванович 

Базы данных 

Иванов Сергей Петрович 

Информатика 

Белов Петр Иванович 

Информатика 

Алексеев Семен Олегович 

 

 

Петров Иван Сергеевич 

 

 

В данном случае были выведены все записи из таблицы «Студент» и свя-

занные с ними записи таблицы «Успеваемость». Как видно из таблицы, для за-
писей, у которых не было связей, были выведены пустые поля (в зависимости 
от  используемой  СУБД  на  экране  в  таких  ситуациях  появляются  либо  пустые 
ячейки, либо значения NULL). 

Оператор  RIGHT  JOIN  работает  аналогично  LEFT  JOIN  с  той  лишь 

разницей, что «главной» становится таблица, указанная справа от оператора. 

Оператор  FULL  JOIN  означает полное  внешнее  соединение и фактиче-

ски является объединением левого и правого соединения. В итоговый результат 
попадают все строки из первой (левой) таблицы, которые дополняются пусты-
ми  значениями для несвязанных  записей,  а  также  все  строки правой  таблицы, 
которые дополняются пустыми значениями для несвязанных записей. 

Оператор CROSS JOIN осуществляет вывод декартова произведения за-

писей нескольких таблиц. 

background image

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.  Назовите оператор, используемый при операции объединения таблиц. 

background image

73 

4 Проектирование баз данных 

Как уже говорилось ранее, любая база данных не может существовать са-

ма по себе, ведь в большинстве случаев база данных является главной состав-
ной  частью  некоторой  информационной  системы.  Всех  пользователей  такой 
информационной  системы,  а  следовательно  и  находящейся  в  её  составе  базы 
данных, можно условно разделить на две категории: пользователи, работающие 
с  информацией  в  базе  данных, и  проектировщики,  участвующие  в  создании и 
поддержании базы данных в рабочем состоянии.  

Первая категория пользователей осуществляет непосредственно операции 

над данными, такие как внесение информации в базу данных, изменение суще-
ствующей  информации,  удаление,  просмотр,  распечатка  и  т. д.  Пользователи 
порой даже не задумываются над тем, какие объекты используются в конкрет-
ной базе данных, а просто работают с различными инструментами, которые вы-
водят  нужную  информацию  на  экран.  Например,  заходя  на  сайт  интернет-
магазина или просматривая новости, пользователи не знают, в каких таблицах 
хранится эта информация, а просто осуществляют взаимодействие с ней с по-
мощью предложенного проектировщиками и разработчиками пользовательско-
го интерфейса системы. 

В задачи  проектировщика  входят  уже  совершенно  другие  процессы. 

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

4.1 Жизненный цикл БД 

Все процессы, связанные с созданием, проектированием и эксплуатацией 

баз данных, образуют так называемый жизненный цикл баз данных

background image

74 

 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   

Жизненный  цикл  баз  данных  (ЖЦ  БД)  –  это  непрерывный 

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

Основные этапы ЖЦ приведены на рисунке 4.1. 

 

Рис. 4.1 – Этапы жизненного цикла БД 

Остановимся подробнее на каждом из этапов ЖЦ: 
1. Планирование и анализ требований к информационной системе. 
Планирование  будущей  информационной  системы  является  первым  эта-

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

Наиболее важными результатами этого этапа являются: 

•  описание целей и задач будущей ИС; 

•  выработка общих требований заказчика к созданию ИС; 

Планирование

Проектирование БД

Реализация ИС

Внедрение

Эксплуатация

background image

75 

•  обследование объекта автоматизации – функций и структуры органи-

зации, перечень задач, подлежащих автоматизации, исследование уже 
существующей на предприятии АИС и т. д.; 

•  ориентировочный 

состав  технических  средств  и  технико-

экономическое обоснование всего проекта; 

•  исследование  информационных  потребностей  всех  будущих  пользо-

вателей системы. 

Для серьезных проектов этап планирования и анализа требований закан-

чивается  составлением  технического  задания,  т. е.  документа,  определяющего 
цели,  требования  и  основные  исходные  данные,  необходимые  для  разработки 
автоматизированной информационной системы [13]. 

2. Проектирование базы данных. 
Процесс проектирования БД представляет собой последовательность пе-

реходов  от  неформального  словесного  описания  информации  о  некоторой 
предметной  области  к  формализованному  описанию  объектов  предметной  об-
ласти  в  терминах  некоторой  модели,  например  реляционной.  Выделим  основ-
ные шаги данного этапа: 

•  системный анализ и описание объектов предметной области; 

•  инфологическое проектирование; 

•  логическое проектирование на основе выбранной СУБД; 

•  физическое проектирование. 
Основные этапы проектирования приведены на рисунке 4.2. 
Системный  анализ предметной  области  состоит  в  том,  что  необходимо 

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

Инфологическое  проектирование  –  проектирование  инфологической  мо-

дели предметной области, т. е. формализованного описания объектов предмет-
ной  области  в  терминах некоторой семантической  модели,  например  в  терми-
нах модели «сущность – связь», или ER-модели. 

Результатом  данного  этапа  будет  получение  так  называемой  ER-

диаграммы предметной области, которая фактически является промежуточным 
звеном между словесным описанием ПО и схемой данных готового проекта БД. 

Источник: https://files.student-it.ru/previewfile/1188