Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Реляционные базы данных. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
794 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САМАРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

К а ф е д р а «Прикладная математика и информатика»

А.Н. МАЛЯРОВ

РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ

Учебное пособие по курсу «Информатика и информационные технологии»

Самара Самарский государственный технический университет

2021

1

Печатается по решению методического совета института автоматики и информационных технологий (протокол № 5 от 16.12.2020 г.).

УДК 004.652.4(075.8)

ББК 32.973я73 М 21

Маляров А.Н.

Реляционные базы данных: учеб. пособие / А.Н. Маляров. – Самара: Самар. гос. техн. ун-т, 2021. – 62 с.

Рассматриваются особенности моделей информационных объектов на основе реляционных баз данных, приемы проектирования однотабличных и многотабличных баз данных с использованием СУБД Base. Приводятся основные операции языка запросов к реляционным базам данных SQL и языка программирования VBA для создания макросов применительно к СУБД Access.

Учебное пособие предназначено студентам технических вузов и может использоваться при изучении общеобразовательного курса «Информатика и информационные технологии».

Р е ц е н з е н т ы : д-р физ.-мат. наук, профессор А.И. Жданов, канд. пед. наук, доцент Т.Н. Кочетова

УДК 004.652.4(075.8)

ББК 32.973я73 М 21

© А.Н. Маляров, 2021 © Самарский государственный

технический университет, 2021

2

Одним из основных направлений общеобразовательного курса «Информатика и информационные технологии» является изучение реляционных баз данных.

Настоящая работа охватывает широкий круг вопросов и касается изучения СУБД Access и Base, языка запросов к реляционным базам данных SQL и языка программирования VBA для создания макросов применительно к СУБД Access. Охват рассматриваемых тем позволяет сформировать целостный взгляд на одну из важнейших областей информационных технологий.

В конце каждого раздела приведены контрольные вопросы для самопроверки.

1. ПОНЯТИЕ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ

База данных (БД) – это совокупность сведений, объединенных и структурированных по определенным правилам, которая является информационной моделью рассматриваемого объекта [1, 2, 3].

По способу организации БД могут иметь сетевую, иерархическую или табличную структуру.

Сетевая структура графически представляется в виде неориентированного или ориентированного графа. Ориентированный граф (орграф) содержит вершины и направленные дуги, связывающие вершины между собой. Примером является орграф, отражающий совместимость групп крови, то есть возможность принимать и отдавать кровь для каждой группы.

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

Иерархическая структура имеет вид дерева с несколькими уровнями, причем связи могут существовать только между соседними уровнями. Она описывает отношения главенства и подчинения и мо-

3

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

Наибольшее распространение получили реляционные базы данных [3, 6]. Они состоят из одной или нескольких таблиц, связанных между собой. В таблицах столбцы называются полями, а строки записями. В каждой таблице содержится одно или несколько полей, называемых ключевыми. Для строк таблицы их содержание в ключевом поле (или в нескольких полях) не повторяется, то есть обладает уникальностью. Каждая запись также не повторяется.

Основными объектами реляционных БД являются:

таблицы (основной объект);

запросы, служащие для выбора необходимых данных из таблиц по требованию пользователей;

формы, необходимые для ввода данных при наполнении таблиц;

отчеты, служащие для вывода данных на печать с учетом специфических требований к оформлению;

страницы, обеспечивающие связь между веб-страницами и базой данных;

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

Связи между таблицами могут быть трех видов [3]. Связь вида «Один-к-Одному» означает, что запись первой таблицы соответствует только одной записи во второй таблице. Связь вида «Один-ко- Многим» означает, что одной записи в первой таблице может соответствовать несколько записей во второй таблице, но не наоборот. Связь «Многие-ко-Многим» означает, что каждой записи в любой таблице может соответствовать несколько записей в другой таблице.

Рассмотрим в качестве примера БД районной поликлиники. Она содержит, в частности, таблицы пациентов (жителей района), участковых врачей и врачей-специалистов узкого профиля. Таблица пациентов может быть очень объемной, если фиксировать все результаты их посещений различных подразделений поликлиники (врачей, лабораторий, процедурных кабинетов и т.д.). Поэтому таблицу пациентов целесооб-

4

разно разбить на две или более таблиц со связями «Один-к-Одному». Один участковый врач может обслуживать только свой участок, т.е. определенное множество жителей. Поэтому связь между таблицей участковых врачей и таблицей пациентов имеет вид «Один-ко- Многим». Вместе с тем любой житель района может обратиться к любому требуемому узкому специалисту, и тот может обслуживать любого жителя. Такая связь отражает отношение «Многие-ко-Многим».

Структура реляционной БД отражает:

состав всех таблиц;

ключевое поле (поля) в каждой таблице;

состав полей в каждой таблице с указанием имени поля, типа

иформата данных для записи в это поле;

виды связей между таблицами.

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

После создания структуры производится заполнение БД данными. Все операции в БД производятся с помощью языка манипулирования данными.

Наиболее распространенной системой управления базами данных (СУБД) является, в частности, Access из пакета Microsoft Office.

СУБД Base, которая входит в офисный пакет LibreOffice (ранее известна как OpenOffice.org), является наиболее распространенной в российских образовательных учреждениях как объект изучения, так как в функциональном отношении и по схожести интерфейсов во многом повторяет другие известные СУБД, используемые в корпоративном секторе.

СУБД Base и Access относятся к классу пользовательских реляционных систем. В них используется собственный синтаксис, поэтому знание специализированного языка управления базами данных SQL не требуется. СУБД Base является бесплатным полнофункциональным аналогом Access.

Более подробно рассмотрим операции с реляционными БД.

5

Одним из объектов реляционных БД являются запросы. Они позволяют получать требуемые данные из исходных таблиц, при этом могут создаваться временные таблицы.

Для отбора записей при запросах используются так называемые маски. Маски – это условия фильтрации, они могут иметь специальные символы «*», «\» или «?» Условие «*» означает, что вместо этого специального символа могут присутствовать любой допустимый символ или не использоваться ни один из допустимых символов. Условие «?» означает, что может использоваться только один допустимый символ. Условие «\» означает «кроме, исключая».

Пусть, например, задана маска d*1??? Какое слово удовлетворяет этой маске: Dm9712 или depo1325? Правильным ответом является последний вариант.

В запросах используют логические операции И (AND), ИЛИ (OR), НЕ (NOT), ЕСЛИ (IF). Порядок действия операций следующий. Наивысшим приоритетом обладает операция отрицания НЕ. Операции логического умножения И имеют приоритет над операциями логического сложения ИЛИ.

Кроме того, часто используют операцию Between (между), отражающую допустимый интервал. Например, условие Between 5 И 9 означает, что выбор может производиться с любым числом между 5 и 9, включая границы интервала (то есть 5, 6, 7, 8, 9).

Условие Date() означает текущую дату, запись Date()–1 означает вчерашний день, а запись Date()–5 означает дату 5 дней назад.

Не следует забывать, что строковые переменные заключаются в кавычки, апострофы или в треугольные скобки.

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

Рассмотрим технологию получения результатов при выполнении различных запросов.

6

Пусть задана таблица с оценками тестирования для нескольких студентов. Запрос состоит в определении состава студентов, удовлетворяющего условию:

Математика>30 И Информатика>35 ИЛИ Физика>28

Номер

Фамилия

Математика

Информатика

Физика

 

 

 

 

 

1

Аваков С.

25

51

26

 

 

 

 

 

2

Путилин Ф.

53

35

25

 

 

 

 

 

3

Семенов В.

32

50

27

 

 

 

 

 

4

Фокин А.

31

47

43

 

 

 

 

 

5

Семенова Е.

32

35

28

 

 

 

 

 

Рассмотрим первую запись. Она не удовлетворяет условиям, так как Математика=25<30, а также Физика=26<28.

Вторая запись не удовлетворяет условиям запроса, а также Физи-

ка=25<28.

Третья запись удовлетворяет условиям запроса, так как Математика=32>30 И Информатика=50>35. Последнее условие не изменяет результата.

Четвертая запись также удовлетворяет условиям запроса, так как Математика=31>30 И Информатика=47>35. Но даже если бы условия, связанные операцией И, не выполнялись, то выполнение условия Физика=43>28 позволяет удовлетворить запрос.

Пятая запись не удовлетворяет критериям запроса, т.к. Информатика=35, а также Физика=28.

Поэтому указанному запросу удовлетворяет две записи: третья и четвертая.

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

7

По первому простому условию Математика>30 подмножеством удовлетворяющих ему записей является (2, 3, 4, 5). По второму простому условию Информатика>35 находим подмножество записей (1, 3, 4). По третьему простому условию Физика>28 получаем подмножество записей (4).

Операция И по двум первым условиям приводит к подмножеству записей (3, 4). Операция ИЛИ для подмножеств: (3, 4) ИЛИ (4) приводит к результату (3, 4).

Один из типов запросов к БД требует упорядочения по полям. Например, для рассмотренной задачи необходимо определить, какое место занял студент Фокин А. по информатике среди других студентов из таблицы, а также определить студента, набравшего наибольшее число баллов. Сортировка поля Информатика по убыванию приводит к результату – 3 место. Суммирование баллов по всем предметам и упорядочение результатов в порядке убывания приводит к ответу: наибольшее число баллов набрал студент Фокин А (121).

Рассмотрим запрос, требующий анализа включения числа в интервал. По нему необходимо найти число студентов, набравших по предмету Математика от 32 до 50 балов. Запрос имеет вид: Математика=Between 32 AND 50. Результат поиска – это записи (3, 5).

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

Для первого студента сумма баллов равна 25*1,5+51+26=114,5. Для второго студента сумма баллов равна 53*1,5+35+25=139,5. Для третьего студента сумма баллов равна 32*1,5+50+27=125.

Для четвертого студента сумма баллов равна

31*1,5+47+43=136,5.

Для пятого студента сумма баллов равна 32*1,5+35+28=111. Таким образом, с учетом коэффициента важности наиболее успе-

вающим студентом является Путилин Ф. (строка 2).

Определим, как влияет применение операций ИЛИ, И в запросах на количество результатов. Пусть в таблице содержится 5 записей.

8

По первому запросу было выбрано 2 записи, а по второму запросу 3 записи. Какое наибольшее и наименьшее число записей будет иметь результат сложного запроса, если он сформирован путем объединения простых запросов операцией И?

Если подмножество результатов (т.е. записи) по первому и второму запросу не имеют общих записей (то есть не пересекаются), то по сложному запросу не будет выбрана ни одна запись. Но если результаты будут пересекаться, то количество записей, по которым произойдет пересечение, может быть 1 или 2. Таким образом, в результате сложного запроса может быть получена одна или две записи или же не получена ни одна запись.

Пусть мы имеем эту БД и указанные простые запросы. Необходимо определить наибольшее и наименьшее число записей, которое будет получено в результате выполнения сложного запроса, который объединяет простые запросы операцией ИЛИ. Если подмножества записей не пересекаются по первому и второму простому запросу, то будет выбрано 2+3=5 записей. Если же произошло полное пересечение, то две записи по первому запросу полностью совпадут с частью записей по второму запросу, и в этом случае число результирующих записей будет равно 3. Таким образом, в результате сложного запроса может быть выбрано 3, 4 или 5 записей.

Контрольные вопросы

1.Какие типы систем управления базами данных существуют? В чем состоят их отличия?

2.Что понимают под структурой реляционных баз данных?

3.С какими объектами работает реляционная база данных?

4.Что называется ключевым полем (полями), для каких целей оно используется?

5.Какие виды связей существуют между таблицами? Приведите примеры.

6.Что является полем и записью в таблице?

7.Как работает операция Between при выполнении запросов?

8.Для каких целей используются логические функции при конструировании запросов?

9.Что называется маской запроса и каким целям она служит?

9

2. ОСНОВЫ ЯЗЫКА ЗАПРОСОВ SQL 2.1. Создание таблиц

Основные типы запросов строятся по принципу повторения по образцу. Вместе с тем не все запросы можно создать стандартными средствами СУБД. В таких случаях необходимо прибегать к языку SQL, являющемуся стандартом языка реляционных баз данных. Он разработан Американским национальным институтом стандартов ANSI. Рассмотрим основы построения запросов на этом языке [2, 6].

SQL (Structured Query Language) – язык структурированных за-

просов, предназначенный для описания, изменения и извлечения данных, хранимых в виде таблиц. Таким образом, он является языком структурированных запросов для реляционных баз данных. Вместе с тем для каждой профессиональной СУБД есть свой диалект этого языка, например MS SQL, My SQL, Postgre SQL.

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

Для создания таблицы используется выражение CREATE TABLE. В качестве примера создадим таблицу с именем first, содержащую три поля:

num – порядковый номер студенческой группы (формат целочисленный int);

name – наименование специальности для группы (формат строки varchar (30) максимальной длиной в 30 символов);

stud – число студентов в одной группе (формат целочисленный int). Код для создания таблицы имеет вид:

CREATE TABLE first (num int, name varchar(30), stud int);

10

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