Вы находитесь на странице: 1из 140

Министерство образования и науки Украины

Одесская национальная академия связи им. А. С. Попова

Кафедра информационных технологий

Трофименко Е. Г., Буката Л. Н., Швайко И. Г.

Создание и обработка
баз данных

Конспект лекций

Одесса 2014
УДК 004.43
План УМИ 2014 г.

Рецензент
Ю.В. Флейта, к.т.н., доцент кафедры Компьютерно-интегрированных
технологических процессов и производств ОНАС им. А.С. Попова

Трофименко Е. Г. Создание и обработка баз данных : курс лекций / Тро-


фименко Е. Г., Буката Л. Н., Швайко И. Г. – Одесса: ОНАС им. А. С. Попова,
2014. – 140 с.

В данном пособии в краткой и систематизированной форме рассмотрены


основные понятия и терминология, используемая в системах управления раз-
личными базами данных, функциональные особенности работы с реляционны-
ми базами данных на примере средств управления базами данных, имеющими-
ся в Excel и Access, а также при использовании языка запросов SQL. Представ-
ленный материал содержит большое количество практических примеров, иллю-
страций и подробные описания процедур выполнения конкретных заданий.
Предназначено для закрепления лекционного материала и приобретения
практических навыков работы с базами данных студентами всех специально-
стей, изучающих дисциплины "Создание и обработка баз данных" и "Базы дан-
ных" с целью дальнейшего использования этих навыков в своей повседневной и
будущей профессиональной деятельности. Может использоваться преподавате-
лями в качестве дидактического материала, а также для самостоятельного изу-
чения и повышения квалификации.

Одобрено на заседании кафедры Утверждено методическим


информационных технологий советом академии связи.
и рекомендовано к печати. Протокол № 9/14 от 19.05.2014 г.
Протокол № 7 от 12.02.2014 г.
3

Лекция 1. Теория проектирования баз данных


1. Информационные системы: понятие и возможности.
2. Понятие банка данных, базы данных (БД) и СУБД. Функции СУБД.
3. Классификации СУБД.
4. Модели данных.
5. Этапы проектирования БД.

1. Информационные системы: понятие и возможности


В основе решения многих задач лежит обработка информации с помощью
компьютера. Для облегчения обработки информации создаются информацион-
ные системы. Существуют разные формулировки понятия информационной
системы, рассмотрим некоторые из них.
Информационная система (ИС, англ. information system) – это совокуп-
ность тем или иным способом структурированных данных и комплекса аппа-
ратно-программных средств для хранения данных и манипулирования ими.
Международный стандарт ISO/IEC 2382-1 дает такое определение: "Информа-
ционная система – система обработки информации, работающая совместно с
организационными ресурсами, такими как люди, технические средства и фи-
нансовые ресурсы, которые обеспечивают и распределяют информацию".
В широком понимании можно сказать, что под определение ИС подпадает лю-
бая система обработки информации. Но зачастую используется более узкая
трактовка понятия ИС как совокупности аппаратно-программных средств, за-
действованных для решения некоторой прикладной задачи.
В зависимости от сферы применения ИС можно разделить на системы, ис-
пользуемые в производстве, образовании, здравоохранении, науке, военном деле,
торговле и других отраслях. Например, в организации может существовать одна
или несколько ИС, на которые возложены задачи учета кадров и материально-
технических средств, расчетов с поставщиками и заказчиками, бухгалтерского
учета и т. п.
Ранее ИС полностью базировались на ручном труде. Самыми древними и са-
мыми распространенными ИС можно назвать библиотеки. Таким образом, ИС
может существовать и без применения компьютерной техники – это вопрос эко-
номической необходимости. Позже на смену ручному труду пришли различные
механические устройства для обработки данных, например, для сортировки, ко-
пирования, ассоциативного поиска и т. д. Следующим шагом стало внедрение ав-
томатизированных информационных систем (АИС или просто АС), т. е. систем,
где для обеспечения информационных потребностей пользователей используется
ЭВМ со своими носителями информации. В наше время – эпоху информационной
революции – разрабатывается и внедряется большое количество самых разнооб-
разных АИС с очень широким спектром использования. Сегодня, в век информа-
ции, практически каждая ИС использует компьютерные технологии, и поэтому
под информационными системами подразумевают именно автоматизированные.
4 Лекция 1. ТЕОРИЯ ПРОЕКТИРОВАНИЯ БАЗ ДАННЫХ

Автоматизированная информационная система (АИС, англ. automated


information (data) system) – это взаимосвязанная совокупность данных, оборудова-
ния, программных средств, персонала, стандартных процедур, которые предна-
значены для сбора, обработки, распределения, хранения, представления информа-
ции в соответствии с требованиями, которые вытекают из целей организации.

2. Понятие банка данных, базы данных (БД) и СУБД. Функции СУБД


Банк данных (БнД, англ. databank) является разновидностью АИС, в ко-
торой реализованы функции централизованного хранения и накопления боль-
ших объемов обрабатываемой информации, организованной в одну или не-
сколько баз данных. В состав БнД входят одна или несколько баз данных, спра-
вочник баз данных, система управления базами данных, а также библиотеки
запросов и прикладных программ. Поэтому довольно грубой, хотя и весьма
распространенной, является ошибка синонимичного использования терминов
"банк данных" и "база данных".
База данных (БД, англ. database) представляет собой совокупность специ-
альным образом организованных данных, хранимых в памяти компьютера, и
отображающих состояние объектов и их взаимосвязей в рассматриваемой
предметной области. Например, база данных по вузам (высшее образование),
база данных по лекарственным препаратам (медицина), база данных по автомо-
билям (автомагазин), база данных по стройматериалам (склад) и т. п.
Целостность БД (англ. database integrity) – свойство БД, означающее, что в
ней содержится полная, непротиворечивая и адекватно отражающая предметную
область информация. Поддержание целостности БД включает проверку целост-
ности и ее восстановление в случае обнаружения противоречий в БД. Примеры
правил поддержания целостности по значению: цена товара должна быть поло-
жительной; количество цифр в идентификационном номере налогоплательщика
должно быть равным 10-ти; возраст родителей не может быть меньше возраста
их биологического ребёнка и т. д. Целостность БД не гарантирует достоверности
содержащейся в ней информации, но обеспечивает, по крайней мере, правдопо-
добность этой информации, отвергая заведомо невероятные, невозможные зна-
чения. Для сохранения целостности необходимо с каждым изменением в таблице
производить обновление данных во всех взаимосвязанных таблицах.
Система управления базами данных (СУБД, англ. DataBase Management
System – DBMS) – это комплекс языковых и программных средств, предназначенный
для создания, ведения и совместного использования БД многими пользователями.
Основные функции СУБД:
– управление данными во внешней памяти (на дисках);
– управление данными в оперативной памяти (буферами оперативной па-
мяти) с использованием дискового кэша;
– поддержка языковых средств SQL;
– журнализация изменений, резервное копирование и восстановление БД
после сбоев;
– обеспечение целостности и безопасности БД;
– управление транзакциями.
Лекция 1. ТЕОРИЯ ПРОЕКТИРОВАНИЯ БАЗ ДАННЫХ 5

Под транзакцией понимается неделимая, с точки зрения воздействия на


БД, последовательность операторов манипулирования данными (чтения, удале-
ния, вставки, модификации). Основная функция подобных систем заключается
в выполнении большого количества коротких транзакций. Сами транзакции вы-
глядят относительно просто, например: "снять сумму денег со счета А, добавить
эту сумму на счет В". Проблема заключается в том, что, во-первых, транзакций
очень много, во-вторых, выполняются они одновременно (к системе может быть
подключено несколько тысяч одновременно работающих пользователей), в-
третьих, при возникновении ошибки, транзакция должна целиком откатиться и
вернуть систему к состоянию, которое было до начала транзакции (не должно
быть ситуации, когда деньги сняты со счета А, но не поступили на счет В).
Среди языковых средств современных СУБД можно выделить следующие:
1) структурированный язык запросов (англ. Structured Query Language –
SQL) – стандартное средство доступа к удаленным БД, позволяющее не только
работать с данными, но и управлять структурой БД (см. лекции 8 и 9);
2) язык запросов по образцу (англ. Query By Example – QBE) предназначен
для визуального конструирования запросов к БД.

3. Классификации СУБД
По используемой модели данных различают иерархические, сетевые, реля-
ционные, объектно-ориентированные и объектно-реляционные СУБД (см. п. 4).
По степени распределённости различают локальные (все части локальной
СУБД размещаются на одном компьютере) и распределённые СУБД (части
СУБД могут размещаться на двух и более компьютерах).
По способу доступа к БД различают файл-серверные, клиент-серверные и
встраиваемые СУБД.
В файл-серверных СУБД файлы данных располагаются централизованно
на файл-сервере. СУБД располагается на каждом клиентском компьютере (ра-
бочей станции). Доступ СУБД к данным осуществляется через локальную сеть.
Синхронизация чтений и обновлений осуществляется посредством файловых
блокировок. Примерами таких СУБД являются Microsoft Access, Paradox,
dBase, FoxPro, Visual FoxPro. Преимуществом этой архитектуры является низ-
кая нагрузка на процессор файлового сервера. К недостаткам можно отне-
сти: 1) потенциально высокую загрузку локальной сети, поскольку возникает
необходимость передавать по сети большие объемы информации;
2) затруднённость или невозможность централизованного управления, органи-
зации контроля доступа и синхронизации работы разных пользователей;
3) затруднённость или невозможность обеспечения таких важных характери-
стик как надёжность, доступность и безопасность. Поэтому, чаще всего, работа
с такими БД производится обычно в однопользовательском режиме или в систе-
мах с низкой интенсивностью обработки данных и низкими пиковыми нагрузка-
ми на БД. На данный момент файл-серверная технология считается устаревшей,
а её использование в крупных информационных системах – недостатком.
При клиент-серверной архитектуре СУБД вместе с БД располагается на
удаленном сервере, а приложения, работающие с этой БД, располагаются на
6 Лекция 1. ТЕОРИЯ ПРОЕКТИРОВАНИЯ БАЗ ДАННЫХ

компьютерах пользователей. Клиентом является приложение пользователя, ко-


торое формирует запрос для получения данных и посылает его на удаленный
сервер, где находится БД. Запрос формируется на языке SQL. При получении
такого запроса удаленный сервер отправляет его серверу базы данных (SQL-
серверу). Сервер базы данных представляет собой программу, с помощью кото-
рой осуществляется управление удаленной БД и обеспечивается выдача клиен-
ту результатов выполнения поступившего запроса. Вся работа с БД происходит
непосредственно на удаленном сервере. Недостаток клиент-серверных СУБД
состоит в повышенных требованиях к серверу. Достоинства: потенциально
более низкая загрузка локальной сети; удобство централизованного управле-
ния; удобство обеспечения таких важных характеристик как высокая надёж-
ность, высокая доступность и высокая безопасность. К СУБД с клиент-
серверной архитектурой относятся Oracle, MS SQL Server, MySQL, Interbase,
Firebird, IBM DB2, Informix, Sybase Adaptive Server Enterprise, PostgreSQL,
Caché.
Встраиваемая СУБД предназначена для локального хранения данных
своего приложения и не рассчитана на коллективное использование в сети. Фи-
зически встраиваемая СУБД чаще всего реализована в виде подключаемой биб-
лиотеки. Доступ к данным со стороны приложения может происходить через
SQL либо через специальные программные интерфейсы. Встраиваемая СУБД
может поставляться как составная часть некоторого программного продукта, не
требуя процедуры самостоятельной установки. Примеры встраиваемых СУБД:
OpenEdge, SQLite, BerkeleyDB, Firebird Embedded, Microsoft SQL Server Compact.

4. Модели данных
Логическую структуру данных, хранимых в БД, называют моделью пред-
ставления данных. К основным моделям представления данных (моделям
данных) относятся следующие: иерархические, сетевые, реляционные, объект-
но-ориентированные и объектно-реляционные.
Иерархическая модель (англ. hierarchical Уровень 1
data model) представляет собой древовидный Уровень 2
граф, в котором каждый из элементов связан Уровень 3
только с одним стоящим выше элементом (ро-
дителем, предком), но в то же время на него могут ссылаться один или не-
сколько стоящих ниже элементов (потомков). Все экземпляры данного типа по-
томка с общим экземпляром типа предка называют близнецами. Для такой БД
определен полный порядок обхода – сверху-вниз и слева-направо.
Для описания структуры иерархической БД при программировании ис-
пользуется тип данных "дерево" (рис. 1.1). Для организации физического раз-
мещения иерархических данных в памяти компьютера, как правило, использу-
ются динамические структуры-списки.
Достоинствам иерархической модели данных является быстрый доступ к
данным, так как заранее известны все вершины и все ключи к доступу информа-
ции.
Лекция 1. ТЕОРИЯ ПРОЕКТИРОВАНИЯ БАЗ ДАННЫХ 7

Организация

Отделы Филиалы

Начальник Сотрудники Оборудование

Компьютеры Факсы

Рисунок 1.1 – Пример иерархической древовидной структуры БД

Недостатком является громоздкость модели для обработки информации с


достаточно сложными логическими связями, а также сложность понимания для
обычного пользователя. Избыточность данных таких БД обусловлена тем, что
нельзя ссылаться на один и тот же элемент, и в таких случаях приходится дуб-
лировать информацию. Кроме этого, при изменении структуры модели данных
требуется значительное изменение программного обеспечения или создание
нового. Иерархическая модель приемлема только в случаях, если данные имеют
древовидную структуру. Но, если данные не имеют такой структуры, возникает
масса сложностей при построении иерархической модели и желании добиться
нужной производительности. Первые СУБД использовали именно иерархиче-
скую модель данных.
Сетевая модель БД (англ. network data model) представляет собой доста-
точно сложную структуру, состоящую из набора элементов (узлов, поимено-
ванных двухуровневых деревьев) и набора
связей между этими элементами, образую-
щих цепочки. По сути, сетевой подход к ор-
ганизации данных является расширением
иерархического. Основное отличие этих мо-
делей состоит в том, что в сетевой модели
запись может быть членом более чем одного
группового отношения (рис. 1.2). Сетевая модель данных позволяет отображать
разнообразные взаимосвязи элементов данных в виде произвольного графа,
обобщая тем самым иерархическую модель (рис. 1.3).
Поставщик 1 Поставщик 2

Товар 1 Товар 2 Товар 3 Товар 4

Покупатель 1 Покупатель 2

Рисунок 1.2 – Пример сетевой структуры БД


8 Лекция 1. ТЕОРИЯ ПРОЕКТИРОВАНИЯ БАЗ ДАННЫХ

ОРГАНИЗАЦИИ
БАНКИ
Организация 1 Банк 2
Банк 1

Работа
СОТРУДНИКИ Сотрудник 5

Накопления
Сотрудник 4 Счет 1
Сотрудник 3
Сотрудник 2
СЧЕТА
Сотрудник 1

Рисунок 1.3 – Пример схемы простейшей сетевой БД

При разработке сетевых моделей было выдумано множество "маленьких


хитростей", позволяющих увеличить производительность СУБД, но существен-
но усложнивших последние. Прикладной программист должен знать массу
терминов, изучить несколько внутренних языков СУБД, детально представлять
логическую структуру БД для осуществления навигации среди различных эк-
земпляров, наборов, записей и т. п. Один из разработчиков операционной систе-
мы UNIX сказал: "Сетевая база – это самый верный способ потерять данные".
Достоинством сетевой модели является возможность эффективной реали-
зации по показателям затрат памяти и оперативности. По сравнению с иерархи-
ческой моделью сетевая модель более адекватно отражает состав и структуру
предметной области за счет дополнительных связей между отдельными компо-
нентами.
Недостатком является высокая сложность и жесткость схемы БД, что
обуславливает сложность в ее использовании. Кроме того, в сетевой модели
ослаблен контроль целостности данных вследствие допустимости произволь-
ных связей, а при изменении информации требуется изменение программного
обеспечения (или его доработка). Как иерархическая, так и сетевая модель дан-
ных предполагает наличие высококвалифицированных программистов. И даже
в таких случаях реализация пользовательских запросов часто затягивается на
длительный срок.
Учитывая всю сложность иерархической и сетевой моделей, наиболее рас-
пространенной стала реляционная модель.
Реляционная БД (англ. relational database) – это БД, которая отражает
структуру предметной области в виде совокупности взаимосвязанных таблиц
(рис. 1.4).
Каждая реляционная таблица представляет собой двумерный массив и об-
ладает следующими свойствами:
– каждый элемент таблицы (отношения) – один элемент данных;
– все ячейки в столбце (поле или атрибуте) таблицы однородны, т. е. все
элементы в столбце имеют одинаковый тип (числовой, символьный и т. д.);
– каждый столбец имеет уникальное имя;
Лекция 1. ТЕОРИЯ ПРОЕКТИРОВАНИЯ БАЗ ДАННЫХ 9

– одинаковые строки (записи или кортежи) в таблице отсутствуют;


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

Рисунок 1.4 – Пример структуры реляционной БД

Физическое размещение данных в реляционных базах на внешних носи-


телях легко осуществляется с помощью обычных файлов.
Достоинства реляционной модели состоят в простоте и доступности для
понимания пользователем, удобстве физической реализации на компьютере,
наличии развитого математического аппарата, который позволяет достаточно
лаконично описать основные операции над данными. Еще одним преимущест-
вом реляционных баз является полная независимость данных, поскольку изме-
нения в прикладной программе при изменении реляционной БД минимальны, и
поэтому возможны изменения структуры модели данных не только на этапе
проектирования создания данных, но и на этапе эксплуатации. Кроме этого, для
организации запросов и написания прикладного ПО нет необходимости знать
конкретную организацию БД во внешней памяти.
Основным недостатком является медленный доступ к данным, поскольку
такие БД из-за избыточности данных занимают относительно много внешней
памяти. Кроме того, реляционные системы ограничены в структурах представ-
ления данных, так как все данные хранятся в них в виде взаимосвязанных от-
ношений (таблиц), состоящих из простых атрибутов (столбцов). При этом клас-
сическая реляционная модель предполагает неделимость (атомарность) данных,
хранящихся в столбцах таблицы. Однако на практике иногда возникают ситуа-
ции, когда такое ограничение снижает эффективность работы с базой. Возмож-
ности реляционных БД недостаточны в тех случаях, когда объекты данных
сложны, например: географические информационные системы, мультимедий-
ные базы, БД с проектной документацией и др.
10 Лекция 1. ТЕОРИЯ ПРОЕКТИРОВАНИЯ БАЗ ДАННЫХ

Хотя реляционная модель данных ориентирована, в основном, на исполь-


зование в БД среднего размера, подавляющее большинство современных СУБД
обеспечивают поддержку именно реляционной модели данных.
Подробнее элементы реляционных БД рассмотрены в лекции 2.
Объектно-ориентированная модель (англ. Object-Oriented Data Model –
OODM) имеет структуру, которую можно изобразить графически в виде дерева,
узлами которого являются объекты. Объектно-ориентированный подход в та-
ких БД предоставляет более совершенные средства для отображения объектов
реального мира, чем реляционная модель.
Изначально объектно-ориентированный подход по расширению реляцион-
ной модели, выражается в следующих четырех принципах:
– значениями полей в таблицах (атрибутов отношений) могут быть не
только литеральные значения, но и объекты (рис. 1.5);
– значения атрибутов отношений не обязательно являются атомарными
(неделимыми);
– при построении таблиц (классов) может использоваться механизм насле-
дования;
– классы включают операции.
БИБЛИОТЕКА

Свойство Тип Значение


КАТАЛОГ
район string Приморский
Свойство Тип Значение
абонент class
каталог class ISBN string 5-94157-111-9
выдача class УДК string 004.725.7
название string Базы данных
автор string Глушаков
книга class
АБОНЕНТ
Свойство Тип Значение ВЫДАЧА
КНИГА
билет string 12504
Свойство Тип Значение
фамилия string Ващук Свойство Тип Значение
адрес string Садовая, 8 билет string 12005
номер книги string 5561109 номер string 5561109
телефон string 34-56-78
дата string 25.11.2013 стеллаж string 49
издание string 1
Рисунок 1.5 – Пример структуры объектно-ориентированной БД

Между записями базы данных и функциями их обработки устанавливаются


связи с помощью механизмов, подобных имеющимся в объектно-ориентиро-
ванных языках программирования. Такая модель позволяет идентифицировать
отдельные записи базы. Базовыми понятиями этой модели являются: объекты,
классы, методы, инкапсуляция, наследование, полиморфизм.
Результатом совмещения возможностей (особенностей) БД и возможно-
стей объектно-ориентированных языков программирования являются объектно-
ориентированные СУБД, позволяющие работать с объектами БД также, как с
объектами в программировании. Объектно-ориентированные БД обычно реко-
Лекция 1. ТЕОРИЯ ПРОЕКТИРОВАНИЯ БАЗ ДАННЫХ 11

мендованы для тех случаев, когда требуется высокопроизводительная обработ-


ка данных, имеющих сложную структуру. В настоящее время ведется много
экспериментальных и производственных работ в области объектно-
ориентированных СУБД.
В настоящее время объектно-ориентированные БД достаточно сложны, и
потому их коммерческое использование идет медленно. Но у этих моделей есть
потенциал, а, стало быть, и будущее. А потому исследования в области объект-
ной ориентации становятся главным направлением в теории СУБД.
Несмотря на очевидные достоинства объектно-ориентированных БД, им
присущ и ряд недостатков. Во-первых, в них отсутствуют мощные непроцедур-
ные средства извлечения объектов из базы, и все запросы приходится писать на
процедурных языках, при этом проблема их оптимизации возлагается на про-
граммиста. Во-вторых, обеспечение целостности таких БД является очень тру-
доемким, поскольку приходится полностью прописывать все ограничения с по-
мощью процедурного кода. Очевидно, что оба эти недостатка связаны с отсут-
ствием развитых средств манипулирования данными. Эта задача решается дву-
мя способами – расширением объектно-ориентированных языков в сторону
управления данными (стандарт ODMG), либо добавлением объектных свойств
в реляционные СУБД (SQL-3, а также, так называемые, объектно-реляционные
СУБД).
Объектно-реляционная модель, по сути, представляет собой расширен-
ную реляционную модель (англ. Extended Relation Data Model – ERDM), поддер-
живающую некоторые технологии, реализующие объектно-ориентированный
подход: объекты, классы и наследование реализованы в структуре баз данных и
языке запросов.
В отличие от объектно-ориентированной модели (OODM) объектно-
реляционная модель (ERDM) основана на стратегии реляционной модели, в то
время как OODM модель основана на объектной стратегии. Исходя из этого,
модель ERDM наиболее приспособлена для бизнес-приложений, а модель
OODM используется в специальных инженерных и научных приложениях. Не-
которые специалисты полагают, что в будущем произойдет слияние OODM и
ERDM моделей.
Однако в объектно-реляционной и объектно-ориентированной моделях
есть и ряд недостатков, основными из которых являются:
– отсутствие унифицированной теории, которая есть в реляционных моделях;
– отсутствие формальной методологии проектирования БД, такой как нор-
мализация в реляционных базах;
– отсутствие специальных средств создания запросов;
– отсутствие общих правил определения целостности и др.
Объектно-реляционными СУБД являются, к примеру, широко известные
Oracle Database, Informix, DB2, PostgreSQL, FirstSQL/J.
Существуют и другие, менее распространенные разновидности моделей
данных: постреляционная и многомерная. Кратко охарактеризуем их.
12 Лекция 1. ТЕОРИЯ ПРОЕКТИРОВАНИЯ БАЗ ДАННЫХ

Главным отличием постреляционной модели от реляционной является


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

5. Этапы проектирования БД
При создании БД наиболее важными являются задачи, связанные с созда-
нием правильной логической структуры данных, обеспечивающей решение
всего набора требуемых задач, что предусматривает комплексный анализ всех
факторов, влияющих на формирование и обработку данных. Таким образом,
проектирование является важнейшей стадией при создании БД, так как именно
на этом этапе принимаются очень важные стратегические решения, влияющие
на весь процесс создания эффективной БД. Разработка эффективной БД являет-
ся достаточно сложной задачей, так как зачастую к ней предъявляется много
противоречивых требований. Задача проектировщика состоит в учете всех тре-
бований с целью создания оптимальной БД.
Естественно, что проект БД надо начинать с анализа предметной области и
выявления требований к ней отдельных пользователей (сотрудников организа-
ции, для которых создается БД). Затем необходимо выполнить следующие эта-
пы проектирования.
1. Сбор, анализ и подготовка исходной информации об объектах конкрет-
ной предметной области для их преобразования в таблицы БД.
2. Разработка оптимального состава и структуры таблиц БД. При этом не-
обходимо проанализировать, какие из сведений могут оказаться второстепен-
ными и исключить их из списка.
3. Проведение нормализации таблиц, определение ключевых полей и уста-
новление логических связей между таблицами.
4. Выбор критериев поддержания целостности данных по значению.
5. Разработка необходимого числа запросов для реализации поставленной
задачи.
Лекция 1. ТЕОРИЯ ПРОЕКТИРОВАНИЯ БАЗ ДАННЫХ 13

6. Разработка необходимого числа отчетов, отвечающих требованиям к вы-


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

Вопросы для самопроверки

1. Что включает в себя понятие информационной системы?


2. Чем обусловлено появление автоматизированных информационных сис-
тем?
3. Что включает в себя понятие автоматизированной информационной сис-
темы?
4. Чем отличаются термины "банк данных" и "база данных"?
5. Что понимают под термином "целостность баз данных"?
6. Что включает в себя понятие СУБД?
7. Назовите функции СУБД.
8. Перечислите виды классификаций СУБД.
9. В чем особенность файл-серверных СУБД? Приведите примеры таких
СУБД.
10. Назовите достоинства и недостатки клиент-серверной архитектуры
СУБД. Приведите примеры СУБД с такой архитектурой.
11. Перечислите существующие модели данных СУБД. Какая из них наибо-
лее распространенная и почему?
12. Охарактеризуйте иерархическую модель СУБД.
13. Чем сетевая модель СУБД отличается от иерархической? В чем состоят
достоинства и сложности использования сетевой модели данных?
14. Охарактеризуйте структуру объектно-ориентированной модели СУБД.
Почему она не получила большого распространения?
15. В чем особенность объектно-реляционной модели СУБД? Приведите
примеры таких СУБД.
14

Лекция 2. Реляционные базы данных


1. Основные элементы реляционных БД.
2. Типы связей между таблицами.
3. Нормализация.

1. Основные элементы реляционных БД


Термин "реляционная модель данных" впервые был применен в 1970 г. в
работах британского учёного Эдгара Кодда. Будучи математиком по образова-
нию и работая в компании IBM, Кодд предложил использовать для обработки
данных аппарат теории множеств (объединение, пересечение, разность, декар-
тово произведение). Он показал, что любое представление данных сводится к
совокупности двумерных таблиц особого вида, известного в математике как
отношение – relation (англ.).
При работе с реляционными БД существует специфическая терминология.
Отношение (англ. relation) в неформальном контексте обычно отождеств-
ляют с таблицей. Отношение имеет имя, которое отличает его от имён всех
других отношений БД. Отношения разделены на строки и столбцы, на пересе-
чении которых содержатся значения (элементы данных).
Атрибут (или поле) соответствует столбцу таблицы. Атрибутам реляцион-
ного отношения назначаются имена, уникальные в рамках отношения. Обраще-
ние к отношению происходит по его имени, а обращение к атрибуту – по имени
отношения и имени атрибута, как правило, через точку. Все элементы в столбце
имеют одинаковый тип (числовой, символьный и т. д.).
Кортеж (или запись) соответствует строке таблицы. В отношении не
должно быть одинаковых кортежей. Все кортежи одной таблицы должны иметь
одну структуру, соответствующую именам и типам атрибутов. Порядок разме-
щения записей в таблице может быть произвольным.
Схема отношения (заголовок отношения) представляет перечень имен ат-
рибутов отношения с их типами данных и размерами.
Домен – это допустимое потенциальное множество однотипных значений
данного атрибута (например, список возможных должностей сотрудников).
Домен может задаваться перечислением элементов, указанием диапазона зна-
чений, функцией и т. д., например: множество целых чисел, множество дат,
множество комбинаций символов длиной N и т. п.
Ключ (первичный ключ) (англ. primary key) – это столбец (или минималь-
ная комбинация столбцов), однозначно идентифицирующий каждую запись
таблицы. Существование первичного ключа в каждой из таблиц БД обязатель-
но, его значение должно быть уникальным (unique) и обязательным (not null).
Если ключ состоит из нескольких атрибутов, он называется составным. Напри-
мер, в таблице Студенты в качестве ключа можно использовать столбец Код
зачетной книжки с неповторяющимися (уникальными) значениями или же ис-
пользовать составной ключ из нескольких атрибутов Фамилия, Имя, Отчество
(очевидно, что первый вариант предпочтительней). Для таблицы Сотрудники
Лекция 2. РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ 15

ключом может быть атрибут Табельный номер, поскольку его значение уни-
кально для каждого работника предприятия. Подобно этому поле Номер пас-
порта или Идентификационный номер налогоплательщика, однозначно опреде-
ляет характеристики любого физического лица при составлении соответствую-
щих таблиц БД для отделов кадров или бухгалтерии предприятия.
Отношение может содержать несколько потенциальных ключей. Всегда
один из ключей объявляется первичным, его значения не могут обновляться.
Все остальные возможные ключи отношения называются потенциальными
(альтернативными) ключами. Неуникальные ключи ещё называют вторичными.
Выбор ключевых полей не всегда является простой и очевидной задачей,
особенно для таблиц с большим количеством полей. Удобным вариантом соз-
дания ключа является использование для него поля типа "счетчик", для которо-
го СУБД предусматривает автоматическое увеличение на единицу каждого но-
вого значения и обеспечивает поддержание уникальности значений ключевого
поля.
При определении ключа следует придерживаться следующих правил:
– ключ должен быть уникальным (значения ключевого поля никогда не
повторяются). У составного ключа значения отдельных полей (но не всех одно-
временно) могут повторяться;
– ключ должен быть достаточным и неизбыточным, т. е. не содержать по-
ля, которые можно удалить без нарушения уникальности ключа;
– в состав ключа не могут входить поля некоторых типов, например: дей-
ствительные числа, включая денежный тип и тип дата-время, встраиваемые
OLE-поля или поля комментариев. Нецелесообразно также использовать ключи
с длинными текстовыми значениями.
Индекс (англ. index) – средство, обеспечивающее быстрый доступ к стро-
кам таблицы на основе значений одного или нескольких столбцов. Простой ин-
декс состоит из одного поля, а составной (сложный) – из нескольких полей.
СУБД пользуется индексом также, как Вы пользуетесь предметным указателем
книги. В индексе хранятся значения данных и указатели на строки, где эти дан-
ные встречаются. Значения данных в индексе располагаются в убывающем или
возрастающем порядке, чтобы СУБД могла быстро найти требуемое значение.
Индексы могут быть первичными и вторичными. Например, первичным
индексом могут служить поля, выбранные при создании БД как ключевые. А
вторичные индексы могут создаваться из других полей как в процессе создания
самой БД, так и в процессе работы с нею. Как правило, индексы хранятся в ин-
дексных файлах отдельно от табличных файлов. Отсюда и повышение скорости
выполнения операций в индексированных таблицах, так как основная часть ра-
боты производится с небольшими индексными файлами, а не с самими табли-
цами.
Внешний ключ (англ. foreign key) – неключевое поле подчиненной (до-
черней) таблицы, которое является главным ключом в главной (родительской)
таблице, и по этому полю эти таблицы связываются. Реляционная модель на-
кладывает на внешние ключи ограничение для обеспечения целостности дан-
ных, называемое ссылочной целостностью. Это означает, что каждому значе-
16 Лекция 2. РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ

нию внешнего ключа должны соответствовать строки в связываемых отноше-


ниях, т. е. множество значений внешнего ключа является подмножеством зна-
чений первичного или уникального ключа родительской таблицы.
Главной (родительской) таблицей считается та, в которой связующее по-
ле является полем первичного ключа. Таблицу, содержащую внешний ключ,
называют подчинённой (или дочерней). Статус таблицы может влиять на дей-
ствия, которые вы предпринимаете, редактируя данные в связанных таблицах.
Ограничение целостности по внешнему ключу проверяется в двух случаях:
– при добавлении записи в подчинённую таблицу СУБД проверяет нали-
чие записи с таким же значением первичного ключа в родительской таблице;
– при удалении записи из родительской таблицы СУБД проверяет отсутст-
вие записей с таким же значением внешнего ключа в подчинённой таблице.
На рис. 2.1 в графической форме изображены таблицы БД "Учебный про-
цесс в вузе", их столбцы, первичные и внешние ключи.

Рисунок 2.1 – Пример базы данных "Учебный процесс в вузе"


Например, связь между отношениями Группа и Студент создается путем
копирования первичного ключа Код группы из первого отношения во второе. В
отношении Студент атрибут Код студента является первичным ключом, а
атрибут Код группы – внешним ключом.

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


При проектировании БД информацию обычно размещают в нескольких
таблицах, которые связывают между собой. Для реляционных таблиц характер-
ны следующие виды связей.
1) При связи ОДИН-К-ОДНОМУ (1:1) каждой записи главной таблицы со-
ответствует только одна запись подчиненной таблицы. Например, один студент
может получать одну стипендию, один сотрудник получает одну зарплату, каж-
дый сотрудник имеет анкету с личными данными и т. п. При таком виде связы-
Лекция 2. РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ 17

вания таблиц в связи участвуют оба ключевых поля, а сами таблицы, по сути,
являются равноправными. На практике связи вида 1:1 редки, так как удобнее
хранить одну таблицу вместо двух. Но иногда необходимо хранить две таблицы
вместо одной. Например, необходимо разделить секретную и несекретную ин-
формацию о каком-либо объекте.
2) Связь ОДИН-КО-МНОГИМ (1:М или 1:) характеризуется тем, что ка-
ждой записи главной таблицы соответствует несколько записей подчиненной
таблицы. Например, у каждого клиента несколько заказов, в одной группе
множество студентов, каждый студент изучает множество предметов, в одном
доме проживает несколько жильцов, а каждая квартира может пустовать, в ней
может жить один или несколько жильцов.
3) При связи МНОГИЕ-К-ОДНОМУ (М:1 или :1) одной или нескольким
записям основной таблицы ставится в соответствие одна запись подчиненной
таблицы. Этот тип связи можно увидеть из связи 1:М, если посмотреть со сто-
роны подчиненной таблицы на главную. Например, множество студентов со-
ставляют одну группу.
Вообще связи 1:М и М:1 зависят только от того, какая из таблиц главная, а
какая подчиненная. Данные типы связи являются самыми распространёнными.
4) Связь МНОГИЕ-КО-МНОГИМ (М:N) возникает в тех случаях, когда
одной записи одной таблицы может соответствовать несколько записей другой
таблицы и наоборот: когда одной записи второй таблицы может соответство-
вать несколько записей первой таблицы. Например, многие пациенты поликли-
ники могут пройти медосмотр у многих врачей, на предприятии есть работни-
ки, но и один работник может работать на двух предприятиях, или же каждый
преподаватель вуза может обучать нескольких студентов, в то же время каждый
студент может обучаться у нескольких преподавателей. Еще одним примером
такого вида связи может служить связь между таблицами Товары и Клиенты:
каждый клиент может приобрести несколько товаров, а каждый товар (по на-
именованию) может быть приобретён (или заказан) несколькими клиентами.
Этот вид связи в реляционных БД не поддерживается в явном виде. Чтобы уст-
ранить неоднозначность, от такого типа связи следует избавляться путем вве-
дения дополнительной таблицы (декомпозиции таблиц) и замены двумя связя-
ми один-ко-многим.
Контроль целостности перечисленных видов связей обычно означает ана-
лиз содержимого двух таблиц на соблюдении следующих правил:
– каждой записи основной таблицы соответствует нуль или более записей
дополнительной таблицы;
– в дополнительной таблице нет записей, которые не имеют родительских
записей в основной таблице;
– каждая запись дополнительной таблицы имеет только одну родитель-
скую запись основной таблицы.
Основные операции над данными (ввод, модификация и удаление запи-
сей) должны подчиняться правилам целостности.
Ввод. Логичнее сначала вводить новые записи в основную таблицу, а затем
заполнять подчиненные таблицы.
18 Лекция 2. РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ

Модификация. Изменения в полях основной таблицы мгновенно переда-


вать во все взаимосвязанные подчиненные таблицы (каскадное обновление).
При редактировании подчиненной таблицы помнить, что дополнительная за-
пись может сменить родителя, но остаться без него не должна.
Удаление. В подчиненной таблице можно удалять любые записи. Удале-
ние записи основной таблицы либо должно быть блокировано, либо привести за
собой удаление всех соответствующих записей в подчиненной таблице (кас-
кадное удаление).
3. Нормализация
Нормализация – это разбиение (декомпозиция) таблицы на две или более,
с целью приведения структуры БД к виду, обеспечивающему минимальную ло-
гическую избыточность данных. Конечной целью нормализации является
уменьшение потенциальной противоречивости хранимой в БД информации и
исключение избыточности хранимых данных.
Идея нормализации состоит в следующем: каждая таблица в реляционной
БД удовлетворяет условию, в соответствии с которым в позиции на пересече-
нии каждой строки и столбца таблицы всегда находится единственное значение
и никогда не может быть множества таких значений. Любая таблица, удовле-
творяющая этому условию, называется нормализованной.
После применения нормализации образуется несколько таблиц, что дает
следующие преимущества:
1) данные легко обновлять или удалять;
2) исключается возможность рассогласования копий данных;
3) уменьшается возможность ввода некорректных данных.
Существует несколько видов нормальных форм (НФ): 1НФ, 2НФ, 3НФ,
НФБК (Бойса-Кодда), 4НФ, 5НФ. Практически достаточно первых трех НФ.
Рассмотрим их подробнее.
Первая нормальная форма (1НФ, 1NF) предусматривает устранение по-
вторяющихся групп, т. е. таблица находится в 1НФ тогда и только тогда, когда
ни одна из ее строк не содержит в любом своем поле более одного значения и
ни одно из ее ключевых полей не пусто. Всякая реляционная таблица (отноше-
ние) автоматически находится в 1НФ.
Напомним кратко свойства отношений (это и будут свойства 1НФ):
– в отношении нет одинаковых кортежей;
– кортежи не упорядочены;
– атрибуты не упорядочены и различаются по наименованию;
– все значения атрибутов атомарны (неделимы).
Приведем пример отношения Сотрудники_Отделы_Проекты в 1НФ:
Номер- Номер- Номер- Номер-
Фамилия Телефон Проект
Сотрудника Отдела Проекта Задания
1 Иванов 1 11-22-33 1 Космос 1
1 Иванов 1 11-22-33 2 Климат 1
2 Петров 1 11-22-33 1 Космос 2
3 Сидоров 2 33-22-11 1 Космос 3
3 Сидоров 2 33-22-11 2 Климат 2
Лекция 2. РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ 19

Очевидно, что составным ключом следует выбрать поля НомерСотрудни-


ка и НомерПроекта.
Даже одного взгляда на отношение Сотрудники_Отделы_Проекты доста-
точно, чтобы увидеть, что данные хранятся в ней с большой избыточностью. Во
многих строках повторяются фамилии сотрудников, номера телефонов, наиме-
нования проектов. Кроме того, в данном отношении хранятся вместе независи-
мые друг от друга данные: о сотрудниках, об отделах, о проектах и о работах по
проектам. Любые попытки изменений (удаления, обновления, ввода новых дан-
ных) состояния базы данных вызовут большое количество проблем, поскольку
логическая модель данных неадекватна модели предметной области. База дан-
ных, основанная на такой модели, будет работать неправильно. Далее проведем
пошаговую нормализацию этого отношения.
Для рассмотрения 2НФ и 3НФ введем два дополнительных понятия.
Функциональная зависимость. Поле В таблицы функционально зависит от
поля А той же таблицы только в том случае, когда для каждого из различных
значений поля А обязательно существует только одно из различных значений
поля В. Отметим, что здесь допускается, что поля А и В могут быть составны-
ми.
Полная функциональная зависимость. Поле В находится в полной функ-
циональной зависимости от составного поля А, если оно функционально зави-
сит от А и не зависит функционально от любого подмножества поля А.
Вторая нормальная форма (2НФ, 2NF) предусматривает удаление час-
тично зависимых атрибутов. Таблица находится во 2НФ, если она удовлетворя-
ет определению 1НФ и все ее поля, не входящие в первичный ключ, связаны
полной функциональной зависимостью с первичным ключом.
Вторая нормальная форма применяется к отношениям с составными клю-
чами, т. е. к таким отношениям, первичный ключ которых состоит из двух или
более атрибутов. Отношение, у которого первичный ключ включает только
один атрибут, всегда находится во 2НФ.
Рассмотренное ранее отношение Сотрудники_Отделы_Проекты не нахо-
дится в 2НФ, так как в нем есть поля, зависящие от части сложного ключа (поля
Фамилия, НомерОтдела и Телефон, характеризующие сотрудника зависят от
табельного номера сотрудника, а название проекта зависит от части составного
ключа НомерПроекта). Для того чтобы устранить эту зависимость, надо произ-
вести декомпозицию этого отношения на три отношения Сотрудники_Отделы,
Проекты и Задания (рис. 2.2). При этом поля, зависящие от части сложного
ключа, вынесутся в отдельные отношения.
Отношения Сотрудники_Отделы и Проекты, полученные в результате
декомпозиции, находятся во 2НФ, поскольку они имеют простые ключи, а, сле-
довательно, автоматически находятся во 2НФ. Отношение Задания имеет со-
ставной ключ, но единственное неключевое поле НомерЗадания функциональ-
но зависит от всего ключа.
20 Лекция 2. РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ

Сотрудники_Отделы
Номер- Фами- Номер- Проекты
Телефон Номер-
Сотрудника лия Отдела 1 Проект
1 Иванов 1 11-22-33 Проекта
2 Петров 1 11-22-33 1 Космос
3 Сидоров 2 33-22-11 2 Климат
1 Задания 
 Номер- Номер- Номер-
Сотрудника Проекта Задания
1 1 1
1 2 1
2 1 2
3 1 3
3 2 2
Рисунок 2.2 – Таблицы, нормализованные до 2НФ
Теперь фамилии сотрудников и наименования проектов хранятся без избы-
точности. Если сотрудник сменит фамилию или проект сменит наименование,
то такое обновление будет произведено в одном месте. А если по проекту будут
временно прекращены работы, но потребуется, чтобы сам проект сохранился,
то для этого проекта просто удалятся соответствующие кортежи в отношении
Задания, а данные о самом проекте и данные о сотрудниках, участвовавших в
проекте, останутся в отношениях Проекты и Сотрудники_Отделы. Тем не ме-
нее часть противоречий разрешить не удалось, поскольку осталась избыточ-
ность данных, порожденная тем, что в отношении Сотрудники_Отделы хра-
нится разнородная информация (о сотрудниках и об отделах). Одни и те же но-
мера телефонов повторяются во многих кортежах отношения. Поэтому если в
отделе меняется номер телефона, то такие изменения необходимо одновремен-
но выполнить во всех местах, где этот номер телефона встречается, иначе от-
ношение станет некорректным. Таким образом, обновление БД одним действи-
ем реализовать невозможно. С другой стороны при удалении некоторых дан-
ных может произойти потеря другой информации. Например, если удалить со-
трудника Сидорова, то будет потеряна информация о том, что в отделе номер 2
находится телефон 33-22-11. Все эти трудности будут устранены, если произве-
сти декомпозицию отношения Сотрудники_Отделы.
Третья нормальная форма (3НФ, 3NF) предусматривает устранение в
таблице любых зависимостей полей не от первичного ключа. Таблица находит-
ся в 3НФ, если она удовлетворяет определению 2НФ, все ее неключевые поля
взаимно независимы и полностью зависят от первичного ключа.
Пока отношение Сотрудники_Отделы не находится в 3НФ, так как имеет-
ся функциональная зависимость неключевых атрибутов (зависимость номера
телефона от номера отдела). Для того чтобы устранить зависимость неключе-
вых атрибутов, нужно произвести декомпозицию этого отношения на два от-
ношения Сотрудники и Отделы (рис. 2.3). При этом те неключевые поля, кото-
рые являются зависимыми, выносятся в отдельное отношение.
Лекция 2. РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ 21

Отделы
1 Номер- Телефон
Отдела
1 11-22-33
Сотрудники  2 33-22-11
Номер- Номер- Проекты
Фамилия 1 Номер-
Сотрудника Отдела Проект
1 Иванов 1 Проекта
2 Петров 1 1 Космос
3 Сидоров 2 2 Климат
1 
Задания
 Номер- Номер- Номер-
Сотрудника Проекта Задания
1 1 1
1 2 1
2 1 2
3 1 3
3 2 2
Рисунок 2.3 – Таблицы, нормализованные до 3НФ

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


цию заканчивают на 3НФ.
Нормальная форма Бойса – Кодда (НФБК, BCNF) является усиленной
третьей нормальной формой. Отношение находится в нормальной форме Бой-
са – Кодда, если оно находится в 3НФ и в нем отсутствуют зависимости ключей
(полей составного ключа) от неключевых полей. Иначе говоря, любая функ-
циональная зависимость между полями сводится к полной функциональной за-
висимости от возможного ключа.
Согласно данному определению в структуре БД (см. рис. 2.3) все таблицы
соответствуют требованиям НФБК.
Дальнейшая оптимизация таблиц БД должна сводиться к полной декомпо-
зиции таблиц. Полной декомпозицией таблицы называют такую совокупность
произвольного числа ее проекций, соединение которых полностью совпадает с
содержимым таблицы.
Четвертая нормальная форма (4НФ, 4NF) является частным случаем
5НФ, когда полная декомпозиция должна быть соединением ровно двух проек-
ций. Очень трудно найти такую таблицу, чтобы она находилась в 4НФ, но не
удовлетворяла определению 5НФ.
Пятая нормальная форма (5НФ, 5NF). Таблица находится в 5НФ тогда и
только тогда, когда в каждой ее полной декомпозиции все проекции содержат
возможный ключ. Таблица, не имеющая ни одной полной декомпозиции, также
находится в 5НФ.
На практике оптимизация таблиц БД заканчивается третьей нормальной
формой. Приведение таблиц к четвертой и пятой нормальным формам пред-
ставляет, по нашему мнению, чисто теоретический интерес. Практически эта
проблема решается разработкой запросов на создание новой таблицы.
22 Лекция 2. РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ

Вопросы для самопроверки

1. Перечислите основные элементы реляционных баз данных.


2. Охарактеризуйте понятия кортеж и запись.
3. Раскройте суть понятий атрибут и домен.
4. Какое предназначение индексного поля?
5. Что означают понятия "ключ", "ключевое поле"?
6. Какое ключевое поле называют первичным ключом, а какое – внешним
ключом?
7. Какие требования предъявляются к ключевому полю?
8. В чем состоит процесс нормализации таблиц базы данных?
9. Какие пять нормальных форм таблиц баз данных вы знаете?
10. Дайте определения следующим типам связей между таблицами базы
данных: "один к одному"; "один ко многим"; "многие ко многим".
11. Почему от типа связи "многие ко многим" надо избавляться? Что для
этого надо делать?
12. Дайте определение первой нормальной формы.
13. Дайте определение второй нормальной формы.
14. Дайте определение третьей нормальной формы.
15. Какая цель нормализации?
23

Лекция 3. Средства управления базами данных в EXCEL

1. Основные операции Excel для работы с таблицами как с базой данных.


2. Сортировка данных.
3. Использование фильтров.
4. Промежуточные итоги.
5. Создание сводных таблиц и диаграмм.
6. Функции категории "Работа с базой данных".
7. Средства MS Excel для автоматизации документооборота.

1. Основные операции Excel для работы с таблицами


как с базой данных
БД как способ хранения и обработки различной информации играет в на-
стоящее время огромную роль. В БД хранятся сведения о клиентах, заказах,
справочники адресов и телефонов, различного рода информация о магазинах,
предлагаемых товарах и т. д. Для относительно небольших предприятий учет
подобных данных можно вести средствами электронных таблиц MS Excel.
Excel умеет складывать, вычитать, умножать, делить и выполнять множе-
ство других операций. Excel дает возможность предварительно проанализиро-
вать последствия принятия тех или иных решений при конкретных обстоятель-
ствах. Excel позволяет автоматизировать не только расчеты как таковые, но по-
зволяет создавать и работать с разнообразными картотеками, системами учета,
базами данных и т. п.
В Excel для обозначения таблицы базы данных используется термин "спи-
сок" – упорядоченный набор данных из строк и столбцов, имеющих одинако-
вую логическую структуру. Отличительной особенностью табличной БД явля-
ется то, что каждый ее столбец содержит однотипные данные, например пере-
чень фамилий, цену за единицу товара, дату реализации товара и т. д. Если про-
вести аналогию между таблицей и табличной БД, то столбцы таблицы являются
полями БД, а ее строки – записями. Считается, что первая строка таблицы явля-
ется ее заголовком и содержит названия столбцов таблицы. Заголовок должен
иметь на листе электронной таблицы горизонтальную ориентацию, т. е. он
должен располагаться в первой строке. Заголовки применяются при анализе
данных, при составлении отчетов, а также при поиске и организации данных.
Желательно, чтобы шрифт, его размер, выравнивание и другие параметры фор-
матирования, присвоенные заголовкам столбцов таблицы, отличались от пара-
метров, назначенных для строк данных. Для отделения заголовков от располо-
женных ниже данных не следует применять пустые строки.
К характерным операциям с таблицами БД, имеющимся в Excel, относят:
1) сортировку данных в определённом порядке; 2) фильтрование данных для по-
иска нужной информации; 3) промежуточные итоги; 4) сводные таблицы;
5) функции категории Работа с базой данных. В Excel 2003 все действия с БД
выполняют команды в меню Данные, а в версии Excel 2010 большинство из на-
званных команд можно выбрать на вкладке Данные.
24 Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL

2. Сортировка данных
Сортировка данных выделенных ячеек таблицы осуществляется коман-
дой Сортировка, которая находится на вкладке Данные в группе Сортировка и
фильтр (в Excel 2003 – команда Данные  Сортировка). Эта команда позволя-
ет переставлять записи в определенном порядке на основании значений одного
или нескольких столбцов или переставлять столбцы на основании значений в
строках (рис. 3.1).

Рисунок 3.1 – Вид диалогового окна Сортировка


В открывшемся диалоговом окне Сортировка в списке Сортировать по
можно выбрать заголовок столбца, по которому осуществлять сортировку. При
необходимости с помощью кнопки Добавить уровень можно добавить допол-
нительные уровни для вторичной сортировки по двум, трем и т. д. столбцам,
выбрав имена сортируемых полей из списков Затем по. Тип и порядок сорти-
ровки каждого из выбранных полей можно задать с помощью соответствующих
списков Сортировка и Порядок.
Вместо простого порядка сортировки по возрастанию или по убыванию
можно задавать настраиваемый список в качестве ключа для порядка сортиров-
ки. В этом случае не применяются обычные правила сортировки в алфавитном
или числовом порядке. Например, с помощью настраиваемого списка можно
отсортировать таблицу по месяцам календаря: январь, февраль, март, апрель
и т. д. Для выполнения такой сортировки необходимо выбрать в поле Порядок
диалогового окна Сортировка значение Настраиваемый список. Эти действия
приведут к открытию диалогового окна Списки (рис. 3.2). Пользователь может
выбрать один из имеющихся списков для сортировки или создать свой собст-
венный список. Для создания своего списка с помощью диалогового окна Спи-
ски надо в поле Элементы списка ввести все элементы по порядку и щёлкнуть
на кнопке Добавить. После этого созданный список появится в поле Списки.
Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL 25

Рисунок 3.2 – Вид диалогового окна Списки для сортировки данных


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

3. Использование фильтров
Фильтрация списка – это отбор только тех записей списка, которые
удовлетворяют заданному условию. В отфильтрованном списке будут отобра-
жены строки, отвечающие условиям отбора. Все остальные строки будут скры-
ты.
В Excel для фильтрации списков можно использовать два средства: Авто-
фильтр для простых условий отбора и Расширенный фильтр для более слож-
ных условий отбора. Условия автофильтрования можно задавать для одного
или нескольких полей, а с помощью расширенного фильтра допускается зада-
вать вычисляемые условия (например, можно вывести на экран список только
тех сотрудников, у которых оклад хотя бы на 25% выше среднего). В отличие
от сортировки при фильтрации порядок записей в списке не изменяется. При
фильтрации строки, неудовлетворяющие условию, будут временно скрыты, а
слева в столбце с номерами отфильтрованных строк будут видны прежние но-
мера элементов, которые они имели в исходном списке. Строки, отобранные
при фильтрации, можно редактировать, форматировать и выводить на печать, а
также создавать на их основе диаграммы, не изменяя порядок строк и не пере-
мещая их.
26 Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL

Автофильтр для выделенных полей включается командой Фильтр на


вкладке Данные в группе Сортировка и фильтр (в Excel 2003 команда Дан-
ные  Фильтр  Автофильтр). После этого Excel добавит в строку заголов-
ков кнопки в виде стрелки для раскрытия списка значений.
Например, для того чтобы отобразить записи об отдельном товаре, надо
щёлкнуть на кнопке автофильтра, расположенной в заголовке Наименование
товара. В раскрывшемся списке выбрать одно значение из этого перечня. В
списке останутся только те элементы, у которых значение данного поля совпа-
дает с выбранным. Кроме того, изменится цвет кнопки автофильтра в поле На-
именование товара. По этому признаку можно определить, что список от-
фильтрован по значениям этого столбца.
Чтобы отменить фильтр и снова отобразить на экране весь список, надо
щёлкнуть на изменившей цвет кнопке автофильтра и в раскрывшемся списке
выбрать значение Удалить фильтр.
Кроме отдельно взятых значений в качестве фильтра можно организовы-
вать разнообразные варианты условий фильтрации, воспользовавшись коман-
дой Числовые фильтры (для нечисловых полей эта команда называется Тек-
стовые фильтры или Фильтры по дате) и выбрав из раскрывшегося списка
подходящий вариант фильтрации (см. рис. 3.3).
Если в списке условий автофильтра выбрать значение Настраиваемый
фильтр, появится диалоговое окно Пользовательский автофильтр, в котором
можно конструировать более сложные условия фильтрации. Выбираемый кри-
терий отбора состоит из двух предложений, связанных между собой логической
функцией И или ИЛИ.

Для числовых значений в условиях используются следующие операторы:


равно, не равно, больше, больше или равно, меньше, меньше или равно. Для отбора
текстовых строк можно использовать операторы: начинается с, не начинается с,
заканчивается на, не заканчивается на, содержит или не содержит (рис. 3.3).
Отбор нескольких наибольших или наименьших значений можно осущест-
влять для столбцов, содержащих числа. Для этого надо щёлкнуть на кнопке ав-
тофильтра и выбрать значение Первые 10. При этом откроется диалоговое окно
Наложение условия по списку.
В первом поле этого окна можно указать количество отбираемых записей
(по умолчанию – 10), во втором – выбрать один из вариантов: наибольших или
Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL 27

Рисунок 3.3 – Вид вариантов фильтрации:


– для текстовых полей (слева);
– для числовых полей (по-центру);
– для полей с типом дата (справа).

наименьших. В третьем поле выбрать одно из значений: элементов списка или


% от количества элементов (например, можно отобрать 5 записей с наиболь-
шими значениями или 5 % наибольших элементов поля).
28 Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL

Если столбец содержит пустые ячейки, то в конец списка значений авто-


фильтра добавляются ещё два условия: Пустые и Непустые. При выборе зна-
чения Пустые на экране отобразятся только строки с пустыми ячейками в дан-
ном столбце. При выборе значения Непустые будут отобраны строки с непус-
тыми ячейками в данном столбце.
В раскрывающемся списке значений автофильтра имеются опции для сор-
тировки. Выбор этих опций приводит к сортировке данного поля (или всей таб-
лицы) по возрастанию или убыванию значений поля соответственно.
В режиме автофильтра можно фильтровать записи по нескольким столб-
цам. Задавая условия по значениям в нескольких столбцах, все условия объеди-
няются функцией И, т. е., если данные уже отфильтрованы по одному из столб-
цов, при использовании автофильтра для другого столбца будут предложены
только те значения, которые видны в отфильтрованном списке.
Следует иметь в виду, что автоматическая фильтрация имеет ограничения.
В списке условий автофильтра отображаются только первые 999 различных зна-
чений. На рабочем листе применить автофильтр можно только к одному списку.
Для быстрой отмены фильтров и отображения всех записей надо выпол-
нить команду в группе Сортировка и фильтр на вкладке Дан-
ные. Чтобы отключить режим автофильтрации, необходимо повторно выбрать
команду Фильтр. После отключения автофильтра список восстановит исход-
ные значения, и кнопки автофильтра в строке заголовков исчезнут.
Расширенный фильтр используется для фильтрации по более сложным
условиям отбора записей, чем автофильтр, например, по нескольким условиям
отбора в одном столбце, по нескольким условиям отбора в нескольких столбцах
или для отбора записей по вычисляемому критерию с использованием любой
функции Excel. Размещение результатов фильтрации можно организовать на
том же месте, можно скопировать их в другую область рабочего листа или во-
обще на отдельный лист текущей книги.
Перед применением команды сначала необходимо
сформировать диапазон условий, который можно разместить в любом месте
текущего рабочего листа, на другом листе открытой книги или даже в другой
книге Excel. Целесообразно поместить его над или под исходным списком.
Диапазон условий должен содержать не менее двух строк. Первая строка диа-
пазона условий содержит названия всех или некоторых полей списка. Осталь-
ные строки диапазона условий содержат условия для фильтрации. Кроме того,
диапазон условий должен отделяться от исходного списка, по крайней мере,
одной пустой строкой.
Необходимо учитывать, что значения условий фильтрации, размещённые в
одной строке диапазона (области) критериев, объединяются логической функ-
цией И, а значения условий, заданные в разных строках области критериев, свя-
зываются функцией ИЛИ.
При составлении условий часто используются такие операторы сравнения:
>, <, >=, <=, =, <> (не равно). При этом необходимо учитывать, что при сравнении
строк регистр символов не учитывается. Кроме того, в условиях для строк
Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL 29

можно использовать подстановочные символы ? и *. Например, для отбора всех


слов, начинающихся с буквы С в качестве условия отбора следует записать –
С*, а для отбора всех слов за исключением слов, начинающихся с этой буквы –
<>С*.
После создания диапазона условий отбора, можно применить к списку
Расширенный фильтр. Для этого надо выделить все ячейки списка (или стать в
любую его ячейку) и выполнить команду Данные  Фильтр  Расширенный
фильтр (в Excel 2010 команда находится на вкладке Данные в группе Сортиров-
ка и фильтр и называется Дополнительно).
В диалоговом окне Расширен-
ный фильтр надо задать необходи-
мые параметры (Исходный диапазон
– выделить диапазон ячеек списка
вместе с заголовками, Диапазон ус-
ловий – диапазон ячеек с критерием
отбора). Кроме того, если в этом же
диалоговом окне выбрать пере-
ключатель Скопировать резуль-
тат в другое место, то отобранные
строки будут скопированы в ту об-
ласть, которая указана в поле По-
местить результат в диапазон.
На рис. 3.4 представлен образец отфильтрованного списка для заданного
диапазона условий.
Если список фильтровался на месте, то для отмены фильтрации надо при-
менить команду Отобразить все из меню Данные  Фильтр.

Рисунок 3.4 – Вид таблицы с применением расширенного фильтра


30 Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL

4. Промежуточные итоги
Промежуточный итог – операция Excel, которая может осуществлять вы-
вод как промежуточных, так и общих итогов в списке. Команда Промежуточ-
ный итог является средством быстрого просмотра данных на листе с одновре-
менным подведением итогов по различным группам, которые автоматически
объединяются на основе сходства признаков.
Перед формированием промежуточных итогов список необходимо обяза-
тельно отсортировать по полю, по которому будут подводиться итоги. Это по-
зволит корректно группировать строки при подведении итогов.
Команда Промежуточный итог находится на вкладке Данные в группе
Структура (в версии Excel 2003 команда Данные  Итоги). Эта команда вы-
полнит открытие диалогового окна Промежуточные итоги.
Предположим, требуется вычислить суммарную стоимость товаров, про-
данных каждым продавцом. Для этого необходимо выполнить такие действия.
1) Сначала выполнить сортировку записей таблицы по полю Имя продавца
(в алфавитном порядке).
2) После того как список отсортирован, надо выделить все ячейки таблицы
и выполнить команду Данные  Итоги.
3) В открывшемся диалоговом окне Промежуточные итоги надо выбрать
значения из предложенных списков:
– При каждом изменении в: – Имя (отсортированный столбец, изменение
значений в котором приведет к пересчету
итоговых значений);
– Операция: – Сумма (или другую итоговую операцию);
– Добавить итоги по: – Стоимость (один или несколько столбцов,
по которым должен производиться подсчет
итоговых значений.
Кроме этого, надо проследить, чтобы
в нижней части окна были установлены
флажки Заменить текущие итоги и
Итоги под данными, и нажать кнопку
OK.
В результате выполнения этой ко-
манды список отобразится в виде струк-
туры. На рис. 3.5 представлен список с
развернутыми записями в итоговых
группах.
Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL 31

Рисунок 3.5 – Вид таблицы с итогами по суммарной стоимости товаров,


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

5. Создание сводных таблиц и диаграмм


Сводные таблицы используются для быстрого подведения итогов и полу-
чения разнообразных динамичных отчетов. С помощью сводных таблиц и
сводных диаграмм в считанные секунды можно строить сложные отчеты по ог-
ромным массивам данных. Кроме этого, сводные таблицы позволяют изменять
способ анализа данных "на лету" в результате перетаскивания полей из одной
области отчета в другую.
Построение сводной таблицы осуществляется командой Сводная таблица,
которая находится на вкладке Вставка в группе Таблицы (в версии Excel 2003
команда Данные  Сводная таблица).
В качестве примера создания сводной таблицы рассмотрим порядок созда-
ния сводной таблицы по данным таблицы на листе ПродИрис (см. рис. 3.1. и
3.4) с вычислением суммарного количества конкретных товаров, проданных
каждым из продавцов, и размещением ее на новом листе. Для этого надо выде-
лить все ячейки таблицы вместе с заголовками столбцов (ячейки А1:Н15 на
листе ПродИрис) и выполнить команду Сводная таблица.
32 Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL

После этого на новом листе отобразится макет сводной таблицы (рис. 3.6).
Работать с ним несложно – надо перетаскивать мышью названия столбцов (по-
лей) из окна Список полей сводной таблицы в области строк, столбцов, страниц
и данных макета. Единственная тонкость – надо делать как можно точнее: поле
Имя – в область столбцов, поле Наименование проданного товара – в область
строк, поле Количество – в область данных.

Рисунок 3.6 – Макет сводной таблицы


В процессе перетаскивания сводная таблица начнет менять вид и после пере-
мещения трех указанных полей из списка приобретет вид, показанный на рис. 3.7.

Рисунок 3.7 – Сводная таблица суммарного количества проданных товаров


каждым из продавцов
Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL 33

Вместо перетаскивания полей в


соответствующие области макета
сводной диаграммы можно перета-
щить их в аналогичные области,
указанные внизу панели Список по-
лей сводной таблицы, или восполь-
зоваться соответствующими коман-
дами контекстного меню.
Гибкость настройки сводных
таблиц позволяет "на лету" изме-
нять анализируемые данные, в ре-
зультате простого перетаскивания
полей, например, так чтобы получи-
лась сводная таблица максимального
количества проданных товаров по дням каждым из продавцов (рис. 3.8).
Единственный недостаток сводных таблиц – отсутствие автоматического
обновления (пересчета) при изменении данных в исходном списке. Для выпол-
нения такого пересчета надо выполнить команду контекстного меню Обновить
или нажать кнопку Обновить на панели Список полей сводной таблицы.

Рисунок 3.8 – Сводная таблица максимального количества проданных товаров


по дням каждым из продавцов
Работая с большими сводными таблицами можно их упрощать, фильтруя
часть информации. Самый простой способ для этого – поместить некоторые
поля в область страницы и выбирать из выпадающих списков только нужные
значения, тем самым детализировать отчет по тем или иным критериям. Для
этого надо просто перетащить соответствующие поля в область страницы
(в Excel 2010 эта область называется Фильтр отчета) после поля Состояние.
Реализация подобной сводной таблицы представлена на рис. 3.9. Например, на
ней можно просмотреть суммарную стоимость и максимальное количество толь-
ко проданных или только возвращенных товаров.
Сводные диаграммы используются для наглядного графического пред-
ставления данных из сводных таблиц. В отличие от обычных диаграмм сводные
диаграммы являются интерактивными, поскольку их можно использовать не
только для просмотра данных в графическом виде, но и трансформировать их
структуру аналогично сводным таблицам. Подобно сводной таблице, сводная
диаграмма имеет кнопки полей, с помощью которых можно получать различ-
ные представления исходных данных.
34 Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL

Рисунок 3.9 – Сводная таблица по нескольким критериям с различными фильтрами


Для создания сводной диаграммы надо установить курсор на любой из
ячеек, соответствующей сводной таблицы, и воспользоваться командой Свод-
ная диаграмма, которая находится на вкладке Параметры в группе Сервис
(в Excel 2003 – кнопкой Диаграмма на панели инструментов Сводная таблица).
На рис. 3.10 представлен пример сводной диаграммы для сводной таблицы
суммарного количества проданных товаров каждым из продавцов (см. рис. 3.7).
Тип этой сводной диаграммы – Гистограмма с накоплением.
Со сводной диаграммой можно проделывать все те же операции, что и с
обычной диаграммой: выбирать тип диаграммы, изменять цвет фона, настраи-
вать сетку, шрифты, заливку и т. п. Сводные диаграммы и таблицы имеют еще
много приятных возможностей и мелочей.

Рисунок 3.10 – Сводная диаграмма суммарного количества проданных товаров


каждым из продавцов

Изменить структуру и тип сводной диаграммы можно, не изменяя структу-


ру исходной сводной таблицы. В качестве примера выполним следующие пре-
образования предыдущей сводной диаграммы:
Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL 35

1) с помощью панели Список полей сводной таблицы заменим в области


строк поле Наименование проданного товара на поле Дата;
2) поместим поле Состояние в область Фильтр отчета на той же панели
Список полей сводной таблицы;
3) с помощью появившейся в верхнем левом углу диаграммы кнопки Со-
стояние зададим фильтр для значений этого поля – Продано;
4) с помощью команды контекстного меню Изменить тип диаграммы вы-
берем новый тип диаграммы Линейчатая  Объемный вариант нормирован-
ной линейчатой диаграммы (в Excel 2010 этот тип имеет название Объемная
нормированная линейчатая с накоплением).
После этого сводная диаграмма приобретет вид, показанный на рис. 3.11.

Рисунок 3.11 – Сводная диаграмма после изменения структуры и типа

Полученная сводная диаграмма тоже интерактивная – пользователь может


выбирать, какие данные показывать, какие скрывать.

6. Функции категории "Работа с базой данных"


Встроенные функции категории "Работа с базой данных" призваны авто-
матизировать расчеты итогов по записям списка, например, подсчета количест-
ва записей в БД (функция БСЧЁТ) или вычисления суммы значений (функция
БДСУММ), удовлетворяющих некоторому условию.
Всего в категории "Работа с базой данных" имеется 12 функций, назначе-
ние которых описано в табл. 3.1.
36 Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL

Таблица 3.1
Функции категории "Работа с базой данных"
Наименование
Описание
функции
Усредняет значения в столбце списка или базы данных,
ДСРЗНАЧ
удовлетворяющих заданным условиям
Подсчитывает количество ячеек в столбце списка или БД,
содержащих числа, удовлетворяющие заданным условиям.
БСЧЁТ
Примечание. Если аргумент "поле" опущен, то функция БСЧЁТ
подсчитывает количество записей в БД, отвечающих критериям
Подсчитывает количество непустых ячеек в столбце списка или
БД, которые удовлетворяют заданным условиям.
БСЧЁТА
Примечание. Если аргумент "поле" опущен, то функция БСЧЁТА
подсчитывает количество записей в БД, отвечающих критериям
Извлекает отдельное значение из столбца списка или БД,
которое удовлетворяет заданным условиям.
Примечание. Если ни одна из записей не удовлетворяет критерию,
БИЗВЛЕЧЬ то функция БИЗВЛЕЧЬ возвращает значение ошибки #ЗНАЧ!.
Если более чем одна запись удовлетворяет критерию, то
функция БИЗВЛЕЧЬ возвращает значение ошибки #ЧИСЛО!
Возвращает наибольшее число в столбце списка или БД,
ДМАКС
которое удовлетворяет заданным условиям
Возвращает наименьшее число в столбце списка или БД,
ДМИН
которое удовлетворяет заданным условиям
Перемножает значения в столбце списка или БД,
БДПРОИЗВЕД
которые удовлетворяют заданным условиям
Оценивает стандартное отклонение на основе выборки
ДСТАНДОТКЛ из генеральной совокупности, используя числа в столбце спи-
ска или БД, которые удовлетворяют заданным условиям
Вычисляет стандартное отклонение генеральной
ДСТАНДОТКЛП совокупности, используя числа в столбце списка или БД,
которые удовлетворяют заданным условиям
Суммирует числа в столбце списка или БД, которые
БДСУММ
удовлетворяют заданным условиям
Оценивает дисперсию генеральной совокупности по выборке,
БДДИСП используя числа в столбце списка или БД, которые
удовлетворяют заданным условиям
Вычисляет дисперсию генеральной совокупности, используя
БДДИСПП числа в столбце списка или БД, которые удовлетворяют
заданным условиям
Каждая из этих функций этой категории использует три аргумента:
1) база данных – это интервал ячеек, формирующих список базы данных.
Верхняя строка списка содержит названия всех столбцов;
2) поле – столбец таблицы, используемый функцией для вычислений. Этот
аргумент может быть задан числом – порядковым номером поля в таблице или
текстовым названием столбца в двойных кавычках;
Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL 37

3) критерий – это интервал ячеек, который содержит задаваемые условия.


Любой интервал, который содержит, по крайней мере, одно название столбца и
одну ячейку под названием столбца с условием, может быть использован как
аргумент критерий.
Поскольку первый и третий аргументы функций из категории "Работа с базой
данных" ссылаются на интервалы ячеек на рабочем листе, то перед применением
этих функций необходимо в отдельных ячейках подготовить диапазон условий.
Рассмотрим на примерах лишь две наиболее часто используемые функции
из категории "Работа с базой данных" – БДСУММ и БСЧЕТ.
Сначала используем функцию БДСУММ для вычисления суммарной
стоимости только возвращенных товаров с ценой свыше 500 грн. по таблице
ПродИрис (рис. 3.12). Для подготовки диапазона условий под таблицей ПродИ-
рис в ячейках А18:В18 надо скопировать в ячейку А17 название столбца Со-
стояние, а в ячейку В17 – название столбца Цена. Кроме этого, в ячейку А18 на-
до ввести или скопировать значение "Возвращено", а в ячейку В18 ввести значе-
ние ">=500" (без кавычек) (рис. 3.12).

Рисунок 3.12 – Таблица ПродИрис с подготовленным диапазоном условий


Теперь можно подписать ячейку А20, вписав в нее текст "Стоимость воз-
вращенных", а ниже в ячейку А21 с помощью кнопки Вставка функции вста-
вить функцию БДСУММ из категории Работа с базой данных. Осталось запол-
нить три аргумента этой функции в диалоговом окне Аргументы функции:
1 аргумент – База_данных – диапазон ячеек базы данных (таблицы);
2 аргумент – Поле – номер столбца (или его заголовок в кавычках) с чи-
словыми данными для суммирования;
3 аргумент – Критерий – диапазон ячеек с условием отбора для одного или
нескольких столбцов БД, включая заголовок или заголовки
этих столбцов.
Итак, для вычисления суммар-
ной стоимости всех возвращенных
товаров формула с функцией
БДСУММ будет иметь вид:
38 Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL

= БДСУММ(A1:H15; 6; А17:В18)
Продемонстрируем специфику функции БСЧЕТ для вычисления количества
сделок по товарам с наименованиями Программное обеспечение и Клавиатура.
Для этого путем копирования надо сформировать соответствующее условие, на-
пример в ячейках Н17:Н19 (см. рис. 3.11). После этого можно подписать ячейку
Н20 и вставить в ячейку Н21 функцию БСЧЕТ, которая подсчитывает количество
числовых ячеек в указанном столбце по заданному критерию (рис. 3.13):
=БСЧЁТ(A1:H15; 4; H17:H19)

Рисунок 3.13 – Результаты вычислений функций БДСУММ и БСЧЕТ

7. Средства MS Excel для автоматизации документооборота


При работе с таблицами БД в Excel зачастую возникает необходимость
формирования новых вспомогательных таблиц, данные которых надо выбирать
из уже существующих (основных) таблиц. Рассмотрим два основных инстру-
мента, когда данные из основных таблиц можно выбрать в виде раскрываю-
щихся списков (поля подстановки), а также использование функции ВПР для
выборки данных из основной таблицы в соответствии со значениями некоторо-
го ключевого параметра.
Предположим, что в БД Excel на листе Анкеты существует таблица с ан-
кетными данными (Табельный номер (в порядке возрастания), Фамилия, Имя,
Отчество, Отдел, Должность, Дата приема на работу, Ставка), а на листе
Должности – таблица из двух столбцов: Должность и Оклад.
Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL 39

1) Создание раскрывающихся списков со значениями


Рассмотрим последовательность создания на новом листе Выборка рас-
крывающегося (выпадающего) списка со значениями табельных номеров, кото-
рые есть на листе Анкеты.
1. Чтобы задать столбцу Табельный номер (или сразу нескольким столбцам)
собственное имя, указанное в его заголовке, надо выполнить следующие дейст-
вия. Выделить столбец А на листе Анкеты, выполнить команду Присвоить имя
на вкладке Формулы в группе Определенные имена (или одновременно нажать
комбинацию клавиш Ctrl+F3 и нажать
кнопку Создать в диалоговом окне
Диспетчер имен). В открывшемся диа-
логовом окне Создание имени изме-
нить предлагаемое имя Табель-
ный_номер на Номер. Эти действия
позволят обращаться к столбцу А по
собственному имени Номер.
2. В ячейку А1 на листе Выборка
вписать текст заголовка столбца:
Табельный номер.
3. Выделить столбец А на листе Выборка и выполнить команду Проверка
данных, расположенную на вкладке Данные в группе Работа с данными. В от-
крывшемся диалоговом окне Проверка вводимых значений на вкладке Пара-
метры в поле Тип данных выбрать из списка значение Список, а в поле Источ-
ник вписать =Номер (не пропустить знак "="!) и нажать ОК.
Такой диапазон в
качестве источника
организует автомати-
ческое появление в
списке новых значе-
ний при добавлении
данных о новых со-
трудниках или других
корректировках (уда-
лении / изменении) ис-
ходного списка.
После выполнения действий справа в ячейках столбца А появится стрелоч-
ка, которая позволит безошибочно выбирать табельные номера в автоматиче-
ском режиме.
4. Теперь можно на листе Выборка заполнить столбец А нужными табель-
ными номерами из раскрывающегося списка (рис. 3.14).
В дальнейшем с целью автоматизации работы именно по табельным номе-
рам будет организовано автоматическое заполнение данными о фамилиях, име-
нах, должностях и вычисление стажа работы на предприятии по выбранной да-
те поступления (рис. 3.14).
40 Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL

Рисунок 3.14 – Выборка табельных номеров сотрудников в столбце А


из раскрывающегося списка
2) Подстановка данных в Excel. Функция ВПР
Функция ВПР, пожалуй, одна из самых красивых функций в Excel. Вари-
антов ее применения множество. Основное применение – поиск совпадений в
разных списках (базах данных). В одной из книг по финансовому анализу была
сформулирована интересная мысль о функции ВПР: "если финансовый аналитик
умеет ею пользоваться, его можно брать на работу".
Рассмотрим довольно распространенную на практике ситуацию, когда дан-
ные из одной таблицы в Excel надо подставить в другую.
1. В ячейках В1, С1, D1, E1 и F1 листа Выборка вписать или (скопировать)
заголовки: Фамилия, Имя, Должность, Стаж и Оклад (см. рис. 3.14).
2. Для автоматического выбора фамилий сотрудников в ячейках столбца В,
в соответствии с выбранными из списка табельными номерами в ячейках столбца А,
можно воспользоваться функцией ВПР. Эта функция ищет значение в крайнем
левом столбце таблицы и возвращает значение ячейки, находящейся в указанном
столбце той же строки (для корректной работы функции ВПР исходная таблица
должна быть отсортирована по возрастанию значений первого столбца).
Установив курсор в ячейку В2, нажать кнопку Вставка функции левее
строки формул и в категории Ссылки и массивы выбрать функцию ВПР. Задать
первые три аргумента, выделив соответствующие ячейки. Окончательный вид
формулы в ячейке В2:
= ВПР(A2; Анкеты!A:C; 2)
где А2 – значение, которое должно быть найдено в первом столбце таблицы;
Анкеты!A:C – ссылка на ячейки листа Анкеты с таблицей, в которой про-
изводится поиск данных;
2 – номер столбца в таблице, из которого нужно вернуть значение.
Выполнить автозаполнение формулы на остальные ячейки столбца В, для
которых заполнены табельные номера.
Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL 41

3. Для автоматического выбора имен сотрудников в ячейках столбца С,


в соответствии с выбранными из списка табельными номерами в ячейках
столбца А, также воспользуемся функцией ВПР, изменив номер столбца выбор-
ки:
=ВПР(A2; Анкеты!A:C; 3)
4. Для автоматического выбора должностей сотрудников в ячейках столб-
ца D в соответствии с выбранными из списка табельными номерами в ячейках
столбца А также можно воспользоваться функцией ВПР, но есть и другие сред-
ства для достижения этой цели. Например, функция ПРОСМОТР синтаксиса
= ПРОСМОТР(искомое_значение, вектор_для_поиска, вектор_результатов)
находит искомое_значение в одной строке или столбце (вектор_для_поиска) и
возвращает значение в той же позиции в другой строке или столбце (вектор_ре-
зультатов). Для правильной работы функции ПРОСМОТР, как и для функции
ВПР, необходимо, чтобы данные в исходной таблице были отсортированы.
Установив курсор в ячейку D2, надо нажать кнопку Вставка функции и в
категории Ссылки и массивы выбрать функцию ПРОСМОТР. Задать аргументы,
выделив соответствующие ячейки. Окончательный вид формулы в ячейке D2:
= ПРОСМОТР(A2; Номер; Анкеты!F:F)
Выполнить автозаполнение формулы на остальные ячейки столбца D, для
которых заполнены табельные номера и фамилии.
5. Для того чтобы вычислить в столбце Е стаж работы сотрудника по выбран-
ной из таблицы Анкеты дате поступления (см. рис. 3.14), понадобится формула:
=ДОЛЯГОДА(ВПР(A2; Анкеты!A:G; 7); СЕГОДНЯ())
6. Далее для выборки значений оклада каждого сотрудника по занимаемой
им должности из таблицы на листе Должности, сначала целесообразно отсор-
тировать исходную таблицу в алфавитном порядке должностей, а затем в пер-
вой из ячеек столбца F на листе Выборка создать формулу:
= ВПР(A2; Анкеты!A:H; 8) * ВПР(D2; Должности!$A$1:$B$7; 2)
Поскольку некоторые из сотрудников работают не на целую ставку, в этой
формуле значение занимаемой сотрудником ставки, выбранной из восьмого по-
следнего столбца таблицы на листе Анкеты, надо умножить на значение оклада
42 Лекция 3. СРЕДСТВА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ В EXCEL

сотрудника согласно занимаемой им должности, выбранного из "тарифной сетки"


в ячейках А1:В7 на листе Должности. Если предполагать, что список должностей
не будет пополняться, можно "зафиксировать" диапазон А1:В7 в качестве второго
аргумента функции ВПР, нажав клавишу [F4] для формирования абсолютного ад-
реса, который не будет индексироваться при автозаполнении.

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


цов, задать границы и формат для заполненных ячеек таблицы.

Вопросы для самопроверки


1. Какие операции обработки таблиц БД имеются в Excel?
2. В чем отличие применения команды Данные  Сортировка от приме-
нения кнопок сортировки на панели инструментов?
3. Какие условия отбора записей можно задавать в пункте Условие диало-
гового окна Пользовательский автофильтр?
4. Какое предназначение имеет фильтр? Какие виды фильтров имеются в
Excel?
5. Для каких целей используют расширенный фильтр? В чем отличие при-
менения расширенного фильтра от автофильтра?
6. Как отменить результаты фильтрации?
7. Для чего используются промежуточные итоги? Какие итоговые опера-
ции существуют для организации промежуточных итогов?
8. Какие требования выдвигаются к столбцу, выбираемому из списка При
каждом изменении, в диалоговом окне Промежуточные итоги?
9. Какой порядок применения промежуточных итогов?
10. Что такое сводные таблицы? Для чего они применяются?
11. Перечислите существующие итоговые операции в сводных таблицах.
12. Каким образом можно изменять состав сводной таблицы?
13. Опишите порядок создания сводной диаграммы.
14. Чем сводная диаграмма отличается от обычной диаграммы?
15. Перечислите функции категории "Работа с базой данных". Какое их
предназначение?
43

Лекция 4. СУБД ACCESS. Особенности создания таблиц

1. Основные объекты СУБД Access.


2. Порядок создания БД в MS Access 2010.
3. Типы данных полей.
4. Способы создания таблиц.
5. Создание в таблицах полей подстановки.
6. Создание связей между таблицами.

1. Основные объекты СУБД Access


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

Рисунок 4.1 – Структура таблицы:


1 – запись, содержащая конкретные данные об определенном объекте;
2 – поле с данными об одном аспекте элемента таблицы;
3 – значение поля.
Формы – это объект базы данных, который можно использовать для соз-
дания интерфейса пользователя для приложения базы данных. Форма представ-
ляет собой бланк, подлежащий заполнению, или маску, накладываемую на на-
бор данных. Бланк-форма позволяет упростить процесс заполнения базы дан-
ных. Маска-форма позволяет ограничить объем информации, доступной поль-
44 Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ

зователю, обращающемуся к базе. Как правило, форма напрямую соединена с


источником данных, например, с таблицей или запросом, и может использо-
ваться для ввода, изменения или отображения данных из источника данных.
Как вариант, можно создать "свободную" форму, которая не связана напрямую
с источником данных, но которая все равно может содержать кнопки, надписи
и другие элементы управления, необходимые для работы приложения.
Запросы предназначены для модификации и отбора записей на основании
заданных критериев. Можно использовать запросы по образцу (Queries By
Example) – QBE-запросы, параметры которых устанавливаются в окне конст-
руктора запросов. Также для создания запросов можно использовать инструк-
ции структурированного языка запросов (Structured Query Language) – SQL-
запросы.
С помощью запросов можно извлекать данные из одной или нескольких
связанных таблиц, осуществлять логические и арифметические операции над
данными, группировать данные в новые таблицы по определённым признакам.
Отчёты служат для отображения данных из таблиц и запросов в удобном
для просмотра виде с использованием средств их форматирования, подведения
итогов, фильтрации и графического преобразования в гистограммы и диаграм-
мы. Часто отчет выступает в качестве объекта, предназначенного для создания
документа, который впоследствии может быть распечатан или включен в доку-
мент другого приложения. С помощью отчетов можно просматривать, форма-
тировать и группировать информацию в БД Access. Например, можно создать
простой отчет в виде списка номеров телефонов всех контактов или сводный
отчет по итогам продаж компании в разных регионах за разные периоды.
Макросы – это простейшие программы на языке макрокоманд (языке сце-
нариев), которые позволяют при обращении к заранее созданным запросам,
формам, отчётам, выполнять определённые действия. В состав базы данных це-
лесообразно включать макросы, автоматизирующие процессы её заполнения,
отбора информации и т. д. В Access макросы не создаются с помощью макроре-
кордера, а назначаются разработчиком. Т. е. для создания макроса необходимо
обратиться к режиму конструктора, в котором появляется возможность выбора
действия и аргументов макроса.
Модули представляют собой объекты, содержащие процедуры обработки
событий или выполнения вычислений, написанные на языке Visual Basic for
Application. С помощью модулей можно решить широкий класс задач по поиску
и преобразованию информации в базе данных.
Отличительной особенностью СУБД Access является то, что вся информа-
ция, относящаяся к конкретной базе данных, хранится в одном файле. Это
представляется весьма удобным, особенно, для конечных пользователей
Сейчас СУБД Access является безусловным лидером среди десктоп-
продуктов по работе с большими БД. Благодаря выверенному интерфейсу, оби-
лию наглядных подсказок, интегрированным шаблонам и эффективным инст-
рументам, программу освоит даже начинающий пользователь, не имевший ра-
нее опыта работы с БД. Access – это одинаково простое решение как для веде-
Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ 45

ния домашней бухгалтерии и мелкого бизнеса, так и сопровождения БД круп-


ных промышленных предприятий.

2. Порядок создания БД в MS Access 2010


Пользовательский интерфейс Access 2010 включает некоторые значитель-
ные изменения по сравнению с предыдущими версиями, особенно выпущен-
ными до Access 2007. Два основных компонента пользовательского интерфей-
са – лента и область навигации – впервые появились в Access 2007. В Access
2010 лента изменена и добавлен третий компонент пользовательского интер-
фейса – представление Backstage (набор команд на вкладке Файл на ленте).
Именно представление Microsoft Office Backstage открывается при запуске
Access 2010 (рис. 4.2). Backstage содержит команды для создания или открытия
баз данных, публикации их в Интернете на сервере SharePoint Server и выпол-
нения многих задач обслуживания файлов и баз данных. В представлении
Backstage также доступны команды настройки, обслуживания и совместного
использования баз данных. Как правило, команды в представлении Backstage
применяются ко всей базе данных, а не к отдельным ее объектам.

Рисунок 4.2 – Представление Backstage при открытии MS Access 2010


В Microsoft Access имеется большое количество шаблонов БД, позволяю-
щих ускорить создание базы данных (рис. 4.3). Шаблон – это готовая база дан-
ных, содержащая все таблицы, запросы, формы и отчеты, необходимые для вы-
полнения определенной задачи. Например, существуют шаблоны, используе-
мые для отслеживания проблем, управления контактами или записи расходов.
Некоторые шаблоны содержат несколько образцов записей, чтобы продемонст-
рировать их использование. Шаблоны баз данных можно использовать как есть
или настроить в соответствии с конкретными требованиями.
Последовательность действий для создания базы данных с помощью
шаблона, входящего в состав Access 2010 может быть следующей:
1) запустить Access 2010 и на вкладке Создание в представлении Backstage
нажать кнопку Образцы шаблонов;
46 Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ

2) выбрать в разделе Доступные шаблоны нужный шаблон, например Фа-


культет, а в поле Имя файла ввести имя файла, например Преподаватели;

Рисунок 4.3 – Набор шаблонов в MS Access 2010


3) также надо щелкнуть на значке папки рядом с полем Имя файла и ука-
зать расположение, в котором необходимо создать БД. Если расположение не
указано, БД будет создана в расположении по умолчанию (отображается под
полем Имя файла);

4) нажать кнопку Создать.


После этого откроется окно с новой пустой таблицей, вид которой пред-
ставлен на рис. 4.4.

Рисунок 4.4 – Окно БД Преподаватели, созданной с помощью шаблона Факультет


Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ 47

Создать новую (пустую) базу данных можно с помощью команды


Файл  Создать  Новая база данных. После этих действий откроется окно
БД, представленное на рис. 4.5.
Рассмотрим основные элементы интерфейса СУБД Access 2010 с помощью
этого окна.

Рисунок 4.5 – Основные элементы главного окна программы Access

Главный элемент пользовательского интерфейса MS Access 2010 пред-


ставляет собой Ленту, которая идет вдоль верхней части окна (рис. 4.5). Лента
управления содержит вкладки: Файл, Главная, Создание, Внешние данные и Ра-
бота с базами данных. Каждая вкладка связана с видом выполняемого дейст-
вия. Выбрав одну из вкладок команд, можно увидеть доступные в ней команды
в виде пиктограмм кнопок с обозначением выполняемых функций. При этом
некоторые из кнопок на вкладках ленты предоставляют выбор действий, если
на пиктограмме имеется стрелка вниз . Кроме того, некоторые из групп ко-
манд на вкладках, например группы Буфер обмена и Форматирование текста
на вкладке Главная, в своем правом нижнем углу имеют пиктограмму для
открытия соответствующего диалогового окна (см. рис. 4.5).

Кроме основных пяти вкладок, лента предусматривает работу с контекст-


ными вкладками, которые появляются только тогда, когда их использование
допустимо. Например, при конструировании таблиц на ленте появляется до-
полнительная вкладка Работа с таблицей, включающая две вкладки Поля и
Таблица (см. рис. 4.5).
48 Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ

3. Типы данных полей


При создании полей таблицы каждому из них надо задать соответствую-
щий хранимой в нем информации тип данных. В Access 2010 существует 11 ос-
новных типов данных, некоторые из которых имеют свои подтипы.
В Access 2010 при открытии режима создания таблицы можно сразу вы-
брать необходимый формат поля. При нажатии на стрелку в строке с на-
именованием полей таблицы откроется список с доступными форматами дан-
ных (по умолчанию задается тип данных Текст) (рис. 4.6, а).

а) б)
Рисунок 4.6 – Список с возможными типами данных для поля таблицы:
а) список типов, выбираемых для поля в режиме Таблица;
б) список типов, выбираемых для поля в режиме Конструктор.
Другим способом выбора типа данных конструируемого поля является пе-
реход из режима Таблица в режим Конструктор. В этом режиме для каждого
поля можно выбрать свой тип данных (рис. 4.6, б).
Рассмотрим подробнее основные типы данных.
Текстовый тип используется для хранения таких данных, как имена и
адреса, а также для чисел, не требующих вычислений, таких как номера теле-
фонов, инвентарные номера или почтовые индексы. По умолчанию всем полям
таблицы в Access 2010 задаётся именно этот тип данных. В текстовом поле мо-
жет находиться до 255 знаков. По умолчанию устанавливается размер поля 50
знаков. Свойство Размер поля определяет максимальное количество знаков, ко-
торые можно ввести в текстовое поле. Для экономии общего объёма памяти при
использовании текстовых данных целесообразно для каждого поля задавать его
размер в символах.
Поле МЕМО – тип данных для текстовых полей с длиной более 255
символов. В поле MЕМО может находиться до 65 536 символов. Обычно ис-
пользуется для хранения абзацев текста: резюме, кратких описаний и т. п. При
Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ 49

использовании этого типа нет необходимости заботиться об указании длины


записи, которая будет храниться в памяти машины. Для полей с типом данных
МЕМО будет выделено ровно столько памяти, сколько требуется для хранения
всех введенных символов (пустые знаки для неиспользованных позиций в поле
храниться не будут). Поля типа MEMO и текстовые поля можно сортировать
или группировать, но при этом Access использует только первые 255 знаков.
Числовой тип используется для хранения числовых данных, которые
должны участвовать в математических вычислениях, за исключением денеж-
ных расчетов. Тип и размер значений, которые могут находиться в числовом
поле, можно изменить в свойстве Размер поля. Чтобы указать конкретный спо-
соб хранения данных в полях числового типа, предусмотрено несколько подти-
пов: Байт, Целое, Длинное целое, Одинарное с плавающей точкой, Двойное с
плавающей точкой, Действительное. Например, поле типа Байт допускает
ввод только целых чисел (без десятичных знаков) от 0 до 255.
Денежный тип поля используют для предотвращения округления во
время вычислений. В денежных полях обеспечивается 15 знаков слева от деся-
тичной точки и 4 знака справа. Денежное поле занимает 8 байт на диске. Над
такими данными можно выполнять различные арифметические операции, как
над типом данных Числовой.
Дата и время – тип данных, предназначенный для хранения значений
даты и времени и позволяющий проведение вычислений над этими данными.
Для разнообразного отображения даты и времени существуют специальные
форматы в виде шаблонов, например: Полный формат даты (установлен по
умолчанию) – "29.08.2013 10:43:42", Длинный формат даты – "29 августа
2013 г.", Краткий формат даты – "29.08.2013", Длинный формат времени –
"10:10:42", Краткий формат времени – "10:43" и др.
Счётчик – тип данных полей, в которые при добавлении записи авто-
матически вводится уникальное число. Созданный для записи номер уже не
может быть удален или изменен. Поле счетчика может генерировать три типа
чисел: последовательно возрастающие на единицу, случайные числа, а также
коды репликации (также называемые GUID – глобальные уникальные иденти-
фикаторы). Наиболее часто используется счетчик последовательно возрастаю-
щих чисел. Такой тип счетчика удобно использовать как первичный ключ таб-
лицы. Счетчик случайных чисел создает случайный номер для каждой записи в
таблице. Код репликации используется при репликации БД для создания уни-
кальных идентификаторов, обеспечивающих синхронизацию реплик.
Логический – это тип данных поля, при котором поле может содержать
одно из двух значений: "Да" или "Нет". Нулевое значение отображается как "Нет",
ненулевое значение – как "Да". Кроме формата Да / Нет, установленного по
умолчанию, в Access предусмотрены еще два встроенных формата для отображе-
ния данных типа Логический: Истина/Ложь и Вкл/Выкл (настраиваемые форматы
не предусмотрены). Значение Null для логических данных не допускается.
50 Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ

Поле объекта OLE – тип данных поля, используемый для хранения


объектов из других приложений, связанных или внедренных в базу данных
Microsoft Access. Термин OLE расшифровывается как Object Linking and
Embedding – связывание и внедрение объекта. В поле могут быть размещены
рисунки, электронные таблицы, видеофильмы в двоичном формате. Такой тип
данных сохраняет данные объёмом до 1 Гбайт.
Гиперссылка обеспечивает связь с Web-страницей или каким-либо
файлом. При выборе этого типа данных Access автоматически запускает при-
ложение, в котором можно отобразить этот файл, например Web-браузер для
отображения Web-страницы или программный модуль с расширением exe.
Вложение – тип данных, который появился в Access 2007/2010 для хра-
нения непосредственно в базе данных файлов больших размеров (рисунков,
приложений MS Office и других видов) в сжатом виде размером до 2 Гбайт.
Мастер подстановок – это свойство поля, а не настоящий тип данных,
используемое в Access 2010 в качестве средства для более эффективного и кор-
ректного ввода данных. При выборе мастера подстановок запускается мастер
подстановок, который создаёт поле в том формате и того типа, которое будет
позаимствовано из другой таблицы или списка.

4. Способы создания таблиц


В Access 2010 для создания (конструирования) таблиц предусмотрены ре-
жимы Таблица и Конструктор. Далее рассмотрим на конкретных примерах
создания таблиц особенности каждого из этих режимов. Но кроме этих режи-
мов, таблицы можно импортировать из внешних источников, например, таблиц
Excel или других БД.
Создание таблиц в режиме Таблица
Этот режим удобен тем, что разработчик может сам задавать наиме-
нования полей, выбирать для них типы данных и непосредственно
вводить данные.
Рассмотрим порядок создания таблицы Надбавки с размерами тарифов, в
зависимости от стажа работы сотрудников фирмы, (табл. 4.1) в режиме Таблица.
Таблица 4.1
Надбавки
Код Стаж Надбавка (грн.)
1 Менее 1 года 0
2 От 1 года до 3-х лет 150
3 От 3-х лет до 5 лет 400
4 Свыше 5 лет 600
Порядок создания таблицы Надбавки в новой пустой базе данных в
Access 2010 будет следующим.
1. Создать новую базу данных с именем .
Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ 51

2. Выбрать на вкладке Создание в группе Таблицы команду Таблица. Это


приведет к открытию заготовки такого вида:

При этом первым полем автоматически создаётся поле Код с типом дан-
ных Счётчик, которое предлагается использовать в качестве ключа.
3. Нажав по полю Щелкните для добавления, выбрать из открывшегося
списка (рис. 4.6, а) необходимый формат второго создаваемого поля Стаж –
– текстовое поле.
4. Заменить имя поля Поле1 на Стаж (в соответствии с табл. 4.1) с помо-
щью команды контекстного меню .
5. Подобным образом добавить еще одно поле с именем Надбавка и фор-
матом данных .
6. Заполнить созданную таблицу данными из табл. 4.1, в результате чего
заполненная таблица приобретет вид:

7. Закрыть таблицу, нажав кнопку в правом верхнем углу таблицы. При


этом система задаст вопрос о целесообразности сохранения таблицы. Если от-
ветить "Да", появится диалоговое окно Сохранение, в котором надо заменить
имя Таблица1 на Надбавки и нажать кнопку ОК.
В дальнейшем изменить имя таблицы можно из области переходов. Только
следует помнить, что таблица в этот момент должна быть закрыта. При нажа-
тии на правую кнопку мыши появится контекстное меню, в котором следует
выбрать команду .

Создание таблицы в режиме Конструктор таблиц


Создание новой таблицы в этом режиме позволяет выполнять сле-
дующие операции: добавлять поля, задавать форматы полей, изме-
нять ключевое поле таблицы, выбирать данные из готовых таблиц, строить ло-
гические и арифметические выражения для контроля вводимых данных.
Особенности режима Конструктор таблиц рассмотрим на примере созда-
ния таблицы Сотрудники с данными о сотрудниках организации (фамилии,
имена, должности, даты поступления на работу и др.). Порядок создания этой
таблицы будет следующим.
1. Для запуска этого режима в Access 2010 надо на вкладке Создание в
группе Таблицы выбрать команду Конструктор таблиц.
52 Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ

Окно конструктора структурно состоит из трёх разделов (столбцов): Имя


поля, Тип данных и Описание.
2. В разделе Имя поля надо поочередно вписать имена создаваемых полей,
а в разделе Тип данных для каждого поля выбрать из списка (рис. 4.7) соответ-
ствующий тип данных. В разделе Описание, не обязательном для заполнения,
разработчик может задать комментарий, чтобы было понятно, какие данные
будут храниться в этом поле.

Рисунок 4.7  Вид окна при создании полей таблицы Сотрудники


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

Вследствие этого система сформирует диалоговое окно с предложением


создания ключевого поля. – Нажать кнопку Да.
Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ 53

В результате этого в таблице будет автоматически сформировано новое


ключевое поле Код с типом данных Счетчик, что позволит устанавливать в
дальнейшем связи с другими таблицами БД. В отличие от такого способа соз-
дания ключевого поля таблицы, разработчик и сам может создавать ключевые
поля в режиме Конструктор, задавая имя поля, выбирая тип (зачастую, Счет-
чик или Текстовый) и указывая .
Итак, таблица Сотрудники создана, но еще не заполнена данными. Режим
Конструктор таблиц тем и удобен, что вначале достаточно создать только пе-
речень полей таблицы. Вводить данные в таблицу можно различными способа-
ми: вручную в режиме Таблица, с помощью мастера подстановок в режиме
Таблица, с помощью импорта данных из других источников, с помощью при-
соединения файлов, с помощью мастера подстановок в режиме Конструктор.
4. Если вы вышли из режима Конструктор таблиц, целесообразно вер-
нуться в него, после чего добавить описание в разделе Описание и уточнить
свойства полей таблицы Сотрудники.
Открыть таблицу в режиме Конструктор можно, нажав на названии таб-
лицы Сотрудники правой кнопкой мыши и выбрав из контекстного меню ко-
манду .
Для задания свойств полей таблицы в нижней части конструктора в разде-
ле Свойства поля есть две закладки Общие и Подстановка (рис. 4.8). На за-
кладке Общие отображается перечень свойств выделенного поля, например: для
текстовых полей в свойстве Размер поля система, по умолчанию, задаёт 255
символов, а пользователь для экономии места может уменьшить это значение до
целесообразного. Обратите внимание, что в таблице появилось новое поле Код.
4.1. Для поля Код (тип данных Счетчик) изменить имя поля на КодСот-
рудника (без пробелов).
4.2. Для поля Фамилия (тип данных Текстовый):
– задать в свойстве Размер поля значение 30 (как максимальное коли-
чество символов в фамилиях сотрудников);
– в свойстве Обязательное поле выбрать из списка значение Да;
– в разделе Описание вписать "Обязательное поле (до 30 символов)".
4.3. Для поля Имя (тип данных Текстовый):
– задать в свойстве Размер поля значение 15;
– в свойстве Обязательное поле выбрать из списка значение Да;
– в разделе Описание вписать "Обязательное поле (до 15 символов)".
4.4. Для поля Должность (тип данных Текстовый):
– задать в свойстве Размер поля значение 25;
– в разделе Описание вписать "Данные будут введены из таблицы".
4.5. Для поля ДатаПоступления (тип данных Дата/время):
– в свойстве Обязательное поле выбрать из списка значение Да;
– в свойстве Сообщение об ошибке вписать "Укажите дату поступле-
ния на работу".
4.6. Для полей КодДоплаты и КодНадбавкиЗаСтаж (тип Числовой):
– в свойстве Размер поля выбрать из списка значение Длинное целое;
– в свойстве Обязательное поле выбрать из списка значение Да.
54 Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ

После проделанных действий окно конструирования таблицы получит вид,


представленный на рис. 4.8.

Рисунок 4.8  Вид окна конструктора таблицы Сотрудники после уточнения свойств полей
5. Для заполнения созданной таблицы надо перейти в режим таблицы, вос-
пользовавшись соответствующей командой контекстного меню или командой
Режим  Режим таблицы на ленте инструментов. На сообщение с предложе-
нием сохранения таблицы нажать кнопку Да. Заполнить таблицу произвольны-
ми данными (не менее десяти записей), например такими:

При этом в необязательных полях можно заполнять не все записи. Поле


Должность будет заполняться позже путем импорта данных из другой таблицы.
А поле КодДоплаты надо заполнять значениями от 1 до 4, как и поле КодНадбавки,
что обусловлено набором значений в соответствующих таблицах.
Обратите внимание, на то, что в заголовке каждого поля справа имеется
значок  (стрелка вниз), это раскрывающийся список с некоторыми функ-
Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ 55

циями, аналогичными Excel, которые позволяют сортировать данные, осущест-


влять поиск данных в выделенном поле, использовать фильтрацию данных.
6. Закрыть таблицу, нажав кнопку в правом верхнем углу таблицы. При
этом система задаст вопрос о целесообразности сохранения изменения макета
таблицы Сотрудники. – Надо ответить Да.
В режиме Конструктор таблиц надо создать в этой же БД еще одну табли-
цу Анкеты с данными из личных дел сотрудников организации: код сотрудника,
дата рождения, адрес, образование, телефон, фотография и др. (рис. 4.9).

Рисунок 4.9  Поля таблицы Анкеты в режиме конструктора таблицы


Для поля КодСотрудника задать тип Числовой размер поля Длинное целое.
Для поля МобилТелефон (тип данных Текстовый) целесообразно задать
маску ввода, для этого надо в свойстве Маска ввода вписать: (###)###-###-##.
Система переведет эту маску к виду: \(###\)###\-##\-##. В этой маске первые 3
цифры – код мобильного оператора, далее 7 цифр – номер телефона. При за-
полнении данных пользователь будет вводить только цифры номера телефона,
например 0502353360, а созданная маска преобразует этот номер к виду:
(050)235-33-60. Кроме этого, для экономии места, можно ограничить размер
этого поля, задав в свойстве Размер поля значение 10 символов.
После конструирования таблицы Анкеты надо перейти в режим таблицы и
заполнить ее данными. При этом поле Образование пока не надо заполнять, так
как оно будет заполняться позже путем использования поля подстановки (см.
п. 5 этой лекции). А при заполнении поля Фотография (тип данных Поле объ-
екта OLE) надо с помощью любого графического редактора открыть файл с
фотографией сотрудника, выполнить команду копирования ([Ctrl]+[C]), перей-
ти в ячейку поля Фотография таблицы БД соответствующего сотрудника и вы-
полнить команду вставки ([Ctrl]+[V]).
56 Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ

Использование внешних данных – импорт таблиц


С "нуля" таблицы БД разрабатывать совсем не обязательно, так как на пред-
приятиях, как правило, имеются файлы, созданные в различных приложениях,
которые можно использовать при формировании базы данных в Access. Допус-
тим, что в отделе кадров предприятия ведется реестр номенклатур должностей в
Excel, сведения в реестре могут изменяться или дополняться новыми записями.
Данные из этого реестра нужны и для ведения БД о сотрудниках предприятия.
Средства Access позволяют не только импортировать данные из таблицы Excel в
таблицу Access, но и, при необходимости, сохранять связи с исходными данны-
ми Excel. В Access это называется – работа с внешними данными.
Продемонстрируем эти средства на примерах создания таблиц Должности
и Доплаты, импортируя данные из таблиц Excel. Причем, в одном случае будет
сохранена связь с исходными данными Excel, а во втором – данные будут про-
сто скопированы в качестве источника данных.
Создание таблицы Должности
1. Создать в Excel файл с именем Должности, на первом листе которого
заполнить таблицу с перечнем должностей и базовых окладов:

Сохранить файл и закрыть Excel.


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

После этого нажать кнопку ОК.


Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ 57

3. Следующим шагом будет выведено диалоговое окно Связь с электрон-


ной таблицей с наименованиями листов в импортируемой таблице Excel, в ко-
тором надо нажать кнопку Далее.
4. В следующем диалоговом окне следует установить флажок
для использования данных из пер-
вой строки в качестве имен полей таблицы и нажать кнопку Далее.
5. В следующем диалоговом окне ввести имя новой таблицы, например
Должности (вместо значения по умолчанию Лист1), и
нажать кнопку Готово. После этого появится сообще-
ние о завершении связывания таблицы Должности как
источника данных в Excel с базой данных Access. На-
жать кнопку ОК.
После закрытия сообщения в перечне таблиц БД
появится новый значок с именем созданной таблицы 
Стрелка возле значка таблицы означает, что таб-
лица имеет связь с внешним источником данных Excel.
6. Открыть таблицу Должности, дважды щелкнув по значку с ее именем,
убедиться в правильности импортированных данных и закрыть таблицу.
Создание таблицы Доплаты
1. Открыть Excel-файл Должности.xls, переименовать лист Лист2 на Доп-
латы и создать таблицу с возможными вариантами доплат:

Сохранить файл и закрыть Excel.


2. Для импорта этой таблицы в Access надо вернуться в БД Сотрудники
организации и выполнить команду Внешние данные  Excel. В открывшем-
ся диалоговом окне Внешние данные – Электронная таблица Excel с помощью
кнопки Обзор выбрать файл Должности.xls и проследить, чтобы была установ-
лена первая из трех опций – Импортировать данные источника в новую таб-
лицу в текущей базе данных. Эта опция удобна для простого переноса всех
данных из таблицы Excel в новую таблицу Access. Нажать кнопку ОК.
3. В следующем диалоговом окне Связь с электронный таблицей выбрать
имя листа Доплаты с импортируемой таблицей и нажать кнопку Далее.
4. В диалоговом окне Импорт электронной таблицы установить флажок
и нажать кнопку Далее.
5. На следующем шаге система предложит уточнить тип каждого поля им-
портируемой таблицы. Надо для поля КодДоплаты выбрать тип – Длинное це-
лое и индекс – Да (Совпадения не допускаются). Нажать кнопку Далее.
58 Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ

6. Далее система посоветует задать ключевое поле в новой таблице. Надо


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

5. Создание в таблицах полей подстановки


Довольно часто приходится выбирать из списка определённые данные, ко-
торые жёстко фиксированы. Такие списки создают непосредственно при проек-
тировании полей таблицы. Рассмотрим три способа создания полей подстанов-
ки: 1) при создании нового поля в режиме таблицы, 2) при изменении настроек
существующего поля в режиме конструктора с выбором значений списка из
другой таблицы и 3) с помощью мастера подстановок.
Создание нового поля со списком подстановки
Предположим, необходимо осуществить штатную расстановку сотрудни-
ков, в соответствии с имеющимися наименованиями отделов. Для создания
фиксированного списка с названиями отделов организации следует воспользо-
ваться мастером подстановки в режиме таблицы и выполнить несколько шагов.
1. Открыть таблицу Сотрудники в режиме таблицы. Установить курсор в
последнее поле, в заголовке которого написано Щелкните для добавления.
2. На вкладке Поля в группе Добавление и удаление выбрать команду
Другие поля  Подстановка и отношение. Это приведет к открытию
диалогового окна Создание подстановки, в котором надо включить опцию
и нажать кнопку Далее.
3. В следующем диалоговом окне надо создать список поля подстановки. В
нашем примере надо создать один столбец и заполнить три строки значениями:

Нажать кнопку Далее.


4. Следующим шагом надо задать имя нового поля Отдел вместо имени
Поле1, предлагаемого системой по умолчанию, и нажать
кнопку Далее.
5. Заполнить ячейки поля Отдел данными, выбирая их
из списка (см. рис. справа).
Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ 59

Далее надо создать список с разновидностями образования сотрудников


организации (высшее, среднее специальное, среднее и др.) для уже имеющегося
поля Образование в таблице Анкеты. Для этого надо открыть таблицу Анкеты
в режиме конструктора. Установить курсор в поле Образование, в свойствах
поля перейти на закладку Подстановка и выбрать для свойства Тип элемента
управления значение Поле со списком. После этого в появившемся свойстве Ис-
точник строк ввести такие значения (разделитель – точка с запятой):
"среднее";"среднее специальное";"высшее";"ученая степень"
После чего осталось заполнить поле Образование соответствующими значе-
ниями из сформированного списка.

Создание вложенной таблицы данных –


списка подстановки для существующего поля с выбором значений
списка из другой таблицы (связанного источника данных)
Использование полей подстановки, используя значения связанных сущест-
вующих в БД таблиц, позволяет: во-первых, не заполнять список значений, а,
во-вторых, не заботиться об ошибочных значениях, не существующих в табли-
це Должности, поддерживая, тем самым, целостность данных.
1. Открыть таблицу Сотрудники в режиме конструктора и установить кур-
сор в поле Должность.
2. Перейти на закладку Подстановка в нижней части окна конструктора.
Для свойства Тип элемента управления выбрать значение Список.
3. Для добавившихся свойств выбрать из списков такие значения:
– для свойства Тип источника значений – значение Таблица или запрос;
– для свойства Источник строк – значение Должности (это имя таблицы).
4. Перейти в режим таблицы и заполнить ячейки
поля Должность данными, выбирая их из списка 
Созданное таким образом поле подстановки со
значениями из связанной таблицы БД позволит поль-
зователю не заботиться об актуализации и ведении
таблицы, которая пополняется в данном случае из
таблицы Excel.
60 Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ

В результате этих действий автоматически будет создана связь между таб-


лицами Должности (главная) и Сотрудники (подчиненная).
Создание в подчиненной таблице поля подстановки для выбора
значений из главной таблицы с помощью мастера подстановок
Рассмотрим порядок создания такого поля подстановки на примере поля
КодДоплаты в подчиненной таблице Сотрудники с выбором значений из глав-
ной таблицы Доплаты.

1. Открыть подчиненную таблицу Сотрудники в режиме конструктора,


предварительно убрав связь между таблицами Сотрудники и Доплаты, ели она
была установлена.
2. Выделить поле вторичного
ключа КодДоплаты и в качестве типа
данных для этого поля выбрать вместо
типа Числовой значение Мастер под-
становок. Это приведет к открытию
диалогового окна мастера создания
подстановки.
3. На первом шаге создания поля
подстановки с помощью мастера надо
просто нажать кнопку Далее, согла-
сившись с установленным по умолча-
нию параметром Объект "поле под-
становки" получит значения из другой
таблицы или другого запроса. Нажать
кнопку Далее.
Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ 61

4. На втором шаге создания поля подстановки надо выбрать таблицу Доп-


латы с первичным ключом (при этом типы данных для первичного и вторично-
го ключей должны быть одинаковыми). Нажать кнопку Далее.
5. На следующем шаге надо отобрать то поле или поля таблицы Доплаты,
которые должны отображаться при пользовании полем подстановки в таблице
Сотрудники. Например, можно указать только поле ВидДоплаты или же выбрать
все поля КодДоплаты, ВидДоплаты и Коэффициент. Нажать кнопку Далее.
6. Далее можно (хотя и не обязательно) указать порядок сортировки эле-
ментов списка, например, по полю КодДоплаты. Нажать кнопку Далее.
7. Следующим шагом рекомендуется с помощью указателя мыши задать
ширину столбцов в поле подстановки. Нажать кнопку Далее.
8. На последнем шаге мастера создания поля подстановки надо задать под-
пись поля и включить опцию для проверки целостности данных, предусматри-
вающую каскадное удаление. Нажать кнопку Готово.
9. Осталось согласиться с необходимостью сохранения таблицы, перейти в
режим Таблица и убедиться в изменении значений поля КодДоплаты на тексто-
вые описания видов доплаты, что более информативно при работе с таблицей.
При необходимости заполнения или изменения значений в этим поле у пра-
вого края выбранной ячейки автоматически появляется стрелочка для открытия
выпадающего списка с элементами списка.

6. Создание связей между таблицами


При создании БД сведения распределяются по таблицам, в каждой из кото-
рых есть первичный ключ. После этого к связанным таблицам добавляются внеш-
ние ключи, имеющие ссылки на первичные ключи. Эти пары внешнего и первич-
ного ключей формируют основу для межтабличных связей и многотабличных за-
просов. Поэтому важно, чтобы ссылки "внешний ключ – первичный ключ" оста-
вались синхронизованными. Целостность данных помогает убедиться, что ссылки
остаются синхронизированными, и определяется межтабличными связями.
Access 2010 даёт возможность организовывать и отображать межтаблич-
ные связи с помощью окна Схема данных, которое можно открыть одноимен-
ной командой на вкладке Работа с базами данных.
Используются связи между таблицами для корректного создания и даль-
нейшего использования других объектов базы данных (форм, запросов и отче-
тов), поскольку межтабличные связи являются основой, с помощью которой
можно обеспечить целостность данных.
62 Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ

Связи устанавливаются путем связывания ключевого поля главной (роди-


тельской) таблицы с соответствующим ему полем подчиненной (дочерней) таб-
лицы. Зачастую эти поля в таблицах имеют одинаковые имена, но в общем слу-
чае это не обязательно.
Обязательными для создания связей являются следующие требования.
1. В одной или в обеих таблицах должно быть поле, содержащее уникальные
(не имеющие повторений) значения во всех записях, это и есть первичный ключ.
2. Связываемые поля должны иметь одинаковые типы данных, кроме ис-
ключений из этого правила:
– поле Счётчик (Код) разрешается связывать с числовым полем, если в чи-
словом поле в свойстве Размер поля задано значение Длинное целое;
– поле Счётчик разрешается связывать с числовым полем, если для обоих
полей в свойстве Размер поля задано значение Код репликации.
3. Связываемые поля числового типа должны иметь одинаковые значения
свойства Размер поля.
4. Для полей, содержащих данные типа OLE и MEMO, первичный ключ
назначить невозможно.
Для отображения, корректировки и удаления связей между табли-
цами в Access существует Схема данных, которая вызывается коман-
дой Работа с базами данных  Схема данных.
Схема данных в Access является не только средством графического ото-
бражения логической структуры БД, она активно используется системой в про-
цессе работы с БД.
Последовательность установки связей между таблицами БД:
1. Закрыть все таблицы в БД и выполнить команду Работа с базами дан-
ных  Схема данных.
2. Выделить одну из таблиц, например Анкеты и щелкнуть по пиктограмме

, будет открыто окно для добавления таблиц при создании схемы дан-
ных. Нажимая на кнопку Добавить, надо поочередно вынести на поле Схема
данных все таблицы БД, после чего нажать кнопку Закрыть.

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


лицами, а и с запросами, которые на выходе формируют новые таблицы (созда-
ние запросов будет рассмотрено в лекции 5).
В поле Схема данных появятся пять таблиц БД, причем три из них –
Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ 63

Должности, Доплаты и Сотрудники – уже связаны посредством созданных


нами ранее в таблице Сотрудники полей подстановок.
Осталось связать остальные таблицы.
3. Для связывания таблиц Надбавки (главная таблица) и Сотрудники (под-
чиненная таблица) надо левой кнопкой мыши выделить в таблице Доплаты поле
Код и переместить (перетащить) указатель мыши на поле КодНадбавкиЗаСтаж
таблицы Сотрудники, после чего отпустить левую кнопку мыши. При этом поя-
вится окно Изменение связей, в котором обязательно надо включить опции
Обеспечение целостности данных, а также каскадное обновление связанных
полей и каскадное удаление связанных полей. Осталось нажать кнопку Создать.

После этого в окне Схема данных появится связь, на одном конце которой будет
стоять единица, а на другом конце – знак : связь вида ОДИН-КО-МНОГИМ.
4. Для создания связи между таблицами Сотрудники и Анкеты надо вы-
полнить те же действия, но, в отличие от предыдущих, здесь будет создана
связь вида ОДИН-К-ОДНОМУ (см. п. 2 в лекции 2).
После этого Схема связей для рассматриваемого примера приобретет вид:
64 Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ

Если открыть любую из связанных в этом пункте таблиц, например Над-


бавки, то теперь в ней появились символы , щелчок по которым раскроет
строки (записи) из подчиненной таблицы (в данном примере показаны записи
со сведениями о сотрудниках, имеющих стаж работы от 1 года до 3-х лет).
Таким образом, ярко продемонстрирована созданная связь вида ОДИН-
КО-МНОГИМ: каждая строка в таблице Надбавки является уникальной, в то
время как в таблице Сотрудники несколько записей содержат одинаковые зна-
чения с кодом стажа работы сотрудника.

Зачастую разработчику базы данных приходится изменять имена ключе-


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

Вопросы для самопроверки


1. Назовите и охарактеризуйте все основные объекты Access.
2. Для чего предназначены шаблоны БД Access и что они собой представ-
ляют?
3. Как можно задавать типы данных полей таблицы БД?
4. Охарактеризуйте типы данных, доступные в режиме Конструктор?
5. Какие типы данных полей предназначены для хранения текстовой ин-
формации? В чем их отличие?
6. Как воспринимает система логический тип данных? Какой формат и ка-
кое значение задается по умолчанию для логического типа?
7. В чем заключается специфика использования типа данных Счетчик?
Можно ли изменять значения поля с типом Счётчик? Для каких полей
целесообразно использовать именно этот тип данных?
8. Какой из типов данных используется для хранения изображений? Каким
образом заполняются такие поля данными?
Лекция 4. СУБД ACCESS. ОСОБЕННОСТИ СОЗДАНИЯ ТАБЛИЦ 65

9. Из каких структурных элементов состоит окно конструктора таблиц в


Access, какое их основное назначение? Перечислите возможности кон-
структора при построении таблиц.
10. Как можно добавить новое поле в таблицу? Можно ли изменять порядок
расположения полей в таблице? Если да, то каким образом?
11. Для чего необходимо устанавливать первичный ключ в таблице? Каким
образом можно это сделать? Каким типам полей нельзя установить пер-
вичный ключ? Можно ли полю с типом данных Текстовый назначать
первичный ключ?
12. Какие объекты БД могут быть основой для создания полей подстановки
(выпадающих списков с возможными значениями) в таблицах Access?
13. Как можно увидеть схему связей между таблицами БД? Каким образом
создаются связи между таблицами? Между какими полями таблиц уста-
навливается связь? Какое обязательное условие при установлении связи?
Как можно удалить имеющуюся связь между таблицами?
14. Что обозначает символ в таблице, открытой в режиме Таблица?
15. Что обозначает символ на линии связи между таблицами в схеме свя-
зей?
66

Лекция 5. ACCESS. Создание запросов

1. Способы формирования запросов.


2. Создание простого запроса с помощью Конструктора.
3. Создание простого запроса с помощью Мастера.
4. Создание вычисляемых полей.
5. Типы запросов в Access 2010.

1. Способы формирования запросов


Одно из основных достоинств реляционных баз данных – быстрый поиск
хранящейся в ней информации, наиболее мощным средством для этого являют-
ся запросы. Они позволяют выбирать данные из одной или нескольких взаимо-
связанных таблиц БД, производить над ними вычисления и получать результа-
ты в виде таблиц.
В Access существуют следующие способы формирования запросов:
1) с помощью Конструктора, 2) с помощью Мастера и 3) представление за-
проса на языке SQL. Для выбора способа формирования запросов – Мастера
или Конструктора – в Access 2010 надо на вкладке Создание выбрать соответ-
ствующую пиктограмму в группе Запросы.

Уже существующий запрос в Access можно открыть


одним из пяти режимов представления запросов: Режим
таблицы, Сводная таблица, Сводная диаграмма, Ре-
жим SQL, Конструктор. Выбрать тот или иной режим
открытия можно из контекстного меню или воспользо-
вавшись на панели Конструктор в группе Результаты
командой Режим.
2. Создание простого запроса с помощью Конструктора
Конструктор запросов является простым и наглядным средством соз-
дания достаточно сложных запросов. Бланк запроса в этом режиме со-
стоит из двух областей. В верхней отображается структура таблиц, к
которым запрос адресован, а нижняя область разбита на столбцы – по одному
столбцу на каждое поле будущей результи-
рующей таблицы (см. рис. 5.1).
Для добавления одной или нескольких
таблиц в бланк запроса надо воспользоваться
командой контекстного меню Добавить таб-
лицу и с помощью кнопки Добавить выбрать
необходимые для создания запроса таблицы,
после чего нажать кнопку Закрыть.
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 67

Для каждого отобранного в запросе поля в Конструкторе надо обязатель-


но указать имя таблицы и имя выбираемого из нее поля (первые две строки в
нижней области бланка запроса Конструктора). Добавлять новые поля в бланк
запроса можно с помощью двойного щелчка по именам полей, перетаскиванием
или выбором их из списка имен, раскрыв его с помощью . Причем, для вы-
числяемых полей имя таблицы не указывается. А для быстрого добавления всех
полей таблицы, надо дважды щелкнуть звездочку (*) в верхней части списка
полей таблицы.
Необязательными для заполнения, но целесообразными для конструирова-
ния запросов, являются следующие три параметра (строки в нижней области
конструктора): Сортировка, Условие отбора и Вывод на экран (рис. 5.1).
Строка Сортировка позволяет упорядочивать для удобства отбираемые в
запросе данные, например, в алфавитном порядке фамилий сотрудников или в
порядке убывания значений их окладов.
Строка Вывод на экран содержит флажки , отвечающие за включение
полей в набор запроса. По умолчанию в набор записей включаются все поля,
присутствующие в бланке запроса. Если снять эту пометку, тогда данные этого
поля будут обрабатываться в запросе, но на экран выводиться не будут.

Рисунок 5.1  Окно Конструктора запросов с примером заполнения бланка запроса


Условие отбора можно задавать в одном или в нескольких полях бланка за-
проса. Условие отбора может быть как простым, так и сложным выражением,
как набранным с клавиатуры, так и сконструированным при помощи конструкто-
ра выражений, который открывается командой Построить из контекстного меню.
В условиях отбора могут использоваться:
– операторы сравнения: >, <, >=, <=, =, <> (не равно), BETWEEN (диапазон),
IN (множество значений), LIKE (шаблон подобия, в котором могут ис-
пользоваться в качестве маски * и ?);
– логические операторы: AND, OR, NOT;
– арифметические операторы: +, –, *, /, \ (деление нацело), ^ (возведение в
степень) и MOD (остаток от целочисленного деления);
68 Лекция 5. ACCESS. СОЗДАНИЕ ЗАПРОСОВ

– строковый оператор конкатенации (слияния) строк – &;


– константы: Истина, Ложь, "" (пустая строка), NULL (незаполненная
ячейка);
– встроенные функции Access, например, функция Date() возвращает те-
кущую системную дату.
При формировании выражений имена полей заключаются в [].
В приведенной ниже таблице представлены некоторые примеры условий, а
также результаты их применения.
Условие Результат
> 234 Возвращает все числа больше 234
>= "Одесса" Возвращает все записи от "Одесса" и до конца алфавита
#02.02.2014# Находит все записи за 2 февраля 2014 г.
< Date() – 30 Возвращает записи, от даты которых прошло более 30 дней.
Сравнение осуществляется с текущей системной датой
BETWEEN Возвращает даты между 21.12.2014 и 12.01.2015
#21.12.2014# AND
#12.01.2015#
NOT "Германия" Находит все записи, в которых содержимое поля
не соответствует значению "Германия", т. е. будут найдены
записи, содержащие любой текст, кроме "Германия",
например, "Чехия" или "Европа (Германия)"
NOT "*т" Находит записи, которые не оканчиваются на букву "т".
IN("Канада", Находит записи, содержащие одно из значений,
"США", "Китай",) указанных в списке
LIKE "Т*" Находит все записи, начинающиеся с буквы "Т"
LIKE "*ар*" Находит записи, содержащие сочетание букв "ар"
LIKE "Григорий Находит записи, начинающиеся с имени "Григорий" и
Черн??" с фамилией из 6 букв, из которых первые 4 буквы известны,
а последние две буквы – нет (на это указывают вопроситель-
ные знаки). Например, фамилии "Черный" или "Черняк"
LIKE "[А-Г]*" Находит в поле с типом данных Текстовый записи,
начинающиеся с букв "А-Г"
BETWEEN Date() Возвращает все записи с датой, которая находится между
AND DateAdd текущей датой и датой, которая на 3 месяца позже текущей
("M", 3, Date( ))
IS NOT NULL Возвращает записи, содержащие непустое (заполненное)
значение
Возвращает записи, содержащие строку (тип Текстовый)
"" нулевой длины. Такие строки обычно используются, когда
поле обязательно для заполнения, но значение еще неизвестно
"" OR IS NULL Возвращает записи, содержащие пустые или незаполненные
значения
LEN([Страна])>10 Возвращает записи, соответствующие заданной длине на-
звания страны, – более 10 символов
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 69

Для приведенного на рис. 5.1 примера формирования запроса целесообраз-


но установить более корректную связь между таблицами без ключевого поля.
Следует напомнить, что таблица Должности имеет связь с файлом в Excel, по
этой причине ключевое поле в таблице не создаётся. Связь таблицы Сотрудни-
ки с таблицей Должности не показывает отношение ОДИН-КО-МНОГИМ.
Чтобы запрос работал корректно, надо изменить связь, выделив линию связи
между таблицами и щёлкнув дважды по ней. Это приведет к открытию диало-
гового окна Параметры объединения, в котором надо поставить пометку в
строке и нажать кнопку ОК.

Для выполнения запроса используется команда ! Выполнить, которая


находится на вкладке Конструктор в группе Результаты. Результат выполне-
ния запроса отображается в режиме Таблица (рис. 5.2).

Рисунок 5.2  Результат выполнения запроса с выборкой данных


Чтобы вернуться в режим Конструктор, надо воспользоваться соответст-
вующей командой Режим  Конструктор (левее команды ! Выполнить).
В этом запросе помимо выбранных из разных таблиц полей сформировано
еще два вычисляемых поля Доплата и Начислено, но специфика формирования
таких полей будет рассмотрена далее в п. 4 на с. 73.
Осталось присвоить имя запросу. Проще всего это сделать, нажав в правом
верхнем углу , а в появившемся сообщении с предложением сохранить изме-
нения макета запроса, нажав на кнопку Да, затем в диалоговом окне присвоив
имя запросу – Оклады и доплаты. После этого в области объектов БД в разделе
Запросы появится новая запись , дважды щёлкнув по кото-
рой будет открыт запрос в режиме Таблица с выборкой данных из трёх таблиц
(см. рис. 5.2).
70 Лекция 5. ACCESS. СОЗДАНИЕ ЗАПРОСОВ

Если открыть этот запрос в режиме SQL командой Режим  Режим SQL
запрос приобретет вид:

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


но и создавать новые "с нуля". Для создания такого запроса надо выполнить
команду Создание – Конструктор запросов, отказаться от добавления таблиц в
бланк конструктора запроса, нажав кнопку Закрыть, и перейти в режим SQL
командой Режим – Режим SQL. В окне конструирования запроса дописать по-
сле слова SELECT весь текст запроса. Например, для определения среднего ок-
лада всех сотрудников запрос может быть таким:
SELECT AVG (Оклад) AS СреднийОклад FROM Должности;
SQL-запрос для определения количество сотрудников в каждом из отделов:
SELECT Отдел, Count(КодСотрудника) AS КоличествоСотрудниковВОтделе
FROM Сотрудники GROUP BY Отдел;

SQL-запрос для выборки из двух взаимосвязанных таблиц фамилий и окла-


дов сотрудников, проработавших на предприятии менее пяти лет:
SELECT Фамилия, ДатаПоступления, Оклад FROM Сотрудники, Должности
WHERE Должности.Должность = Сотрудники.Должность
AND Abs(Date() – ДатаПоступления)/365.25 < 5;

Режимы отображения запросов Сводная таблица и Сводная диаграмма


будут рассмотрены в п. 5 (см. с. 81).
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 71

3. Создание простого запроса с помощью Мастера


Мастер запросов позволяет последовательно формировать бланк за-
проса, используя готовые шаблоны. Кроме того, появляется возможность соз-
давать выражения без использования построителя, что очень удобно. При от-
крытии Мастера запросов открывается окно Новый запрос, в котором можно
выбрать один из четырёх вариантов создания запросов: Простой запрос, Пере-
крёстный запрос, Повторяющиеся записи и Записи без подчинённых.
Рассмотрим специфику работы с Мастером при создании простого запро-
са на выборку данных со значениями суммарных выплат окладов по каждому
отделу и определением количества сотрудников в каждом из них. Для создания
такого запроса в помощью Мастера следует выполнить следующие действия.
1) На вкладке Создание в группе Запросы выполнить команду Мастер за-
просов, выбрать тип Простой запрос и нажать кнопку ОК.
2) В открывшемся окне Создание простых запросов выбрать таблицу Со-
трудники, из которой с помощью стрелки перенести в правое окно поле
Отдел. После этого выбрать таблицу Должности, из которой перенести в пра-
вое окно два поля Должность и Оклад. Нажать кнопку Далее.

3) На следующем шаге надо включить опцию итоговый отчет и нажать


кнопку Итоги.
4) В следующем окне Итоги надо поставить пометки напротив Sum и в по-
ле Подсчёт числа записей в Должности, после чего нажать кнопку ОК.
72 Лекция 5. ACCESS. СОЗДАНИЕ ЗАПРОСОВ

5) Оставшиеся шаги особо не требуют комментариев. Имя этого запроса –


Суммарные выплаты по отделам.

В результате выполнения этого запроса будет сформирована таблица, в


которой поле Sum-Оклад будет содержать суммарные значения окладов всех
сотрудников на той или иной должности, а в поле Count-Должности – суммар-
ные количества сотрудников на каждой должности.
Если же переключиться в режим Конструктор, можно увидеть этот запрос
в таком виде:

При желании, можно переключиться в режим SQL и увидеть, как этот за-
прос будет выглядеть в виде оператора SELECT.

4. Создание вычисляемых полей


Обычно таблицы БД не используются для хранения вычисляемых значе-
ний, поскольку это может противоречить хранимым данным и тем самым на-
рушать целостность данных. Например, не имеет смысла создавать поле Воз-
раст в таблице, поскольку придется обновлять это значение каждый год; вме-
сто этого можно хранить дату рождения, а затем использовать запрос для вы-
числения возраста. Также при создании БД Сотрудники организации надо учи-
тывать то, что надбавка за стаж должна периодически или автоматически кор-
ректироваться в связи с увеличением рабочего стажа сотрудников.
Вычисляемые поля удобно организовывать по мере необходимости в за-
просах. Например, в БД Сотрудники организации, чтобы узнать суммарное
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 73

значение ежемесячной зарплаты сотрудника, надо для каждого сотрудника (по-


ле Фамилия находится в таблице Сотрудники) просуммировать: 1) значение
оклада (поле Оклад в таблице Должности); 2) надбавку за стаж (поле Надбавка
в таблице Надбавки) и 3) значение доплаты, вычисленное по индивидуальному
коду доплаты (поле КодДоплаты в таблице Сотрудники) согласно коэффици-
енту (поле Коэффициент в таблице Доплаты) от размера оклада. Последова-
тельность создания такого запроса может быть такой.
1. На вкладке Создание нажать кнопку Конструктор запросов.
2. Добавить в бланк таблицы Сотрудники, Должности, Надбавки, Доплаты.
3. По очереди выбрать в бланк запроса такие поля из этих таблиц:
– поле Фамилия из таблицы Сотрудники;
– поле Оклад из таблицы Должности;
– поле Надбавка из таблицы Надбавки.
4. В четвертом поле в строке бланка запроса Поле ввести выражение:
Доплата: [Оклад] * [Коэффициент]
5. В пятом поле (столбце) в строке Поле ввести выражение:
Начислено: [Оклад] + [Доплата] + [Надбавка]

6. Перейти в режим Таблица и убедиться в правильности работы двух соз-


данных вычисляемых полей.

7. Закрыть запрос и сохранить его с именем Зарплата (с надбавками).


74 Лекция 5. ACCESS. СОЗДАНИЕ ЗАПРОСОВ

Для упрощения создания такого запроса можно воспользоваться построи-


телем выражений, и тогда последовательность действий будет такой.
1. На вкладке Создание нажать кнопку Конструктор запросов.
2. Добавить на бланк таблицу Сотрудники.
3. Двойным щелчком по полю Фамилия внести это поле в бланк запроса.
4. Навести курсор мыши на первую ячейку второго (пока что пустого)
столбца в бланке запроса, нажать правой кнопкой мыши и выбрать команду
контекстного меню Построить.
5. В открывшемся диалоговом окне Построитель выражений в поле Эле-
менты выражений щелкнуть по названию БД, выбрать Таблицы – Должности.
В поле Категории выражений дважды щелкнуть по полю Оклад, что приведет
к появлению записи [Должности]![Оклад] в построителе выражений.
6. Далее в построителе выражений ввести знак "+" и выбрать поле Надбав-
ка в таблице Надбавки. После этого подобным образом добавить еще два поля в
построитель выражения, чтобы получилось такое выражение:
[Должности]![Оклад] + [Надбавки]![Надбавка] +
[Доплаты]![Коэффициент] * [Должности]![Оклад]

Нажать кнопку ОК.


7. Переименовать созданное вычисляемое поле, вписав вместо имени Вы-
ражение1 слово Начислено.
8. Перейти в режим Таблица и убедиться в правильности работы созданно-
го вычисляемого поля. Закрыть запрос и сохранить его с нужным именем.
При таком создании вычисляемого поля нет необходимости выносить на
бланк запроса большое количество полей, участвующих в вычислениях, и ис-
ключаются ошибки, возможные при "ручном" вписывании имен таблиц и полей.
5. Типы запросов в Access 2010
Созданные ранее запросы являются запросами на выборку, так как они от-
бирают данные по заданным критериям из разных таблиц. Но запросы – это
очень гибкий инструмент, позволяющий также добавлять, изменять или уда-
лять данные в таблицах. В Access 2010 существует много типов запросов (Пе-
рекрестный, Создание таблицы, Добавление, Обновление, Удаление, Объедине-
ние и др.), и каждый тип создается с учетом конкретной задачи.
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 75

Выбрать тот или иной тип запроса можно на вкладке Конструктор в груп-
пе Тип запроса.

Создание перекрёстного запроса


Перекрестные запросы – это запросы, в которых происходит статистиче-
ская обработка данных, результаты которой выводятся в виде таблицы, очень
похожей на сводную таблицу Excel. С помощью перекрестного запроса можно
более наглядно представлять данные итоговых запросов, предусматривающих
группировку по нескольким признакам: при этом значение полей по первому
признаку группировки могут стать заголовками строк, а по второму – заголов-
ками столбцов. В ячейках перекрёстного запроса будут отображаться данные,
вычисленные с помощью одной из итоговых операций: Sum – сумма, Avg –
среднее, Count – количество, Max – максимальное значение, Min – минимальное
значение. Результаты перекрёстного запроса легко экспортировать в Excel, ис-
пользовать для создания демонстрационных диаграмм.
Рассмотрим на конкретном примере технологию создания перекрёстного
запроса. Предположим, что необходимо подготовить доклад, в который целесо-
образно включить иллюстративный материал о распределении количества со-
трудников, получающих надбавки, в зависимости от стажа работы. Как было
указано выше, перекрестные запросы целесообразно строить на базе таблиц, в
которых выполнялись групповые операции. В рассматриваемой БД Сотрудни-
ки организации был создан запрос Суммарные выплаты по отделам, который
может быть использован для решения, поставленной задачи, так как в нём
включены данные из различных таблиц и выполняется групповая операция
суммирования.
1) Создать новый запрос с помощью Мастера и выбрать тип Перекрёст-
ный запрос.
2) В открывшемся диалоговом окне Создание перекрёстных таблиц вы-
брать запрос Суммарные выплаты по отделам и нажать кнопку Далее.
3) В следующих диалоговых окнах следует:
– выбрать имя поля Отдел, значения которого будут отображаться в стро-
ках перекрёстного запроса, нажать кнопку Далее;
– выбрать имя поля Должность для наименований столбцов таблицы и
нажать кнопку Далее;
– выбрать из списков поле Sum-Оклад и функцию Сумма для вычисления
суммарных значений в ячейках на пересечении строк и столбцов, поставить
флажок Да в окне вопроса Вычислить итоговое значение для каждой строки,
нажать кнопку Далее;
76 Лекция 5. ACCESS. СОЗДАНИЕ ЗАПРОСОВ

– задать имя запроса – Суммарные выплаты по отделам перекрестный и


нажать кнопку Готово.
Результаты этого перекрестного запроса будут отражать распределение
окладов по категориям должностей и отделам:

Создание запроса на выборку с параметром


Запрос с параметром запрашивает у пользователя значение одного или
нескольких полей, которые затем используются в качестве условия на выборку
данных. Последовательность создания запроса с параметром рассмотрим на
примере запроса на выборку сотрудников из определенного отдела.
1) Создать новый запрос в режиме Конструктор.
2) Добавить таблицу Сотрудники и выбрать из нее в бланк запроса два по-
ля: Фамилия и Отдел.
3) В строке Условие отбора поля Отдел ввести текст:
[Из какого отдела?]
Введенный текст в квадратных скобках является предложением ввести па-
раметр отбора данных.
4) На вкладке Конструктор в группе Результаты нажать кнопку Выпол-
нить. Запрос предложит ввести название отдела, например бухгалтерия:
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 77

После нажатия кнопки ОК система отобразит таблицу с фамилиями со-


трудников из указанного отдела.
Примечание. В тексте для параметра нельзя использовать точку (.) или
восклицательный знак (!), но можно использовать подстановочный знак (*), ес-
ли часть символов значения неизвестна?
5) Вернуться в режим Конструктор этого запроса и изменить текст усло-
вия отбора на такой:
LIKE [Из какого отдела?] & "*"
Такой параметр позволит корректно выводить запрашиваемые данные да-
же, если будет введено только несколько начальных букв из названия отдела.
6) Осталось убедиться в правильности работы запроса, закрыть и сохра-
нить его с именем, например таким: Запрос с параметром.

Запрос на обновление записей


Запрос на обновление позволяет вносить общие изменения в группу запи-
сей одной или нескольких взаимосвязанных таблиц. Запрос на обновление не-
возможно отменить. Возможно, перед обновлением следует создать резервные
копии всех таблиц, которые будут обновлены запросом на обновление.
Рассмотрим специфику работы с запросом на обновление при создании за-
проса для увеличения премии на 10 % (с 20 % до 30 % от размера оклада) с пе-
ресчётом во всех таблицах и запросах. В нашей БД кроме таблицы Доплаты
значение премии фигурирует в полях запросов Оклады и доплаты и Зарплата
(с надбавками). Таким образом, запрос на обновление должен увеличить коэф-
фициент начисления премии с 0,2 до 0,3 в таблице Доплаты и в обоих запросах.
1) Создать новый запрос в режиме Конструктор, включив в него поля,
подлежащие обновлению, и поля необходимые для задания условий отбора. В
рассматриваемом примере надо из таблицы Доплаты перенести в бланк запроса
поля ВидДоплаты и Коэффициент.
2) Выбрать на панели Конструктор в группе Тип запроса команду
Обновление (или найти эту команду в контекстном меню). После этого в
бланке запроса появится новая строка Обновление. Для заполнения бланка за-
проса надо в строке Обновление для поля Коэффициент ввести формулу:
[Коэффициент] + 0,1
В строке Условие отбора для поля ВидДоплаты надо ввести значение Премия.
Закрыть запрос и задать его имя Премия30%.
78 Лекция 5. ACCESS. СОЗДАНИЕ ЗАПРОСОВ

3) После этого в поле переходов базы данных появится запрос


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

Запрос на удаление записей


Запрос на удаление позволяет удалить группу записей на основании ука-
занных критериев из одной или нескольких таблиц. При этом удаляется вся за-
пись, а не отдельные поля внутри неё. Такого рода действия довольно часто
приходится проводить пользователю БД без участия её администратора, поэто-
му критерии удаления можно либо жёстко задавать в запросе, либо вводить с
помощью диалогового окна. Например, можно удалить строки, содержащие
пустые ячейки определенного поля (IS NULL), или же при увольнении сотруд-
ника организации надо удалить записи об этом сотруднике из БД. Последова-
тельность действий для создания этого запроса может быть такой.
1) Создать новый запрос в режиме Конструктор. Добавить в него таблицу
Сотрудники, из которой в бланк запроса внести только одно поле Фамилия.
2) Выбрать на панели Конструктор в группе Тип запроса команду
Удаление (или найти эту команду в контекстном меню). После этого в
бланке запроса появится новая строка Удаление.
3) В строке Условие отбора надо для поля Фамилия ввести в квадратных
скобках текст сообщения, которое будет выводиться при выполнении запроса:
[Введите фамилию сотрудника, которого надо удалить из БД]

4) Закрыть запрос и задать его имя: УдалениеСотрудника.


Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 79

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

После ввода фамилии и нажатия кнопки ОК система сформирует преду-


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

Запрос на создание таблицы


Запрос на создание таблицы можно использовать для создания новой
таблицы на основе данных, хранящихся в других таблицах, включая вычисляе-
мые поля, отобрав их по какому-то критерию из одной или нескольких таблиц.
В дальнейшем сформированные таким образом таблицы можно экспортировать
в другие системы, например, для отчетности предприятий.
Рассмотрим специфику создания запроса на создание таблицы в БД Со-
трудники организации на примере формирования таблицы с фамилиями и воз-
растом сотрудников из отдела продаж.
1. Создать новый запрос в режиме Конструктор.
2. Добавить на бланк запроса таблицы Сотрудники и Анкеты.
3. Выбрать из этих таблиц поля в такой последовательности:
– поле Фамилия из таблицы Сотрудники;
– поле Отдел из таблицы Сотрудники;
80 Лекция 5. ACCESS. СОЗДАНИЕ ЗАПРОСОВ

– поле ДатаРождения из таблицы Анкеты.


4. Задать параметры отбора данных для этих трех полей:
– для поля Фамилия задать сортировку по возрастанию;
– для поля Отдел в строке Условие отбора ввести текст: "Отдел продаж".
5. В четвертом поле (столбце) в строке Поле ввести такое выражение:
Возраст: (Date() – [ДатаРождения]) / 365,25
6. Удерживая курсор над полем Возраст, нажать правую кнопку мыши и
выполнить команду контекстного меню Свойства. Это приведет к открытию
диалогового окна Окно свойств, в котором для свойства Формат поля выбрать
значение Фиксированный, а для свойства Число десятичных знаков – значение 1.
7. Прежде чем использовать данные для создания таблицы, целесообразно
убедиться в правильности их отбора, переключившись в режим Таблица или
нажав кнопку Выполнить на вкладке Конструктор в группе Результаты.
8. Нажать клавиши [Ctrl] + [S], чтобы сохранить запрос, и ввести имя со-
храняемого запроса Возраст сотрудников из отдела продаж.
9. Вернуть запрос в режим Конструктор и для поля Отдел в строке Вывод
на экран снять пометку.

10. Выполнить команду Создание таблицы на вкладке Конструктор в


группе Тип запроса. В открывшемся диалоговом окне Создание таблицы в поле
Имя таблицы ввести Сотрудники отдела продаж и нажать кнопку ОК.
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 81

11. На вкладке Конструктор в группе Результаты нажать кнопку Выпол-


нить. В диалоговом окне подтверждения нажать кнопку Да, после чего в облас-
ти навигации отобразится новая таблица.

Примечание. Если таблица с указанным именем уже существует, она уда-


ляется перед выполнением запроса.

Запрос на добавление данных


Запрос на добавление можно использовать для извлечения данных из од-
ной или нескольких таблиц и добавления их в другую таблицу.
Рассмотрим специфику создания запроса на добавление данных на приме-
ре добавления в таблицу Сотрудники отдела продаж еще и данных о сотруд-
никах с отдела разработок.
1. Открыть запрос Возраст сотрудников из отдела продаж в конструкторе.
2. На вкладке Конструктор в группе Тип запроса выбрать команду Добав-
ление. В открывшемся диалоговом окне Добавление щелкнуть стрелку в поле
Имя таблицы и выбрать из списка Сотрудники отдела продаж, нажать ОК.
3. В бланке запроса в строке Условие отбора поля Отдел удалить значение
"Отдел продаж" и ввести "Отдел разработок".
4. На вкладке Конструктор в группе Результаты нажать кнопку Выпол-
нить. При этом система сформирует сообщение о количестве добавленных в
таблицу записей и запросом на подтверждение добавления этих записей.

Режимы отображения запросов Сводная таблица и Сводная диаграмма


Сводная таблица – это интерактивная таблица, которая позволяет анали-
зировать по различным показателям большие объемы данных. Используют
сводные таблицы для анализа связанных итогов, особенно, если при наличии
длинных списков показателей для суммирования надо сравнивать несколько
фактов о каждом из них. Поскольку сводные таблицы интерактивны, можно
легко и быстро менять фильтры, итоги и уровни детализации, чтобы по-разному
анализировать данные. В сводных таблицах можно менять местами строки и
столбцы, чтобы в более удобном виде просматривать различные сводки.
При добавлении полей в сетку запроса в процессе создания сводной табли-
цы целесообразно включать следующие компоненты:
– поля с данными, для которых необходимо предоставить сводку (напри-
мер, количество денег или другие числовые данные);
– поля, по которым необходимо сравнивать данные (например, Сотрудни-
ки, Регионы или Даты).
Если планируется подсчитать количество элементов в сводной таблице,
следует включить уникальное поле идентификатора для подсчитываемых эле-
82 Лекция 5. ACCESS. СОЗДАНИЕ ЗАПРОСОВ

ментов. Например, чтобы подсчитать количество накладных, запрос должен


включать идентификатор таблицы накладных.
Рассмотрим специфику создания запроса в режиме Сводная таблица для
анализа распределения денежных средств оплаты труда по разным отделам и
должностям сотрудников с возможностью анализа по уровням образования с
помощью фильтрования.
1. Создать новый запрос в режиме Конструктор.
2. Добавить на бланк запроса таблицы Сотрудники, Анкеты и запрос Зар-
плата (с надбавками).
Примечание. Для режимов Сводная таблица и Сводная диаграмма можно
использовать не только таблицы, но и существующие запросы.
3. Установить связь между полем Фамилия в таблице Сотрудники и полем
Фамилия в запросе Зарплата (с надбавками). Эта связь обеспечит уникальность
выбираемых числовых значений (без повторов).
4. Выбрать на бланк запроса поля в такой последовательности:
– поля Отдел, Должность и Фамилии из таблицы Сотрудники;
– поле Образование из таблицы Анкеты;
– поля Оклад, Надбавка и Доплата из запроса Зарплата (с надбавками).

5. На вкладке Главная в группе Режимы выбрать режим Сводная таблица.


При этом отобразится пустой режим Сводная таблица без полей или данных.
6. Нажать клавиши [Ctrl] + [S], чтобы сохранить запрос, и ввести имя со-
храняемого запроса Сводная таблица с диаграммой.
7. Для добавления полей в заголовки строк и столбцов в режиме Сводная
таблица, а также в качестве фильтров и анализируемых данных, надо восполь-
зоваться списком полей сводной таблицы. Если список полей не отображается,
надо воспользоваться командой Список полей, которая находится на вкладке
Конструктор в группе Показать или скрыть.
Надо перетащить поле Должность из списка полей в область строк свод-
ной таблицы с пометкой Перетащите сюда поля строк. Можно и по-другому
заполнить поле строк, выбрав поле Должность в перечне полей, и значение
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 83

Строки – в раскрывающемся списке (в ниж-


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

После этого сводная таблица получит вид:

9. Можно добавить несколько полей в область данных, например, кроме


поля Оклад еще поля Надбавка и Доплата.
10. Сводная таблица является очень гибким и настраиваемым объектом,
позволяя в процессе проведения анализа данных удалять и перемещать поля.
Если возникла необходимость удалить некоторое поле из той или иной об-
ласти сводной таблицы, надо выбрать имя этого поля и на вкладке Конструк-
тор в группе Активное поле нажать кнопку Удалить или же нажать клавишу
[Delete]. В результате этого действия удаляется поле из представления, но само
поле остается доступным в базовом источнике данных.
Для перемещения поля надо перетащить его имя в необходимое располо-
жение (перетаскивать надо именно само имя поля (например, Отдел), а не одно
из его значений).
11. Поля фильтров для сводной таблицы необязательны и позволяют от-
фильтровать сводную таблицу по определенным значениям. Например, можно
с помощью фильтра отобрать данные о сотрудниках с высшим образованием.
84 Лекция 5. ACCESS. СОЗДАНИЕ ЗАПРОСОВ

Кроме того, фильтровать данные можно, щелкнув направленную вниз


стрелку возле любого имени поля в области строк или в области столбцов, а
затем установив необходимые флажки, чтобы задать параметры фильтрации.
12. Для более подробного анализа можно добавлять поля в область Дета-
ли. Например, добавление поля Фамилии в область Детали позволит, при жела-
нии, увидеть фамилии всех сотрудников в том или ином отделе. Для этого надо
на вкладке Конструктор в группе Показать или скрыть выполнить команду
С подробностями или же поочередно щелкнуть знаки плюс (+) справа от на-
званий должностей или под названиями отделов.

С помощью команды Без подробностей или знаков минус (–) справа от на-
званий должностей или под названиями отделов можно скрыть детальные поля.
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 85

При сокрытии подробных данных улучшается производительность режима


Сводная таблица.
13. В сводной таблице можно не только проводить анализ и итоги по су-
ществующим полям, но и создавать новые вычисляемые поля подробных све-
дений. Например, для создания вычисляемого поля Зарплата как суммы оклада
и двух надбавок надо на вкладке Конструктор в группе Сервис выполнить ко-
манду Формулы  Создать вычисляемое поле сведений. Это приведет к от-
крытию диалогового окна Свойства, на вкладке Вычисление которого в поле
Имя надо ввести имя вычисляемого поля – Зарплата. В большем поле под по-
лем Имя надо ввести формулу с вычислениями:
Оклад + Доплата + Надбавка
Во время ввода формулы можно использовать раскрывающийся список и
кнопку Добавить ссылку на в нижней части диалогового окна Свойства, чтобы
добавить поля в формулу. В конце нажать кнопку Изменить.

После этого вычисляемое поле Зарплата будет добавлено в список полей и


его можно вынести в область данных, удалив до этого из этой области поле Оклад.

14. Для того чтобы изменить подпись и формат данных того или иного по-
ля, например итогового поля Сумма Зарплата в области данных, надо выде-
лить это поле и выполнить команду Страница свойств, которая находится в
группе Сервис на вкладке Конструктор. Это приведет к открытию диалогового
окна Свойства, на вкладке Заголовки которого можно задать новое имя заго-
ловка поля, а на вкладке Формат выбрать способ сортировки, уточнить число-
вой формат данных поля (общий, денежный, фиксированный и др.), стиль и
86 Лекция 5. ACCESS. СОЗДАНИЕ ЗАПРОСОВ

размер шрифта и многое другое. Не закрывая окно Свойства, можно выбрать из


списка Элемент имена других полей и задать параметры их форматирования.

15. Чтобы отобразить итоги в виде процента от общего итога, надо вы-
брать итоговое поле, а затем на вкладке Конструктор в группе Сервис выпол-
нить команду Форматы  Процент от общего итога.

Режим Сводная диаграмма похож на режим Сводная таблица, но по


умолчанию в режиме Сводная таблица отображаются подробные сведения, а в
режиме Сводная диаграмма – итоговые данные или сводки (обычно в формате
суммы или количества). Кроме того, вместо областей строк и столбцов в режи-
ме Сводная диаграмма отображаются области рядов и категорий. Ряд – это
группа связанных точек данных, которая обычно обозначается в легенде опре-
деленным цветом. Категория состоит из одной точки данных с каждого ряда.
Изменения в макете, которые вносятся в таблицу, запрос или форму в дру-
гих представлениях, не зависят от макета объекта в режиме Сводная таблица
или Сводная диаграмма. Однако изменение в макете, которое вносится в режи-
ме Сводная таблица, например перемещение поля из области строк в область
столбцов, автоматически отражается в режиме Сводная диаграмма, и наоборот.
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 87

Чтобы увидеть сводную диаграмму, надо из режима Сводная таблица пе-


реключиться в режим Сводная диаграмма, выбрав на вкладке Конструктор
или Главная команду Режим  Сводная диаграмма.

Командой Легенда, которая находится в группе Показать или скрыть на


вкладке Конструктор, можно изменить размещение легенды с расшифровками
заливки категорий рядов диаграммы.
Выделыв тот или иной объект и воспользовавшись командой контекстного
меню Свойства (или командой Страница свойств, которая находится в группе
Сервис на вкладке Конструктор), можно изменить форматирование этого объ-
екта диаграммы. Например, можно поменять заливку рядов разных категорий,
увеличить размер шрифта, изменить расположение легенды и др.
С помощью команды Изменить тип диаграммы, которая находится в
группе Тип на вкладке Конструктор, можно изменить тип диаграммы, напри-
мер на гистограмму с накоплением.
Сводной диаграм-
мой можно легко мани-
пулировать для демон-
стрирования различных
наборов аналитических
данных. Например, по-
меняв местами поля
Должность и Образова-
ние сводная таблица по-
меняет вид на такой 

В уже готовую
сводную диаграмму
можно добавлять новые
поля из списка, сформи-
рованного при создании
88 Лекция 5. ACCESS. СОЗДАНИЕ ЗАПРОСОВ

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


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

Чтобы улучшить читаемость сводной диаграммы, рекомендуется


фильтровать, сортировать и группировать данные в ней, точно также как для
сводной таблицы.

Вопросы для самопроверки


1. Для чего предназначены запросы? Какие виды обработки данных вы-
полняют запросы? Как отображаются результаты запроса? В чем сход-
ство и отличие между запросами и таблицами БД?
2. Какие в Access 2010 существуют:
– способы создания запросов?
– режимы представления запросов?
– основные типы запросов?
3. Из каких частей состоит окно Конструктора запросов? Опишите спосо-
бы заполнения полей в бланке запроса.
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 89

4. Чем Мастер построения запросов отличается от Конструктора запро-


сов? Можно ли использовать несколько таблиц БД при создании простого
запроса в Мастере построения запросов? Почему?
5. Объясните использование в условиях отбора операторов /, \ и MOD. Ка-
кие операторы сравнения можно использовать в условии отбора запи-
сей? Приведите примеры условий отбора.
6. Приведите примеры условий отбора в запросах с использованием опера-
тора LIKE. Для чего может использоваться выражение в условии отбора:
IS NULL? Чем оно отличается от выражения IS NOT NULL?
7. Приведите примеры условий отбора в запросах с использованием логи-
ческих операторов AND и OR и логических операторов BETWEEN и IN.
8. С какой целью применяют вычисляемые поля? Как в запросе создать
вычисляемое поле? Приведите пример выражения для создания вычис-
ляемого поля.
9. О чем символизирует текст в квадратных скобках в запросе с парамет-
ром?
10. Для чего применяются групповые операции в запросах? Приведите при-
меры.
11. Как отображаются данные электронной таблицы при создании перекрё-
стного запроса? Назовите пять итоговых операций, доступных при соз-
дании перекрёстного запроса. Можно ли при создании перекрёстного
запроса выбирать данные из нескольких таблиц? Чем это обусловлено?
12. Для каких целей применяются запросы на создание таблиц?
13. Опишите алгоритм создания запроса на обновление. Чем отличаются за-
просы на выборку от запросов на обновление? Как влияют запросы на
обновление и удаление на данные, которые находятся в связанных таб-
лицах и запросах?
14. Что происходит с записями, которые назначаются на удаление и можно
ли их восстановить после выполнения запроса на удаление?
15. Для чего используют режим отображения запросов Сводная таблица?
Охарактеризуйте режим отображения запросов Сводная диаграмма.
90

Лекция 6. ACCESS. Создание форм, отчетов

1. Способы создания форм.


2. Использование Мастера форм.
3. Использование пустой формы.
4. Разработка формы в режиме Конструктор.
5. Создание подчиненных форм.
6. Создание отчетов

1. Способы создания форм


Формы Access позволяют создавать пользовательский интерфейс для таб-
лиц базы данных. Хотя базы данных могут создаваться без применения форм,
путем изменения данных в таблице, большинство пользователей предпочитают
использовать формы для просмотра, ввода и изменения табличных данных. Ес-
ли база данных будет использоваться несколькими пользователями, хорошо
продуманные формы – залог точности данных и эффективности работы с ними.
Формы создаются из набора отдельных элементов управления: текстовых
полей для ввода и редактирования данных, кнопок, флажков, переключателей,
списков, меток полей, а также рамок объектов для отображения графики и объ-
ектов OLE.
Как правило, формы строятся на основе таблиц или запросов, а содержи-
мое форм всегда соответствует информации в таблицах и запросах. Выгодным
достоинством форм является их многофункциональность, они позволяют вы-
полнять задания, которые нельзя выполнить в режиме таблицы. Например,
можно создавать формы, включающие другие формы (форма внутри формы на-
зывается подчиненной). Также формы позволяют производить проверку кор-
ректности данных, содержащихся в таблице. Кроме этого, формы позволяют
организовывать и выводить на экран различного рода вычисления над данными.
Создать форму в базе данных Access можно несколькими способами, кото-
рые предлагаются на вкладке Создание ленты в группе Формы.

Чтобы быстро создать форму, надо выбрать таблицу или запрос в области
навигации и на основе этого объекта быстро создать форму с помощью команды
Форма. Например, открыв запрос Зарплата (с надбавками) и нажав кнопку Фор-
ма, получим быстрое создание формы, которую сохраним с именем Зарплата.
Быстрым и удобным способом создания форм является использование
Мастера форм.
Самостоятельное создание формы осуществляется с помощью Конструк-
тора форм или Пустой формы. В этих случаях разработчик может использо-
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 91

вать элементы управления (кнопки, текстовые окна и другие), подключать мак-


росы или писать программные модули на VBA. При использовании различных
вариантов построения формы, имеется возможность включать в неё поля из
разных таблиц и запросов.
Форма нескольких элементов (также называется ленточной) позволяет
отображать сведения сразу из нескольких записей. Эта форма подобна таблице,
но предоставляет больше возможностей по управлению элементами, например
форматирование текста, добавление графических объектов, кнопок и других
элементов управления. Создается такая форма командой Создание – Другие
формы – Несколько элементов.
Разделенная форма отображает данные в режиме таблицы и представле-
нии формы одновременно. Зачастую сотруднику, который пользуется интер-
фейсом базы данных, выполненного в виде формы, требуются дополнительные
средства для быстрого поиска необходимых сведений, такие как: сортировка
данных по полям, фильтрация данных, тогда на экран можно вывести форму
вместе с исходной таблицей. Создается такая форма командой Создание – Дру-
гие формы – Разделенная форма.
Форма навигации представляет собой форму, содержащую элемент нави-
гации. Формы навигации особенно важны для навигации в базах данных, кото-
рые будут опубликованы в Интернете, поскольку область навигации Access не
отображается в браузере. Различные виды конструирования форм навигации
можно выбрать командой Создание – Навигация.
Формы могут быть выведены на экран в трех режимах: Режим формы,
Режим макета и Конструктор. Для перехода из одного режима в другой ис-
пользуются команды группы Режимы или кнопки-пиктограммы в нижнем пра-
вом углу окна формы .
Режим макета позволяет вносить изменения в форму и при этом данные
можно просматривать, что очень удобно, если необходимо отрегулировать раз-
мер элементов управления или внести другие изменения в структуру, влияю-
щие на внешний вид формы и удобство работы с ней.
Режим Конструктор позволяет вносить изменения, требующие детального
рассмотрения структуры формы, например разделов Верхний колонтитул, Об-
ласть данных и Нижний колонтитул. При внесении изменений в режиме Кон-
структор просматривать базовые данные нельзя. Полезными возможностями
режима Конструктор являются: 1) возможность добавления различных эле-
ментов управления, таких как присоединенные рамки объекта, разрывы стра-
ниц и диаграммы; 2) изменение источников для текстовых полей без использо-
вания окна свойств; 3) изменение размера разделов формы; 4) изменение опре-
деленных свойств формы, которые нельзя изменить в Режиме макета.

2. Использование Мастера форм


В Access на вкладке Создание есть несколько инструментов для быстрого
создания форм, каждый из которых позволяет создать форму одним щелчком
мыши. Однако, если необходимо выбрать поля для отображения на форме,
92 Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ

лучше воспользоваться мастером форм. В мастере также можно определить


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

В Мастере форм можно получить различные результаты в зависимости от


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

3. Использование пустой формы


Разрабатывать форму для добавления в таблицу записей или внесения из-
менений данных удобно на основе пустой формы, проектирование которой на-
чинается щелчком левой кнопкой мыши по пиктограмме Пустая форма на
вкладке Создание.
Предположим, что для внесения изменений и дополнений в таблицу Доп-
латы требуется разработать форму для канцелярии, где будут отслеживать
приказы и вносить необходимые изменения.
1. Нажать кнопку Пустая форма на вкладке Создание.
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 93

2. Перенести из окна Список полей на форму все поля таблицы Надбавки


(порядок переноса полей не важен). Для этого надо поочередно дважды щелк-
нуть по имени каждого поля в списке полей или перетащить их на форму. Что-
бы добавить сразу несколько полей, надо щелкнуть их по очереди, удерживая
нажатой клавишу [Ctrl], и перетащить выбранные поля на форму.
2. Изменить дизайн созданной формы можно разными способами, напри-
мер, открыв вкладку Главная и воспользовавшись панелью Форматирование
текста, выделяя необходимое поле. Другой способ форматирования – восполь-
зоваться режимом Конструктор, для этого надо перейти в этот режим, нажав
кнопку-пиктограмму в нижнем правом углу окна формы. Можно воспользо-
ваться и третьим способом, остаться в режиме Макет (пиктограмма в ниж-
нем правом углу формы) и открыть окно свойств, в котором изменить парамет-
ры формы и элементов на ней.

С помощью инструментов в группе Элементы управления на вкладке Ра-


бота с макетами форм можно добавить на форму эмблему компании, заголо-
вок, номера страниц, дату и время. Если потребуется добавить на форму другие
виды элементов управления, надо открыть вкладку Конструктор и выбрать
нужные элементы в группе Элементы управления.
3. Сохранить форму, задав имя формы Доплаты для канцелярии.
Осталось запустить готовую форму, пролистать в ней виды доплат, доба-
вить новый вид доплат, например "Ученая степень", и посмотреть, как измени-
лась основная таблица Доплаты.

4. Разработка формы в режиме Конструктор


Как правило, режим Конструктор форм используется для усовершенство-
вания внешнего вида формы, созданной с помощью Мастера, но может ис-
пользоваться и при создании формы с нуля. Для запуска Конструктора форм
можно воспользоваться командой Конструктор форм на вкладке Создание
или командой Режимы – Конструктор. Это приведет к открытию окна, со-
держащего заготовку формы.
Структурно формы в этом режиме могут включать такие области.
94 Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ

1) Заголовок формы – область в верхней части формы, в которой можно


располагать информацию, не зависящую от содержания отображаемых записей,
например название организации.
2) Область данных – центральная часть формы, на которую выводятся
данные из таблиц или запросов, пояснительные тексты, элементы управления.
3) Примечание формы – область в нижней части формы, в которую можно
выводить информацию в виде пояснений.
Каждая из областей является автономной, что даёт возможность задавать
им собственный фон и формат представления данных. Ту или иную область
можно скрыть или отобразить с помощью соответствующей команды контекст-
ного меню. Если не требуется иметь на форме области заголовка и примечаний,
их можно удалить, и наоборот, если форма не содержит этих областей, их мож-
но добавить. Для этого щёлкнуть правой кнопкой мыши по области данных на
форме и выбрать в контекстном меню команду Заголовок/примечание фор-
мы.
Для выбора источников записей для формы надо щёлкнуть по пиктограмме
Добавить поля на панели, после чего слева от формы появится окно Список
полей.

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


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

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


таблицу данными только в том случае, если на ней присутствуют поля, контро-
лируемые в таблице источнике.
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 95

5. Создание подчиненных форм


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

Общие сведения о подчиненных формах


Подчиненной называют форму, вставленную в другую форму. Главная
форма называется основной. Комбинацию "форма и подчиненная форма" ино-
гда называют также иерархической формой или комбинацией родительской и
дочерней форм.
Подчиненные формы особенно удобны для отображения данных из таблиц
или запросов со связью ОДИН-КО-МНОГИМ. Например, можно создать форму
со сведениями о доплатах, которая содержит подчиненную форму со сведения-
ми о сотрудниках, получающими этот вид доплаты. Данные в таблице Доплаты
являются в отношении стороной ОДИН, а данные в таблице Сотрудники явля-
ются в отношении стороной МНОГИЕ: каждый вид доплаты может получать
несколько сотрудников.

Основная и подчиненная формы взаимодействуют таким образом, что в


подчиненной выводятся только те записи, которые связаны с текущей записью
в основной. Например, если в основной форме отображаются данные о доплате
в виде премии, то в подчиненной отображаются сотрудники, получающие этот
вид доплаты. Если связь между основной и подчиненной формами была разо-
рвана, то в подчиненной форме будут отображаться все сотрудники, а не только
получающие премию.
96 Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ

Способы создания подчиненных форм


Access 2010 предлагает несколько инструментариев для создания подчи-
ненных форм, каждый из которых имеет свою специфику, и, в зависимости от
конкретной ситуации, можно выбрать наиболее подходящий способ.
1. Создание подчиненной формы с использованием Мастера форм целе-
сообразно использовать, если надо создать основную и подчиненную формы и
связать их.
2. Мастер подчиненных форм позволяет добавлять одну или несколько
подчиненных форм на уже существующую форму.
3. Метод перетаскивания одной существующей формы в другую позво-
ляет довольно быстро создавать подчиненные формы, используя при этом су-
ществующую форму в качестве основной и одну или несколько существующих
форм в качестве подчиненных.

Создание формы, содержащей подчиненную форму,


с использованием Мастера форм
Данный способ позволяет создать новую комбинацию формы и подчинен-
ной формы с помощью Мастера форм. Это также самый быстрый способ на-
чать работу, если еще не были созданы формы, которые планируется использо-
вать в качестве основной или подчиненной формы.
1. На вкладке Создание в группе Формы выбрать команду Мастер форм.
2. На первом шаге Мастера в раскрывающемся списке Таблицы и запросы
выбрать таблицу или запрос. Например, чтобы создать форму Доплаты для
отображения в подчиненной форме списка сотрудников, получающих тот или
иной вид доплаты, выбрать пункт Таблица: Доплаты (сторона ОДИН отноше-
ния ОДИН-КО-МНОГИМ).
3. Дважды щелкнуть по полям таблицы или запроса, которые нужно вклю-
чить в форму.
4. На той же странице Мастера в раскрывающемся списке Таблицы и за-
просы выбрать другую таблицу или запрос. В данном примере выбрать таблицу
Сотрудники (сторона МНОГИЕ отношения ОДИН-КО-МНОГИМ).
5. Дважды щелкнуть по полям таблицы или запроса, которые нужно вклю-
чить в форму, и нажать кнопку Далее.
Если до запуска Мастера связи между выбранными таблицами были уста-
новлены правильно, то после нажатия кнопки должно появиться сообщение
Выберите вид представления данных, т. е. предложение указать таблицу (или
запрос), представляющую сторону ОДИН отношения ОДИН-КО-МНОГИМ.
Если сообщение Выберите вид представления данных не отображается,
это означает, что программе Access не удалось обнаружить отношение ОДИН-
КО-МНОГИМ между выбранными таблицами или запросами. При этом Мас-
тер продолжит свою работу, но на форму не будет добавлена подчиненная
форма. Перед продолжением можно нажать кнопку Отмена и проверить связи
между таблицами.
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 97

В нашем примере надо выбрать таблицу Доплаты, при этом диалоговое


окно Создание форм должно выглядеть следующим образом:

6. Установить в нижней части этого окна переключатель Подчиненные


формы и нажать кнопку Далее.
7. На следующем шаге в сообщении Выберите внешний вид подчиненной
формы надо выбрать ленточный или табличный стиль макета и нажать кнопку
Далее.
В макетах обоих стилей данные подчиненной формы располагаются в виде
строк и столбцов, но ленточный макет имеет больше возможностей настройки.
В ленточной подчиненной форме можно добавлять цвет, изображения и другие
элементы форматирования, однако табличный макет компактнее, как и таблич-
ное представление таблицы.
8. На последнем шаге Мастера ввести заголовки форм, при этом эти имена
автоматически присваиваются формам на основе введенных заголовков.
Кроме этого, в этом же окне надо указать режим, в котором нужно откры-
вать форму: Режим формы, чтобы можно было просмотреть или ввести дан-
ные, или Режим конструктора, чтобы можно было изменить ее структуру. За-
тем нажать кнопку Готово.
Такая последовательность действий создаст две формы: основную Допла-
ты, содержащую подчиненную форму, и отдельно форму Сотрудники подчи-
ненная форма.
98 Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ

Добавление одной или нескольких подчиненных форм в существую-


щую форму с помощью Мастера подчиненных форм
Этот способ удобен при добавлении одной или нескольких подчиненных
форм в существующую форму. При этом для каждой подчиненной формы
можно создать новую форму или использовать существующую.
1. В области навигации выбрать существующую форму, например Допла-
ты, щелкнуть на ней правой кнопкой мыши и выбрать команду Конструктор.
2. На вкладке Конструктор в группе Элементы управления щелкнуть
стрелку вниз, чтобы открыть коллекцию Элементы управления, и убедиться в
том, что установлена опция .
3. На вкладке Конструктор в коллекции Элементы управления нажать
кнопку Подчиненная форма/отчет.

4. В форме щелчком мыши указать место, куда нужно поместить подчи-


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

Создание подчиненной формы путем перетаскивания


одной формы на другую
Это самый быстрый способ создания подчиненной формы и его использу-
ют, если на существующую (основную) форму надо добавить одну или не-
сколько уже существующих форм (таблиц или запросов) в качестве подчинен-
ных. При этом нельзя при создании подчиненной формы выбирать какие имен-
но поля переносить, поскольку переносится форма целиком со всеми ее полями
и форматированием.
1. В области навигации щелкнуть правой кнопкой мыши на основной фор-
ме и выбрать команду Конструктор.
2. Методом буксировки перетащить форму (или таблицу), которую нужно
использовать в качестве подчиненной, из области навигации на основную фор-
му. При этом на основную форму будет добавлен элемент управления подчи-
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 99

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


основной, исходя из связей, установленных в схеме данных БД.
3. При необходимости добавления и других подчиненных форм на основ-
ную форму надо повторить предыдущий шаг.
4. Чтобы проверить, успешно ли была создана связь, надо на вкладке Глав-
ная в группе Режимы нажать кнопку Режим, выбрать команду Режим формы
и с помощью селектора записей основной формы просмотреть несколько запи-
сей. Если в подчиненной форме правильно отображаются данные для каждого
вида доплаты, это означает, что процедура завершена успешно.
Если проверка не работает, это означает, что программе Access не удалось
создать связь подчиненной формы с основной, и свойства Подчиненные поля и
Основные поля элемента управления подчиненной формы остались не задан-
ными. Тогда надо задать значения для этих свойств вручную, выполнив указан-
ные ниже действия.
1. В области навигации щелкнуть на основной форме правой кнопкой мы-
ши и выбрать команду Режим макета.
2. Щелкнуть на элементе управления подчиненной формы один раз, чтобы
выделить его. Если Окно свойств не отображается, нажать клавишу [F4].
3. В окне свойств открыть вкладку Данные и нажать кнопку Построить
справа от свойства Подчиненные поля.
Будет открыто диалоговое окно Связь с полями подчиненной формы.
4. В раскрывающихся списках Основные поля и Подчиненные поля выбрать
поля, с помощью которых нужно связать формы, и нажать кнопку ОК. Если не-
известно, какие поля нужно использовать, нажать кнопку Предложить. При
этом будет предпринята попытка автоматически определить связывающие поля.
Если не отображается поле, которое требуется использовать для связыва-
ния форм, придется так отредактировать источник записей основной или под-
чиненной формы, чтобы данное поле в нем присутствовало. Например, если
форма основана на запросе, следует убедиться, что связывающее поле присут-
ствует в результатах запроса.
5. Сохранить основную форму, переключиться в Режим формы и прове-
рить, правильно ли она работает.

Изменение представления по умолчанию для подчиненной формы


При добавлении подчиненной формы на основную форму элемент управ-
ления подчиненной формы (или отчета) отображает подчиненную форму в со-
ответствии с ее свойством Режим по умолчанию. Для этого свойства можно ус-
тановить один из шести режимов: Простая форма, Ленточные формы, Табли-
ца, Сводная таблица, Сводная диаграмма, Разделенная форма.
Чтобы задать значение свойства Режим по умолчанию подчиненной фор-
мы, надо выполнить такие действия.
1. Закрыть все открытые объекты.
2. В области навигации щелкнуть на подчиненной форме правой кнопкой
мыши и выбрать пункт Режим макета.
3. Если окно свойств не отображается, нажать клавишу [F4].
100 Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ

4. Убедиться в том, что в раскрывающемся списке в верхней части окна


свойств выбран пункт Форма.
5. На вкладке Формат окна свойств задать для свойства Режим по умол-
чанию нужное значение. Если нужный режим отсутствует в списке, надо убе-
диться в том, что для свойства Режим установлено значение Да.
6. Сохранить и закрыть подчиненную форму, а затем открыть основную
форму, чтобы проверить результаты.

6. Создание отчетов
Общие сведения
Отчет – это объект базы данных, который используется для отображения и
обобщения данных. Как правило, отчет является конечным продуктом БД,
предназначенным для печати, и при создании отчета можно комбинировать
данные из таблиц, запросов и даже форм.
Отчеты могут содержать подробные сведения об отдельных записях, свод-
ные сведения о большой группе записей либо и то, и другое. Кроме того, отче-
ты Access также можно использовать при создании наклеек для списков рассы-
лок и многого другого.
В Access 2010 с помощью отчетов можно распространять и архивировать
мгновенные снимки данных в печатном виде, в виде PDF- или XPS-файлов и
файлов других форматов. Также в Access 2010 появилась возможность создания
веб-баз данных путем публикации баз данных Access на сервере SharePoint, на
котором работают службы Access. Если имеется веб-база данных, отчеты
Access можно отображать в браузере с помощью служб отчетов SQL Server.
При таком преобразовании набор доступных функций в отчетах, отображаемых
в браузере, будет несколько ограничен. Однако, если не нужно отображать от-
четы в браузере, можно использовать полный набор возможностей, предостав-
ляемых конструктором отчетов Access.
Составные части отчета
В приложении Access макет отчета разбит на разделы. В клиентской базе
данных разделы отчета можно просмотреть в режиме Конструктора. В режиме
Макета разделы выделены не так четко, однако они все же обозначены и их
можно выбирать в раскрывающемся списке в группе Выделенный фрагмент на
вкладке Формат. Рассмотрим и охарактеризуем назначение каждого из семи
разделов в порядке их расположения в отчете.
1) Заголовок отчета включает информацию, выводимую только один раз
в начале отчета на титульной странице, например эмблему компании, название
отчета или дату. Если в этом разделе содержится вычисляемый элемент управ-
ления, в котором используется агрегатная функция суммирования, то сумма
будет рассчитываться для всего отчета. Заголовок отчета печатается перед
верхним колонтитулом.
2) Верхний колонтитул содержит информацию, выводимую на печать
вверху каждой страницы отчета, например: название отчета, дату или время
формирования текущего отчета и др.
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 101

3) Заголовок группы печатается перед каждой новой группой записей. Этот


раздел используется для печати названия группы. Например, если отчет сгруп-
пирован по товарам, в заголовках групп можно указать их названия. Если по-
местить в заголовок группы вычисляемый элемент управления, в котором ис-
пользуется агрегатная функция суммирования, то сумма будет рассчитываться
для текущей группы. В отчете может быть несколько разделов заголовков
групп в зависимости от количества уровней группировки.
4) Область данных печатается один раз для каждой строки данных из ис-
точника записей. В нем размещаются элементы управления, составляющие ос-
новное содержание отчета.
5) Примечание группы выводится на печать в конце каждой группы запи-
сей. В примечании группы отображаются сводные сведения о данной группе. В
отчете может быть несколько разделов примечаний групп в зависимости от ко-
личества уровней группировки.
6) Нижний колонтитул печатается внизу каждой страницы. Использует-
ся для нумерации страниц и для печати постраничной информации.
7) Примечание отчета выводится один раз в конце отчета. Примечание
отчета можно использовать для отображения итогов и другой сводной инфор-
мации по всему отчету.
В режиме конструктора примечание отчета отображается под нижним ко-
лонтитулом. Однако во всех остальных режимах (например, в режиме макета,
при печати или предварительном просмотре) этот раздел помещается над ниж-
ним колонтитулом, сразу после примечания последней группы или строки об-
ласти данных на последней странице.

Способы создание отчетов


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

Отчет позволяет создать простой табличный отчет, содержащий все


поля из источника записей, который выбран в области навигации.
Конструктор отчетов позволяет создать пустой отчет, открыть его в
режиме Конструктор и добавить в него нужные поля и элементы управления.
Пустой отчет позволяет создать пустой отчет, открыть его в режиме
макета и отобразить область задач Список полей. При перетаскивании полей из
этой области в отчет создается внедренный запрос, который сохраняется в его
свойстве Источник записей.
Мастер отчетов служит для вызова пошагового мастера, с помощью
которого можно задавать поля, уровни группировки и сортировки и параметры
102 Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ

макета. В результате работы Мастера будет создан отчет на базе выбранных


параметров.
Наклейки вызывает Мастер, в котором можно выбрать стандартный
или настраиваемый размер подписей, набор отображаемых полей и порядок их
сортировки. В результате Мастер создает отчет с подписями на базе выбран-
ных параметров.

Последовательность создания отчета


1) В области навигации выбрать (выделить) источник записей для отче-
та – таблицу или запрос. Источник записей должен содержать все строки и
столбцы данных, которые требуется отобразить в отчете.
2) Выбрать подходящий способ создания отчета, нажав соответствующую
кнопку на вкладке Создание ленты в группе Отчеты. Если появится окно
Мастера, следовать инструкциям в нем, а на последней странице нажать кноп-
ку Готово. Отчет будет открыт в приложении Access в режиме Макета.
3) Отформатировать отчет, чтобы добиться желаемого внешнего вида. Для
этого можно изменять размер полей и подписей, выделяя их и перетаскивая
края. Можно располагать поля в нужном порядке, выделяя их (и соответст-
вующие подписи, если они есть) и перетаскивая в нужное место. Также можно,
щелкая поля правой кнопкой мыши, с помощью команд контекстного меню
объединять или разбивать ячейки, удалять и выделять поля и выполнять другие
задачи форматирования.
При желании в отчет можно добавить группировку, сортировку или итоги,
щелкнув правой кнопкой мыши на поле, к которому необходимо применить со-
ответствующую операцию, и выбрав нужную команду в контекстном меню.
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 103

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

Выделение значений с помощью условного форматирования


В Access 2010 предусмотрены более функциональные инструменты для
выделения данных в отчетах. Для каждого элемента управления или их группы
можно добавить до 50 правил условного форматирования, а в клиентских отче-
тах можно использовать гистограммы для сравнения данных из разных записей.
Добавить условное форматирование можно следующим образом.
1. Открыть отчет в режиме Макета.
2. Выбрать все элементы управления, к которым требуется применить ус-
ловное форматирование. Чтобы выбрать несколько элементов, щелкнуть на
них, удерживая нажатой клавишу [Shift] или [Ctrl].
3. На вкладке Формат в группе Форматирование элемента управления
выбрать команду Условное форматирование, после чего будет открыто диало-
говое окно Диспетчер правил условного форматирования.
4. В диалоговом окне Диспетчер правил условного форматирования вы-
брать команду Создать правило.
5. В диалоговом окне Новое правило форматирования выбрать значение в
поле Выберите тип правила. Чтобы создать правило, которое будет проверять-
ся отдельно для каждой записи, выбрать вариант Проверьте значения в теку-
щей записи или используйте выражение. Чтобы создать правило для сравнения
записей друг с другом с помощью гистограмм, выбрать вариант Сравнить с
другими записями.
6. В поле Измените описание правила указать правило, которое будет оп-
ределять применение форматирования, а также форматирование, которое нуж-
но применять при выполнении условий.
7. Чтобы вернуться в диалоговое окно Диспетчер правил условного фор-
матирования, нажать кнопку ОК.
8. Если нужно создать еще одно правило для этого элемента управления
или группы элементов, повторить процедуру, начиная с действия 4. В против-
ном случае нажать кнопку ОК, чтобы закрыть диалоговое окно.

Придание отчету профессионального внешнего вида с помощью тем


Access 2010 позволяет к базам данных применять темы, при этом выбран-
ная тема Office, шрифт или цвет применяется не только к текущему отчету, а ко
всем формам и отчетам в базе данных.
1. Открыть отчет в режиме макета, щелкнув его в области навигации и вы-
брав команду Режим макета.
104 Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ

2. На вкладке Конструктор в группе Темы выбрать


нужную тему, цвет или шрифт. С помощью коллекции Темы
можно одновременно задать цвета и шрифты в соответствии
с готовой схемой. С помощью коллекций Цвета и Шрифты
можно задать цвета и шрифты независимо друг от друга.

Добавление изображений
Изображения в Access традиционно привязывались к отдельным элемен-
там управления на формах и отчетах. Чтобы изменить часто используемое изо-
бражение, присутствующее на нескольких формах и отчетах, каждый соответ-
ствующий элемент управления приходилось обновлять вручную. В приложении
Access 2010 можно прикрепить к базе данных изображение, а затем использо-
вать его с несколькими объектами. Обновление одного изображения приводит к
его обновлению в масштабах всей базы данных. Это очень полезно при работе с
такими объектами, как эмблемы компаний и фоновые изображения, используе-
мые во всей базе данных.
1. В области навигации щелкнуть правой кнопкой мыши на отчете, в кото-
рый требуется добавить изображение, и выбрать команду Режим макета.
2. Щелкнуть на то место отчета, где нужно поместить изображение.
3. На вкладке Конструктор в группе Элементы управления нажать кнопку
Вставить изображение.
4. Выполнить одно из указанных ниже действий:
– Используйте существующее изображение, если нужное изображение
уже есть в коллекции, щелкнуть его, чтобы добавить в отчет;
– Добавьте новое изображение, нажав кнопку Обзор в нижней части кол-
лекции. В диалоговом окне Выбор рисунка перейти к нужному изображению и
нажать кнопку Открыть.
После этого выбранное изображение будет добавлено в отчет.
Добавить фоновое изображение можно следующим образом. В области на-
вигации щелкнуть правой кнопкой мыши отчет, в который требуется добавить
фоновое изображение, и выбрать команду Режим макета. На вкладке Формат
в группе Фон нажать кнопку Фоновый рисунок. Дальше надо выбрать одно из
существующих в коллекции изображений или загрузить новое изображение,
нажав кнопку Обзор в нижней части коллекции.

Просмотр и печать отчета


Чтобы выполнить предварительный просмотр отчета надо открыть от-
чет, выбрав его в области навигации, и на вкладке Файл выполнить команду
Печать, а затем – Предварительный просмотр. После этого отчет будет открыт
в режиме предварительного просмотра. С помощью команд на вкладке Предва-
рительный просмотр можно выполнить следующие действия:
 напечатать отчет;
 изменить размер или макет страницы;
 изменить масштаб или просмотреть сразу несколько страниц;
 обновить данные в отчете;
Лекция 5. ACCESS. СОЗДАНИЕ ФОРМ, ОТЧЕТОВ 105

 экспортировать отчет в другой формат файла.


Чтобы вернуться в рабочую область базы данных, на вкладке Предвари-
тельный просмотр в группе Закрыть надо выбрать команду Закрыть окно
предварительного просмотра.
Печать отчета можно выполнить не только из режима предварительного
просмотра, но и с помощью команды Печать на вкладке Файл. Кроме этого,
можно воспользоваться командой Быстрая печать, чтобы сразу отправить от-
чет на принтер по умолчанию, не настраивая его параметры.

Вопросы для самопроверки


1. Какое основное назначение форм при разработке БД? Почему разработ-
чики БД стремятся обеспечить ввод и редактирование данных через
формы, а не напрямую в таблицах?
2. Перечислите способы создания форм. Какой способ создания форм по-
зволит отобразить данные одной таблицы и в режиме таблицы, и в пред-
ставлении формы одновременно? Какая команда позволит создать такую
форму?
3. Какое предназначение форм навигации?
4. В чем особенность использования форм нескольких элементов? Как по
другому называют такие формы?
5. В чем заключается специфика использования Мастера форм?
6. Какие средства редактирования форм возможны только в режиме Кон-
структор? Как в режиме Конструктор можно вынести поля на форму?
7. Сравните разработку форм с помощью Мастера и Конструктора. Опи-
шите достоинства и недостатки этих технологий.
8. Как задать требуемые свойства элементу управления, установленному
на форме?
9. Назовите три возможных режима для вывода любой формы на экран.
Какими командами можно переходить из одного режима в другой? В ка-
ком из режимов можно редактировать колонтитулы на форме?
10. Что такое подчиненная форма? Как должны быть связаны между собой
главная и подчиненная формы в схеме данных? Какие существуют спо-
собы создания подчиненных форм?
11. Какое основное назначение отчетов? Сравните назначение отчетов и на-
значение форм.
12. Какие разделы имеются в окне конструктора отчетов? Для чего они пред-
назначены? Как добавить отсутствующие и удалить ненужные разделы?
13. Перечислите способы создания отчетов.
14. Для чего в отчете формируют уровни группировки? В каком режиме
удобнее всего создавать уровни группировки? Как при работе с Масте-
ром отчетов изменить группировку данных?
15. Какие команды можно выполнить в режиме Предварительный про-
смотр отчета?
106

Лекция 7. Введение в программирование Access

1. Средства программирования в Access.


2. Создание макросов.
3. Создание модулей.

1. Средства программирования в Access


Создание базы данных обычно начинается с создания нескольких
объектов, например таблиц, форм и отчетов, но рано или поздно приходится
прибегать к средствам программирования, чтобы автоматизировать некоторые
процессы и связать объекты базы данных.
В Access программированием называется процесс расширения функцио-
нальности базы данных с использованием макросов или модулей. Макросы –
это небольшие программы на языке макрокоманд (языке сценариев), иначе го-
воря, это набор готовых макрокоманд, который можно выбирать и назначать
тем или иным объектам на формах и отчетах с помощью конструктора макро-
сов. Модули – это наборы описаний и процедур на языке программирования
VBA (Visual Basic for Applications), т. е. это объекты, содержащие программы
на языке Visual Basic. Предположим, что пользователь создал форму и отчет и
желает добавить на форму кнопку, при нажатии которой будет открываться от-
чет. В этом случае программирование будет включать создание макроса или
процедуры VBA и настройку события OnClick для кнопки таким образом, что-
бы при ее нажатии запускался соответствующий макрос или процедура. Для
реализации простых операций, таких как открытие отчета, можно использовать
мастер кнопок, но можно отключить его и самостоятельно запрограммировать
все на VBA. Таким образом, в отличие от других программ Microsoft Office, та-
ких как Word или Excel, в которых макросом называется код VBA, в Access су-
ществует различие между понятиями макрос и модуль.
Основным назначением макросов и модулей в Access является создание
удобного интерфейса приложения, в котором формы и отчеты открывались бы
при нажатии кнопок на этих формах или на панелях инструментов.
Модули являются более мощным средством создания программных рас-
ширений в среде Microsoft Office. Применение модулей требует от пользовате-
лей знаний основных принципов объектно-ориентированного программирова-
ния. В свою очередь, конструктор макросов имеет более структурированный
интерфейс, чем редактор VBA, позволяя добавлять программный код для эле-
ментов управления и объектов без знаний особенностей программирования
VBA, поскольку каждое действие (команда макроса) просто выбирается из рас-
крывающегося списка. Именно поэтому большинство пользователей находят
создание макросов более простым, чем написание кода VBA.
Принятие решения об использовании макросов, кода VBA или и того, и
другого зависит в первую очередь от того, где будет использоваться база дан-
ных, и решение следует принимать на основе требований к безопасности и
Лекция 7. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ ACCESS 107

функциональности приложения. Например, если база данных будет использо-


ваться одним пользователем на одном компьютере, можно выполнить боль-
шинство задач программирования с помощью VBA. Если же планируется по-
местить базу данных на сервер и совместно использовать ее с другими пользо-
вателями, лучше отказаться от применения VBA из соображений безопасности.
Также надо учитывать ту особенность, что код VBA несовместим с функцией
веб-публикации, и, если планируется опубликовать базу данных в качестве веб-
приложения Access, для выполнения задач программирования необходимо ис-
пользовать макросы вместо кода VBA.
В качестве рекомендаций обеспечения безопасности базы данных можно
посоветовать разработчику БД отдавать предпочтение использованию макросов
и прибегать к коду VBA для выполнения только тех операций, которые нельзя
выполнить с помощью макрокоманд. Кроме того, следует стараться использо-
вать только те макрокоманды, для выполнения которых не требуется выражать
доверие к БД. Такое ограничение использования макрокоманд позволяет поль-
зователям быть уверенными в том, что БД не содержит программных фрагмен-
тов, которые могут нанести вред данным и другим файлам на компьютерах.
В свою очередь, без модулей VBA не обойтись при выполнении некоторых
действий на уровне системы, например, при необходимости запуска из Access
другого приложения – Word или Excel, поскольку макрос нельзя использовать
для выполнения операций вне Access. А с помощью VBA можно не только за-
пустить соответствующее приложение, но еще и проверить наличие файла на
компьютере, использовать автоматизацию или динамический обмен данными
(DDE) для взаимодействия или вызвать функцию из библиотеки динамической
компоновки (DLL) Windows.

2. Создание макросов
Макрос представляет собой именованный набор макрокоманд, выпол-
няющих определённые операции, позволяющие автоматизировать работу при-
ложения. Используя макросы для выполнения рутинных операций, можно су-
щественно сэкономить время и силы. Кроме того, поскольку всякий раз при за-
пуске макроса будет осуществляться одна и та же последовательность дейст-
вий, макрос сделает работу с базой данных более эффективной и аккуратной.
Макросы могут быть как простыми, состоящими из одной макрокоманды, так и
сложными, включающими логические операции и несколько взаимосвязанных
макрокоманд.
Объекты (например, формы и отчеты) и элементы управления на них (на-
пример, кнопки и поля) могут иметь множество разных событий, которым
можно назначить выполнение разных макросов. Примерами событий могут
быть щелчок кнопки мыши, открытие или закрытие формы, запуск отчета или
изменение данных в текстовом поле и др. Например, при добавлении кнопки на
форму событие OnClick кнопки связывается с макросом, содержащим команды,
которые должны выполняться при каждом нажатии кнопки.
События могут также запускаться внешними по отношению к Access фак-
торами, такими как системные события, макросы или процедуры, связанные с
108 Лекция 7. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ ACCESS

другими событиями. Если добавить значительное количество макросов к собы-


тиям разных объектов на формах и отчетах, база данных может стать довольно
сложной, но в большинстве случаев можно достичь необходимого результата
почти без программирования. Назначать макросы, зависящие от событий, мож-
но с помощью окна свойств форм и отчетов (кстати, таблицы и запросы собы-
тиями не обладают).
В Access 2010 включено много новых макрокоманд, которые позволяют
создавать более эффективные макросы, чем в предыдущих версиях Access. На-
пример, с помощью макрокоманд можно создавать и использовать глобальные
временные переменные, а также более тонко обрабатывать ошибки. В более
ранних версиях Access эти возможности были доступны только при использо-
вании VBA. Кроме того, можно встраивать макросы непосредственно в свойст-
ва событий объектов или элементов управления. Встроенный макрос становит-
ся частью объекта или элемента управления и остается с ним при его переме-
щении или копировании.
Для создания макросов служит Конструктор макросов, запустить который
можно командой Макрос на вкладке Создание в группе Макросы и код.

Выбрать ту или иную макрокоманду можно в раскрывающемся списке


.
Создаваемые макросы могут быть изначально связаны с каким-то элемен-
том, например с кнопкой на форме, или быть самостоятельными объектами,
многократно используемыми с разными объектами на разных формах и отче-
тах, например, один и тот же макрос может выполняться при выборе пункта
меню на форме или при нажатии кнопки на отчете.
Лекция 7. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ ACCESS 109

Создание командной кнопки с макросом


Последовательность действий по созданию макроса рассмотрим на приме-
ре добавления на форму Зарплата БД Сотрудники организации кнопки, при
нажатии на которую откроется форма Анкеты с подробными анкетными сведе-
ниями о рассматриваемом сотруднике.
1. В области навигации щелкнуть правой кнопкой мыши на форме Зар-
плата, в которую необходимо добавить кнопку, и выбрать пункт Конструктор.
2. На вкладке Конструктор в группе Элементы управления щелкнуть
стрелку вниз, чтобы отобразить коллекцию элементов управления, и убедиться
в том, что выбран элемент Использовать мастера.
3. На вкладке Конструктор в коллекции Элементы управления щелчком
выбрать элемент Кнопка и щелкнуть в сетке конструктора формы там, где надо
расположить кнопку. При этом будет запущен мастер создания кнопок.
4. На первой странице мастера в области Категории щелчком выбрать
пункт Работа с формой, в списке Действия выбрать Открыть форму и нажать
кнопку Далее.
5. Выбрать имя открываемой формы Анкеты и нажать кнопку Далее.
6. На следующем шаге установить опцию Открыть форму для отобран-
ных записей и нажать кнопку Далее.
7. Поскольку запрос Зарплата (с надбавками) и таблица Анкеты, на осно-
ве которых созданы обе формы, не были напрямую связаны, надо выбрать поля,
которые следует использовать для отбора данных. Для этого выбрать поле Фа-
милия в области Зарплата и одноименное поле в области Анкеты, нажать
кнопку и кнопку Далее.
8. На следующем шаге вписать текст, который будет отображаться на соз-
даваемой кнопке, например: "Показать анкетные данные сотрудника". Нажать
кнопку Далее.
Можно также воспользоваться вариантом Рисунок, который позволит вы-
брать и отобразить на кнопке рисунок формата bmp или ico.
9. Ввести имя кнопки ОткрАнкеты и нажать кнопку Готово.
Можно согласиться с именем, предлагаемым по умолчанию, поскольку
имя на кнопке не отображается. Однако имеет смысл ввести значимое имя, что-
бы при необходимости сослаться на кнопку (например, чтобы при определении
последовательности перехода между элементами управления на форме при на-
жатии клавиши [Tab], было намного проще различать кнопки).
После этого кнопка будет вставлена на форму.
10. Для добавления еще одной макрокоманды, которая должна выполнять-
ся при нажатии этой же кнопки, надо в режиме Конструктор нажать [F4] для
отображения окна свойств. На вкладке События окна свойств для события
Нажатие кнопки нажать кнопку построения , что приведет к открытию кон-
структора макроса. Далее надо с помощью списка
выбрать следующую макрокоманду, например ЗакрытьОкно, и заполнить
строки в бланке макроса: в строке Тип объекта выбрать Форма, а в строке Имя
объекта выбрать Зарплата.
110 Лекция 7. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ ACCESS

11. Осталось перейти в режим формы и нажать на созданную кнопку, что-


бы убедиться, что она работает так, как ожидалось.

Создание самостоятельного (глобального) макроса


Макрос является объектом базы данных, который можно использовать не-
однократно в различных вариантах. Для того чтобы создать простейший мак-
рос, необходимо подумать о его дальнейшем использовании. Предположим,
перед тем, как приступить к изменению таблицы Сотрудники, пользователя
следует предупредить об этом, а затем открыть необходимую таблицу. Получа-
ется, что необходимо выполнить два действия (две макрокоманды):
1) запустить окно с предупреждением; 2) открыть необходимую таблицу. Рас-
смотрим порядок создания такого макроса, а затем используем этот макрос в
форме Зарплата и отчете Сотрудники.
1. На вкладке Создание в группе Макросы и код нажать на значок Макрос.
2. В появившемся окне Макрос1 раскрыть список и выбрать макроко-
манду ОкноСообщения, что приведет к открытию бланка составления сообщения.
Например, в строке Сообщение ввести текст "Будет открыта таблица, в которую
можно вводить изменения", в строке Тип выбрать из списка Предупреждаю-
щее!, в строке Заголовок ввести "Внимание!" (первая часть макроса готова).
3. Чтобы добавить в макрос еще одну макрокоманду, надо в окне макроса
из списка выбрать макрокоманду ОткрытьТабли-
цу. В бланке макрокоманды выбрать из списка имя открываемой таблицы Со-
трудники.

Как видно на рисунке выше, бланк макроса состоит из отдельных областей


для каждой макрокоманды.
Сам макрос можно открыть в режиме Конструктор и откорректировать его.
4. Сохранить макрос с именем ОткрТаблСотрудники, после чего в области
навигации появится указанное имя созданного макроса.
Осталось самое главное, привязать макрос к какому-то объекту (или объ-
ектам).
Лекция 7. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ ACCESS 111

5. Для начала создадим специальную надпись в отчете Сотрудники, щел-


чок по которой запустит созданный макрос. Для этого надо открыть этот отчет
в режиме Конструктор, перенести в заголовок отчета (или другое подходящее
место) элемент управления Надпись. Открыть окно свойств этого элемен-
та, в поле Подпись ввести текст "Просмотр таблицы "Сотрудники"". Также
можно изменить другие свойства, например, цвет фона, размер шрифта и т. п.
Для привязки макроса к надписи надо на вкладке События в строке На-
жатие кнопки выбрать из списка имя нужного макроса ОткрТаблСотрудники.
Сохранить отчет, перейти в режим Представление отчета и проверить работо-
способность макроса.
6. Для использования этого же макроса на форме Зарплата, открыть эту
форму в режиме Конструктор и разместить на форме элемент управления
Кнопка, что приведет к открытию мастера создания кнопок. На первой
странице мастера в области Категории щелчком выбрать пункт Разное, в списке
Действия выбрать Выполнить макрос и нажать кнопку Далее. После этого вы-
брать имя макроса ОткрТаблСотрудники и нажать кнопку Далее. Далее выбрать
подходящий рисунок или вписать текст "Посмотреть таблицу "Сотрудники"",
который будет отображаться на создаваемой кнопке. Нажать кнопку Готово.
Осталось перейти в режим формы и проверить правильность работы макроса.
Таким образом, удобством использования макроса является еще и то, что
он распространяется на все типы объектов базы данных.

Создание сложного макроса


Так как макросы в Access 2010 состоят из стандартных макрокоманд (кир-
пичиков), то можно переложить всю заботу поиска необходимых сведений на
макросы вместо того, чтобы создавать сложные отборы данных в запросах.
Предположим, руководство организации интересуют конкретные сведения о
сотрудниках, которые занимают определённые должности. Скорее всего, руко-
водство уже запуталось в наименованиях должностей на предприятии, это свя-
зано с постоянной реорганизацией и созданием приказов о внесении изменений
в штатную расстановку. Наверное, руководителю следует предоставить форму
с перечнем существующих должностей на предприятии, а далее дать возмож-
ность по наименованию должности найти фамилии сотрудников, их место ра-
боты и другие сведения. Попробуем создать взаимодействие между формами с
помощью макроса.
Для решения поставленной задачи понадобится две формы. Первая форма
– главная, содержащая список должностей на определённый момент времени в
организации. Вторая форма – подчинённая, содержащая сведения, интересую-
щие руководителя. Из подчинённой формы должны выбираться данные, отно-
сящиеся к условию, которое задаёт руководитель. Следовательно, связь между
формами возлагается на программу, которая будет формироваться с помощью
макросов. Выполним несколько шагов для решения поставленной задачи.
112 Лекция 7. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ ACCESS

Шаг 1. Разработка главной формы Должности.


1. Создать в режиме Мастер форму, в которой будет отражена информация
с наименованиями должностей на предприятии. Для этого надо выделить табли-
цу Должности и выполнить команду Создание – Мастер форм. Далее надо пе-
ренести на форму поля Должность и Оклад, выбрать вид формы Ленточный и
задать имя формы – Должности. При открытии форма получит такой вид.

2. Для внесения изменений в созданную форму надо перейти в режим Кон-


структор, сдвинуть вправо поля в Области данных, разместить на освободив-
шемся месте элемент управления Кнопка. На запуск мастера создания кно-
пок отреагировать нажатием кнопки Отмена. В окне свойств ввести в свойстве
Подпись текст "Сотрудники, занимающие эту должность". В область Примеча-
ние формы расположить элемент управления Надпись, в свойстве Подпись
которого ввести текст: "Чтобы посмотреть список сотрудников, занимающих
соответствующую должность, надо нажать кнопку, правее этой должности".
При желании, можно задать другие параметры форматирования формы и полей
на ней, после чего сохранить готовую форму.

3. Для создания макроса, который будет выполняться при нажатии кнопки,


надо для формы Должности в режиме Конструктор щелкнуть правой кнопкой
мыши на кнопке Сотрудники, занимающие эту должность и выбрать в кон-
текстном меню команду . В появившемся окне выбрать
Лекция 7. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ ACCESS 113

Макросы и нажать кнопку ОК. Далее в окне построителя макроса надо из списка
выбрать макрокоманду ЗадатьВремПеременную.
В открывшемся бланке макрокоманды в строке Имя ввести имя временной
переменной Z, с помощью которой будут передаваться данные из главной фор-
мы в подчиненную. Чтобы это происходило, в строке Выражение бланка мак-
роса следует вписать имя поля Должность, значения которого будут связую-
щим звеном между главной и подчиненной формами. Причем, имя этого поля
можно не вписывать, а выбрать из списка полей, воспользовавшись кнопкой .

Закрыть и сохранить бланк макроса.


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

2. Теперь можно продолжить процесс создания макроса. Надо форму


Должности открыть в режиме Конструктор форм, нажать кнопку Сотрудни-
ки, занимающие эту должность и в окне свойств на вкладке События для
строки Нажатие кнопки щёлкнуть по значку . Это приведет к повторному
открытию бланка макроса.
3. Для добавления новой макрокоманды надо из списка
выбрать строку с наименованием ОткрытьФорму.
В бланке макрокоманды надо из списка выбрать имя формы Анкетные данные,
а в строке Условие отбора ввести выражение:
[Должность]=[TempVars]![Z]
114 Лекция 7. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ ACCESS

В строке Режим окна выбрать из списка значение Окно диалога. Это дела-
ется для того, чтобы пользователь мог просматривать данные, собранные из
подчинённой таблицы, в соответствии с поставленным условием.

4. Сохранить макрос и закрыть его. Проверить правильность работы кноп-


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

3. Создание модулей
Модули являются объектом базы данных, объединяющим одну или не-
сколько процедур либо функций, написанных на языке Visual Basic for
Лекция 7. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ ACCESS 115

Applications (VBA). Модули следует использовать вместо макросов в следую-


щих случаях:
– необходима функциональность, недостижимая с помощью макросов;
– необходимо во время работы динамически создавать новые объекты БД;
– необходим вызов функций Windows или обмен данными через OLE;
– необходима обработка ошибок;
– необходимо возвращать и передавать параметры;
– необходимо создание общих функций;
– необходимо производить действия более чем с одной БД одновременно.
Поскольку модули компилируются, они выполняются быстрее, чем макро-
сы, что делает их использование выгоднее в целях оптимизации.
Входящие в модуль процедуры/функции объединены общей областью дек-
ларации. В ней устанавливаются определения и правила, являющиеся обще-
принятыми для модуля, а также переменные, общие для всех проце-
дур/функций модуля. Процедуры и функции могут иметь аргументы. Отличием
функции от процедуры является то, что первая может в точку вызова вернуть
некоторое значение, а вторая – нет.
Функции и процедуры, записанные в модулях, доступных через группу
Модули в области навигации окна БД (стандартные или общедоступные моду-
ли), являются доступными для всех объектов БД. Их можно использовать:
– во всех процедурах и других функциях БД;
– в выражениях вычисляемых полей на формах, запросах и других объектах;
– в выражениях, определяющих условия выполнения макрокоманд в мак-
росах.
Кроме общедоступных модулей в каждой форме и отчете имеются свои
локальные (иначе привязанные) модули. Программы локальных модулей за-
гружаются динамически вместе с объектом, их содержащим.
Процедуры в них являются локальными по отношению к данному объекту
и используются преимущественно для обработки событий. Имя такой процеду-
ры состоит из имени объекта и имени события и не подлежит изменению.
Если требуется обработка некоторого события, то проще всего создать
процедуру его обработки из окна свойств того объекта, события которого необ-
ходимо обработать. Для этого надо нажать кнопку с многоточием в строке об-
рабатываемого события и выбрать построение программ. После этого автома-
тически будет создано тело процедуры, связанной с определенным событием.
При наборе команд в окне модуля Access автоматически проверяет пра-
вильность написания инструкций VBA. Если некоторая форма содержит очень
много кода внутри своего модуля, то рекомендуется большую часть его органи-
зовать в виде функций и поместить их в отдельный стандартный модуль. Тогда
загрузка самой базы будет происходить медленнее, но форма будет открывать-
ся значительно быстрее.
Пользователи могут расширить возможности VBA с помощью элементов
управления сторонних разработчиков, а также написать собственные функции и
процедуры для своих нужд. Чтобы быстро приступить к работе с VBA, можно
создать макрос Access и преобразовать его в код VBA. При этом создается мо-
116 Лекция 7. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ ACCESS

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


тор Visual Basic, в котором можно приступить к изменению процедуры. При
работе в редакторе Visual Basic можно щелкнуть ключевое слово и нажать кла-
вишу [F1] для запуска справки разработчика Access и получения сведений о
ключевом слове.

Преобразование макросов в код VBA


В Access 2010 макросы можно преобразовывать в модули VBA или модули
классов. Приведенная ниже последовательность действий позволит преобразо-
вать в код VBA любые макросы, которые упоминаются в форме или отчете
(или в любом их элементе управления) либо встроены в них. Затем она добав-
ляет код VBA в модуль класса формы или отчета. Модуль класса становится
частью формы или отчета и перемещается с ними при их копировании или пе-
ремещении.
1. В области навигации щелкнуть правой кнопкой мыши форму или отчет
и выбрать пункт Конструктор.
2. На вкладке Конструктор в группе Сервис выбрать команду Преобразо-
вание макросов формы в Visual Basic или Преобразование макросов отчета в
Visual Basic.
3. В диалоговом окне Преобразование макросов формы или Преобразова-
ние макросов отчета указать, должен ли быть добавлен к создаваемым функ-
циям код обработки ошибок. Кроме того, при наличии в макросах комментари-
ев целесообразно указать, следует ли включать их в функции. Для продолжения
нажать кнопку Преобразовать.
После этого Access преобразует макрос и откроет редактор Visual Basic и
отобразит процедуру обработки события в его модуле класса. Если же окно ре-
дактора Visual Basic не откроется, надо открыть форму или отчет в режиме
Конструктор и нажать клавишу [F4] для отображения окна свойств, а затем на
вкладке Событие окна свойств щелкнуть в свойстве [Процедура обработки со-
бытий] и нажать кнопку построения .
В открывшемся окне редактора Visual Basic с помощью полосы прокрутки
можно просмотреть любые другие процедуры в этом модуле класса. Для пере-
мещения между модулями и другими объектами БД, содержащими программ-
ный код, можно воспользоваться панелью обозревателя проектов (Project – Da-
taBase). Если в редакторе Visual Basic не отображается панель обозревателя
проектов, надо выбрать в меню Вид (View) пункт Обозреватель проектов
(Project Explorer) (эту команду дублирует сочетание клавиш [Ctrl] + [R]).

Создание локального модуля,


привязанного к командной кнопке на форме
Создание такого модуля рассмотрим на конкретном примере, не вникая
особо в нюансы чрезвычайно богатого языка программирования VBA, посколь-
ку рассмотрение его широчайших возможностей может занять не одну лекцию,
а целый курс.
Лекция 7. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ ACCESS 117

В рассматриваемой ранее БД Сотрудники организации на форме Сотруд-


ники с полями Фамилия, Имя, Адрес, Должность и Отдел в режиме Конструк-
тор надо поместить элемент управления Кнопка, в качестве надписи на которой
вписать текст: "Сформировать и напечатать контракт" (рис. 7.1). В дальнейшем
при нажатии на эту кнопку будет создаваться, открываться и печататься на прин-
тере новый документ MS Word с текстом контракта о приеме на работу сотруд-
ника, данные которого отображаются в данный момент на форме. Текст самого
контракта (трудового договора) будет формироваться на основании предусмот-
ренного шаблона (файл Dogovor.dot в текущей папке), а значения полей Фами-
лия, Имя, Адрес, Должность и Отдел будут выбираться из полей формы Со-
трудники и записываться в определенные места (закладки) в документе.

Рисунок 7.1 – Вид формы Сотрудники и фрагмент документа контракта,


формируемого после нажатия кнопки Сформировать и напечатать контракт

Шаблон данного документа формируется довольно быстро: надо в Word-е


набрать текст стандартного контакта (трудового договора) о приеме на работу,
с помощью команды Вставка – Закладка сформировать в предусмотренных
местах 4 закладки с именами: fio, adr, dolg, otd и сохранить документ в папке
рядом с БД с именем Dogovor и типом файла Шаблон Word 97-2003(*.dot) или
Шаблон Word (*.dotх).
После размещения на форме Сотрудники в режиме Конструктор элемента
управления Кнопка надо нажать на ней правой кнопкой мыши и выбрать из
контекстного меню команду Отработка событий. После этого откроется окно
редактора VBA c заголовком процедуры:
Private Sub Кнопка1_Click()
End Sub
118 Лекция 7. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ ACCESS

После заполнения процедуры программным кодом, она приобретет такой


вид (строчки, начинающиеся с одного апострофа, являются поясняющими ком-
ментариями к выполняемым командам и не обязательны для ввода):
Private Sub Кнопка1_Click()
' Объявление: app – приложение Word, doc – документ Word.
Dim app As Word.Application
Dim doc As Word.Document
' Запуск Word (если Word уже запущен, то новый документ будет открыт
' в этом же экземпляре приложения).
Set app = GetObject( , "Word.Application")
' Объявление переменной strDOC для хранения адреса и имени шаблона,
' на основе которого будет создаваться новый документ Word.
Dim strDOC As String
strDOC = Application.CurrentProject.Path & "\" & "Dogovor.dot"
' Создание нового документа на основе шаблона.
Set doc = app.Documents.Add(strDOC)
' Объявление переменных для считывания полей формы и записи их в документ.
Dim Фамилия, Имя, Адрес, Должность, Отдел As String
On Error GoTo 999 ' Обработка ошибок.
' Считывание заполненных полей формы Сотрудники.
If Form_Сотрудники.Controls("Фамилия").Value <> "" Then _
Фамилия = Form_Сотрудники.Controls("Фамилия ").Value
If Form_Сотрудники.Controls("Имя").Value <> "" Then _
Имя = Form_Сотрудники.Controls("Имя").Value
If Form_Сотрудники.Controls("Адрес").Value <> "" Then _
Адрес = Form_Сотрудники.Controls("Адрес").Value
If Form_Сотрудники.Controls("Должность").Value <> "" Then _
Должность = Form_Сотрудники.Controls("Должность").Value
If Form_Сотрудники.Controls("Отдел").Value <> "" Then _
Отдел = Form_Сотрудники.Controls("Отдел").Value
app.Visible = True ' Отобразить созданный документ .
app.activeWindow.Windowstate = wdWindowStateMaximize
doc.Activate ' Активизация окна Word с текущим документом.
' Запись в документ значений считанных полей в места закладок.
doc.bookmarks("fio").range.Text = Фамилия & " " & Имя
doc Dc.bookmarks("adr").range.Text = Адрес
doc.bookmarks("dolg").range.Text = Должность
doc.bookmarks("otd").range.Text = Отдел
' Блок команд для корректной печати документа на принтере.
Dim intPrint As Integer
intPrint = MsgBox("Печатать договор?", vbYesNo + vbQuestion)
If intPrint = vbYes Then
doc.PrintOut
Do While app.BackgroundPrintingStatus <> 0
DoEvents
Loop
End If
Exit Sub
999:
MsgBox Err.Description ' Сообщение в случае ошибки.
Err.Clear
app.Quit
End Sub
Лекция 7. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ ACCESS 119

В данной программе с помощью функции GetObject() будет создан объект


Document. Если до этого Word не был запущен, будет создан скрытый экземп-
ляр объекта Application Word, а, если же Word уже запущен, то новый документ
будет добавлен к уже открытым документам.
После заполнения всех полей, договор будет распечатан. Но предваритель-
но пользователь получит сообщение, требующее подтвердить необходимость
печати. Документ напечатается, только если пользователь подтвердит это.
Таким образом, программные средства Access позволяют автоматизиро-
вать различные деловые процедуры, а рассмотренный пример объясняет, как
это можно сделать.
Изучение VBA превращает программиста в "волшебника" и позволяет го-
раздо эффективнее решать большинство задач. В данной лекции, в виду малого
объема, были рассмотрены только основные действия по созданию макросов и
добавлению кода VBA к базе данных с целью автоматизации некоторых про-
цессов и связи объектов БД.

Вопросы для самопроверки


1. Какие средства программирования поддерживает MS Access?
2. Что представляет собой макрос в Access?
3. Что представляет собой модуль в Access? Чем модуль отличается от макроса?
4. В каких случаях в Access уместнее использовать макросы, а в каких – модули?
5. Как создать макрос и через него создать связь с объектами базы данных?
6. Какой язык программирования используется в MS Access для написания
программного кода?
7. Как на форме создать командную кнопку с макросом?
8. Как создать самостоятельный (глобальный) макрос, который можно ис-
пользовать неоднократно в различных объектах управления?
9. Где отображаются глобальные макросы, накопленные в БД? Что необхо-
димо сделать, чтобы запустить такой макрос?
10. В каких случаях следует использовать модули вместо макросов?
11. С какой целью используют преобразование макросов в код VBA?
12. Где отображаются общедоступные модули, накопленные в БД? Что необ-
ходимо сделать, чтобы запустить такой модуль?
13. В чем отличие процедур от функций в модулях VBA?
14. Как открыть редактор Visual Basic для просмотра программного кода
процедуры обработки события элемента управления Кнопка на форме?
15. От чего зависит принятие решения об использовании макросов, кода
VBA или и того, и другого?
120

Лекция 8. Введение в SQL

1. Основы языка SQL.


2. Состав языка SQL.

1. Основы языка SQL


SQL (англ. Structure Query Language – язык структурированных запросов)
является универсальным компьютерным языком, применяемым для создания,
модификации и управления данными в реляционных БД. Уникальность этого
языка состоит в том, что он является единственным стандартным языком реля-
ционных БД для манипулирования данными, определения структуры баз дан-
ных и для управления правами доступа к данным в многопользовательской
среде. Тем не менее, SQL не является полноценным компьютерным языком. Он
является неотъемлемой частью большинства современных СУБД и работает
только с реляционными БД. И самое главное: несмотря на то, что каждая СУБД
по-своему извращается над стандартом (вносит какие-то свои дополнения),
стандартный SQL поддерживают все БД.
Как же работает SQL? Когда пользователю надо получить информацию из
БД, он запрашивает эти данные у СУБД с помощью SQL. СУБД обрабатывает
запрос, находит (или не находит) требуемые данные и возвращает результат
пользователю.
Каждое предложение SQL – это либо запрос данных из базы, либо обраще-
ние к БД, которое приводит к изменению данных в базе. В соответствии с тем,
какие изменения происходят в БД, различают следующие типы запросов:
 запросы на создание или изменение в БД новых или существующих
объектов (при этом в запросе описывается тип и структура создаваемого или
изменяемого объекта);
 запросы на получение данных;
 запросы на добавление новых данных (записей);
 запросы на удаление данных;
 обращения к СУБД.
Основным объектом хранения реляционной БД является таблица, поэтому
все SQL-запросы – это операции над таблицами. В соответствии с этим, запросы
делятся на:
1) запросы, оперирующие самими таблицами (создание и изменение таб-
лиц);
2) запросы, оперирующие с отдельными записями (или строками таблиц)
или наборами записей.
Запросы первого типа, в свою очередь, делятся на запросы, предназначен-
ные для создания в БД новых таблиц, и на запросы, предназначенные для изме-
нения уже существующих таблиц. Запросы второго типа оперируют со строка-
ми, и их можно разделить на запросы следующего вида:
 вставка новой строки;
Лекция 8. ВВЕДЕНИЕ В SQL 121

 изменение значений полей строки или набора строк;


 удаление строки или набора строк.
Самый главный вид запроса – это запрос, возвращающий (пользователю)
некоторый набор строк, с которым можно осуществить одну из трёх операций:
 просмотреть полученный набор;
 изменить записи набора;
 удалить записи набора.
Таким образом, использование SQL сводится, по сути, к формированию все-
возможных выборок строк и совершению операций над всеми записями, вхо-
дящими в набор.
К сожалению, SQL, в настоящее время, недостаточно стандартизирован.
Но так как речь будет идти только об основных операторах языка, расхождение
в синтаксисе между диалектами невелико.
Общие правила языка:
1) язык SQL нечувствителен к регистру. Можно писать – Select, а можно –
SELECT. Но, согласно общепринятому стилю программирования, операторы (и
другие зарезервированные слова) в SQL следует писать прописными буквами;
2) если используется программа из нескольких операторов, то в конце ка-
ждого оператора надо ставить ";". Если используется только один SQL-
оператор, то ";" в конце его не обязательна.
С точки зрения прикладного интерфейса существуют две формы языка
SQL: интерактивный и встроенный.
Интерактивный SQL используется в специальных утилитах (типа WISQL
или DBD), позволяющих в интерактивном режиме вводить запросы с использо-
ванием команд SQL, посылать их для выполнения на сервер и получать резуль-
таты в предназначенном для этого окне. Встроенный SQL состоит из команд
SQL, встроенных внутрь программ, обычно написанных на каком-то другом
языке (Паскаль, С, C++ и др.). Это делает программы, использующие такие
языки, более мощными, гибкими и эффективными, обеспечивая их применение
для работы с данными, хранящимися в реляционных БД. При этом, однако,
требуются дополнительные средства интерфейса SQL с языком, в который он
встраивается.
Мы не будем приводить точный синтаксис команд SQL, вместо этого рас-
смотрим их на многочисленных примерах, что намного более важно для пони-
мания SQL, чем точный синтаксис, который можно посмотреть в документации
на конкретную СУБД.

2. Состав языка SQL


В язык SQL в качестве составных частей входят:
 язык определения данных (Data Definition Language, DDL);
 язык манипулирования данными (Data Manipulation Language, DML);
 язык управления данными (Data Control Language, DCL);
 язык управления транзакциями (Transaction Control Language, TCL).
122 Лекция 8. ВВЕДЕНИЕ В SQL

DDL: работа со структурой DML: работа с данными таблиц

– SELECT
– CREATE
– INSERT
– ALTER
– UPDATE
– DROP
SQL – DELETE

DCL: работа с правами ТCL: работа с транзакциями


– GRAND – BEGIN TRANSACTION
– REVOKE – COMMIT
– DENY – ROLLBACK
Подчеркнем, что это не отдельные языки, а различные операторы одного
языка. Такое деление проведено только лишь с точки зрения различного функ-
ционального назначения этих операторов.
Каждая из этих составляющих имеет свой специфический набор SQL-
операторов.
Рассмотрим операторы этих групп подробнее.
1) Операторы DDL используются для создания и изменения структуры БД
и ее составных частей – таблиц, индексов, представлений (виртуальных таблиц)
и т. п. Основными DDL-операторами являются:
 CREATE – создание объекта БД. Пример оператора для создания таблицы:
CREATE TABLE students (KodSt UNSIGNED NOT NULL Autoincrement PRIMARY KEY,
name CHAR(255) NOT NULL UNIQUE,
group VARCHAR(15) NULL DEFAULT NULL)
Таблица с именем students будет состоять из трех полей: 1) KodSt – ключе-
вое поле типа счетчик (слова PRIMARY KEY указывают на то, что данное поле
входит в первичный ключ); 2) name – текстовое поле (до 255 символов, размер
указывается только для строковых типов) с неповторяющимися значениями
(UNIQUE) и обязательное для заполнения (NOT NULL); 3) group – текстовое поле,
необязательное для заполнения (ключевое слово DEFAULT задает значение поля
по умолчанию).
Для создания БД надо использовать оператор CREATE DATABASE, а для
создания индекса – CREATE INDEX;
 ALTER – изменение объекта. Пример оператора для добавления нового
поля dateВirth в таблицу students:
ALTER TABLE students ADD COLUMN dateВirth DATE NULL AFTER name;
Вставленное поле для даты рождения является необязательным для заполне-
ния и будет вставлено после поля name.
Еще один пример изменения структуры таблицы:
ALTER TABLE students DROP dateВirth ADD Age INTEGER;
Этот запрос удалит из таблицы students поле dateВirth и добавит целочислен-
ное поле Age с данными о возрасте студентов;
 DROP – удаление объекта БД. Пример оператора для удаления таблицы:
DROP TABLE students;
Лекция 8. ВВЕДЕНИЕ В SQL 123

2) Операторы DML манипулируют с данными в таблицах БД, не изменяя


структуру таблиц:
 SELECT – выборка строк таблиц, удовлетворяющих заданным условиям.
Выборка фамилии и названия группы студента с id равным 5 из таблицы students:
SELECT name, group FROM students WHERE id=5;
 INSERT – добавление новых строк с данными в таблицы БД. Значения
столбцов должны идти в соответствующем порядке и быть соответствующего
типа.
INSERT INTO students (name, dateВirth, group)
VALUES ("Ткаченко Олег Тарасович", #11.05.1990#, "КT 02.03.17");
Этот оператор добавит новую строку с данными в таблицу students.
Значение формата даты в Access'вской версии SQL записывается в виде
#день.месяц.год#. Например, 21.10.2001 будет выглядеть как #21.10.2001#. В
других СУБД для формата даты могут использоваться кавычки (как для строк)
и может быть изменен порядок расположения составляющих даты.
Кроме этого, можно добавлять в таблицу данные из другой таблицы, вы-
бранные оператором SELECT, например:
INSERT INTO New_Tovar SELECT * FROM Tovar WHERE Сena>10;
 UPDATE – изменение данных в таблицах БД.
Изменение названия группы для студента с id, равным 4:
UPDATE students SET group = "ПЗ 02.03.37" WHERE id=4;
Снижение на 5 % цен товаров с датой реализации меньше двух недель:
UPDATE Tovar SET Сena = Сena*0,95 WHERE Date() – Data < 14;
Функция Date() позволяет определить текущую системную дату.
Примечание. Если не поставить условие для обновления данных (WHERE),
оператор UPDATE установит новое значение для всего столбца.
 DELETE – удаление данных из таблиц БД.
Удаление записи с данными о студенте с id, равным 3:
DELETE FROM students WHERE id=3;
Оператор DELETE следует использовать аккуратно. Если не поставить в
нем условие WHERE, произойдет удаление содержимого всей таблицы.
Заметим, что операторы INSERT, UPDATE, DELETE не возвращают набора
строк – они просто выполняются.
3) Операторы DCL служат для управления правами пользователей по дос-
тупу к данным в многопользовательской среде. По умолчанию, у новых поль-
зователей никаких прав выполнять те или иные действия нет:
 GRANT – назначения прав пользователю.
Назначение права выборки из таблицы student пользователю user2:
GRANT SELECT ON student TO user2;
 REVOKE – отмена привилегий как запрещающих, так и разрешающих,
назначенных пользователю при помощи инструкции GRANT.
Отменить разрешение на выборку пользователю user2:
REVOKE SELECT ON student FROM user2;
124 Лекция 8. ВВЕДЕНИЕ В SQL

 DENY – явное лишение пользователя определенной привилегии.


Запретить права выборки из таблицы student пользователя user5:
DENY SELECT ON student TO user5;
4) Операторы TCL управления транзакциями:
 BEGIN TRANSACTION – начать транзакцию;
 COMMIT – принять изменения, внесенные текущей транзакцией;
 ROLLBACK – откат всех изменений, сделанных в контексте текущей тран-
закции;
 SAVEPOINT – поделить транзакцию на более мелкие участки.
Приведем пример транзакции для добавления новой строки в таблицу
student, результаты выполнения которой будут приняты:
BEGIN TRANSACTION;
INSERT INTO student (name, dateВirth, group)
VALUES ("Ткаченко Олег Тарасович", #11.05.1990#, "КT 02.03.17");
COMMIT WORK;
В следующем примере транзакции для удаления записи из таблицы резуль-
тат ее выполнения не будет сохранен, поскольку произойдет откат оператором
ROLLBACK:
BEGIN TRANSACTION;
DELETE FROM student WHERE id=3;
ROLLBACK WORK;
Таким образом, язык SQL используется для реализации всех функциональ-
ных возможностей, предоставляемых СУБД.
К функциональным возможностям SQL относятся:
 организация данных – SQL предоставляет пользователю возможность
изменять структуру представления данных, а также устанавливать от-
ношения между элементами БД;
 выборка данных – SQL дает пользователю или приложению возмож-
ность извлекать из БД содержащуюся в ней информацию и пользоваться
ею;
 обработка данных – SQL дает пользователю или приложению возмож-
ность изменять БД, т. е. добавлять в нее новые данные, а также удалять
или модифицировать имеющиеся данные;
 управление доступом – с помощью SQL можно ограничить возможно-
сти пользователя по выборке и изменению данных и защитить их от не-
санкционированного доступа;
 совместное использование данных – SQL позволяет координировать со-
вместное использование данных пользователями, которые работают па-
раллельно, чтобы они не мешали друг другу;
 целостность данных – SQL позволяет обеспечить целостность БД, за-
щищая ее от разрушения из-за несогласованных изменений или отказа
системы.
Лекция 8. ВВЕДЕНИЕ В SQL 125

Вопросы для самопроверки


1. Какое предназначение SQL? Какие типы запросов по работе с данными
таблиц позволяет создавать SQL?
2. Назовите составные части языка SQL.
3. Перечислите DDL-операторы. Какое их предназначение?
4. Какие параметры при создании таблицы задают обязательность наличия
данных в поле и их уникальность?
5. Какое предназначение параметра PRIMARY KEY в операторе CREATE?
6. Какое предназначение оператора DROP? Чем оператор DROP отличается
от оператора DELETE?
7. Какой SQL-оператор используется для создания таблиц? А какой опера-
тор используется для создания новых полей в таблице?
8. Какое предназначение оператора ALTER? Чем оператор ALTER отличает-
ся от оператора INSERT?
9. Какой SQL-оператор используется для изменения данных в таблицах?
А какой оператор используется для изменения структуры самих таблиц?
10. Перечислите DML-операторы. Какое их предназначение?
11. Каким образом команда INSERT используется для добавления данных из
одной таблицы в другую?
12. Какой формат SQL-операторов UPDATE, INSERT и DELETE?
13. Перечислите DML-операторы. Какое их предназначение?
14. Какой SQL-оператор используется для удаления таблиц? А какой опера-
тор используется для удаления данных из таблицы?
15. Перечислите TCL-операторы. Какое их предназначение?
126

Лекция 9. Оператор выборки SELECT

1. Формат оператора SELECT.


2. Примеры запросов с обязательными параметрами SELECT и FROM.
3. Создание запросов с условиями.
4. Сортировка выбираемых полей.
5. Запросы по нескольким таблицам.
6. Использование параметра GROUP BY.
7. Операция объединения UNION.
8. Вложенные запросы.

1. Формат оператора SELECT


Основное предназначение БД отвечать на запросы пользователей. Опера-
тор выборки SELECT является самым важным и чаще всего используемым опе-
ратором языка SQL. Он предназначен для выборки информации из таблиц БД.
Упрощенный синтаксис оператора SELECT выглядит следующим образом.
SELECT [DISTINCT] <список атрибутов>
FROM <список таблиц>
[WHERE <условие выборки>]
[ORDER BY <список атрибутов>]
[GROUP BY <список атрибутов> [HAVING <условие>]]
[UNION <выражение с оператором SELECT];
В квадратных скобках указаны необязательные параметры в запросе. Клю-
чевое слово SELECT сообщает базе данных, что данная запись является запро-
сом на извлечение данных. После слова SELECT через запятую перечисляются
наименования полей (список атрибутов), содержимое которых запрашивается.
Список выбираемых атрибутов может содержать имена конкретных атрибутов,
* (все поля), вычисления, литералы и агрегатные функции. Обязательным клю-
чевым словом в запросе SELECT является слово FROM (из какой таблицы извле-
кать). За ключевым словом FROM указывается список разделенных запятыми
имен таблиц, из которых извлекается информация.
За кажущейся простотой синтаксиса оператора SELECT скрывается огром-
ное богатство его возможностей. Нам важно научиться использовать это богат-
ство! В качестве информационной основы для примеров запросов будем ис-
пользовать БД "Учебный процесс в вузе", рассмотренную в лекции 2 на рис. 2.1.

2. Примеры запросов с обязательными параметрами SELECT и FROM


Обязательными ключевыми словами в любом операторе SELECT являются
SELECT и FROM.
1) Использование * в запросе указывает на то, что должны выбираться все
поля из указанной таблицы целиком и в том же порядке, как они определены в БД:
SELECT * FROM Студент
Этот оператор выберет все записи (строки) таблицы Студент, т. е. вернет
копию таблицы Студент.
Лекция 9. ОПЕРАТОР ВЫБОРКИ SELECT 127

2) Если же пользователю не нужна вся таблица, он может указать, какие


атрибуты необходимо выбирать и в каком порядке, расположив имена атрибу-
тов после инструкции SELECT и разделив их запятыми:
SELECT Фамилия, Имя, НомерЗачетнойКнижки FROM Студент;
3) Использование DISTINCT позволяет выбрать из указанных полей значе-
ния без повторов (дубликатов). Например, сформировать перечень всех воз-
можных должностей без повторений из таблицы Преподаватель:
SELECT DISTINCT Должность FROM Преподаватель;
4) Вычисляемые поля. SQL позволяет создавать "на лету" поля, значения
в которых строятся на основе какого-либо выражения, в котором участвуют
значения "реальных" полей. Такое поле называется вычисляемым. Например,
вычислим для преподавателей значение премии в размере 20 % от оклада:
SELECT FIO, Оклад * 0.20 AS Премия FROM Сотрудники
В этом примере для вычисляемого поля Премия, значения которого построены
на основе поля Оклад, использовалась арифметическая операция умножения.
Кроме нее могут использоваться и другие арифметические операции: +, –, *, /.
При выводе на экран имена полей можно переименовать с помощью пара-
метра AS. Этот же параметр используется для присвоения имен вычисляемым
полям:
SELECT (2014 – ГодРождения) AS Возраст FROM Студент
5) Литералы. Для придания большей наглядности получаемому результа-
ту можно использовать литералы. Литералы – это строковые константы, кото-
рые применяются наряду с наименованиями полей и, таким образом, выступа-
ют в роли "псевдостолбцов". Строка символов, представляющая собой литерал,
должна быть заключена в одинарные или двойные кавычки.
SELECT Должность, Фамилия, "работает на кафедре", Название кафедры
FROM Преподаватель, Кафедра
Результатом выполнения этого запроса будет таблица со строками такого вида:
Должность Фамилия Название кафедры
========= ========= ================= =======================
доцент Петров работает на кафедре информационных технологий
профессор Иванов работает на кафедре высшей математики
6) Конкатенация. Имеется возможность соединять друг с другом два (или
более) поля, имеющих строковый тип, а также соединять их с литералами. Для
этого используется операция конкатенации (||). Например, формирование спи-
ска адресов всех студентов:
SELECT "Студент(ка) " || Фамилия || " проживает по адресу: " || Адрес FROM Студент
Результатом выполнения этого запроса будет таблица с одним столбцом такого
вида:
Студент(ка) Сидоров проживает по адресу: г. Одесса, ул. Манежная, 2, к. 23
Студент(ка) Федорова проживает по адресу: г. Котовск, ул. Мира, 120, кв. 7
Примечание. В Access и некоторых других СУБД для конкатенации строк
используется знак &.
7) Агрегатные функции (совокупные характеристики). Оператор SELECT
позволяет возвращать не только множество полей, но и некоторые совокупные
характеристики, вычисленные по всем или по указанным записям таблицы. Аг-
128 Лекция 9. ОПЕРАТОР ВЫБОРКИ SELECT

регатные функции выполняют вычисление на наборе значений и возвращают


одиночное значение. Итак, для вычисления совокупных характеристик могут
использоваться такие агрегатные функции:
– COUNT – вычисляет количество записей, удовлетворяющих заданному
условию;
– MIN – выбирает наименьшее значение указанного поля;
– MAX – выбирает наибольшее значение указанного поля;
– SUM – вычисляет суммарное значение числового поля;
– AVG – вычисляет среднее значение числового поля.
Примеры:
SELECT COUNT(*) FROM Студент
Этот оператор вычислит общее количество студентов в таблице Студент.
SELECT COUNT (Distinct ДатаСдачи) FROM Успеваемость
Оператор вычислит количество дней сессии, в которые происходила сдача эк-
заменов.
SELECT AVG (БалПриПоступлении) AS СреднийБал FROM Студент
Вычисление среднего бала при поступлении для всех студентов.
При использовании совокупных характеристик надо учитывать, что в спи-
ске возвращаемых значений после ключевого слова SELECT могут быть указа-
ны либо имена полей, либо совокупные характеристики, но не могут фигуриро-
вать одновременно и те и другие без наличия группировки. Это очевидно, по-
скольку оператор может возвращать или множество записей или итоговое (на-
пример, суммарное) значение и нельзя совместить разнотипные данные.
Смешение в одном операторе полей и совокупных характеристик возмож-
но, если использовать группировку записей, задаваемую ключевыми словами
GROUP BY (см. п. 6). После этих ключевых слов перечисляются все поля, входя-
щие в список SELECT. В этом случае смысл совокупных характеристик изменя-
ется: они проводят вычисления не по всем записям таблицы, а по тем, которые
соответствуют одинаковым значениям указанных полей.

3. Создание запросов с условиями


Далеко не всегда нужно выбирать все строки таблицы. Если пользователю
нужна какая-то конкретная информация, то он может ограничить результи-
рующий набор строк, используя дополнительные условия (уточняя запрос).
Для установки условия используется ключевое слово WHERE и набор логи-
ческих операций для построения логического выражения:
> больше;
>= больше либо равно;
< меньше;
<= меньше либо равно;
= равно;
<> не равно (в некоторых СУБД используется знак !=);
AND логическое "И" (умножение);
OR логическое "ИЛИ" (сложение);
NOT логическое "НЕ" (отрицание);
Лекция 9. ОПЕРАТОР ВЫБОРКИ SELECT 129

BETWEEN принадлежность диапазону;


IN проверка на принадлежность множеству;
LIKE проверка на соответствие шаблону;
IS NULL проверка на равенство значению NULL (пустые ячейки).
Результатом логического выражения в SQL может быть либо истина, либо
ложь, либо NULL (когда любая из частей выражения равна NULL). Строка будет
включаться в результирующий набор только в том случае, если результат про-
верки условий отбора равен истине.
Приведем несколько примеров оператора SELECT с разными условиями.
1) Выбрать студентов 1990 года рождения со значением вступительного
бала от 180 до 200:
SELECT Фамилия, Имя, НомерЗачетнойКнижки FROM Студент
WHERE ГодРождения = 1990 AND
(БалПриПоступлении >= 180 AND БалПриПоступлении <=200)
Этот же запрос можно сформировать следующим образом:
SELECT Фамилия, Имя, НомерЗачетнойКнижки FROM Студент
WHERE ГодРождения = 1990 AND
(БалПриПоступлении BETWEEN 180 AND 200)
2) Вычислить общее количество студентов в группе с кодом 2:
SELECT COUNT(*) FROM Студент WHERE КодГруппы=2
3) Выбрать преподавателей, работающих на должности доцента или профес-
сора без ученой степени:
SELECT Фамилия, Имя, Отчество FROM Преподаватель
WHERE Должность IN ("доцент", "профессор") AND УченаяСтепень IS NULL
4) Выбрать всех преподавателей, о дате поступления на работу которых ни-
чего не известно:
SELECT * FROM Преподаватель WHERE ДатаПоступления IS NULL
5) Выбрать сотрудников, со дня поступления на работу которых прошло не
более года. Текущую дату можно получить с помощью функции Date(). Напом-
ним, что в Access'вской версии SQL значения даты записываются в формате
#день.месяц.год# (например, 12.10.2001 будет выглядеть как #12.10.2001#). В
других СУБД для формата даты могут использоваться кавычки (как для строк)
и быть изменен порядок расположения составляющих даты и разделители меж-
ду ними:
SELECT * FROM Преподаватель WHERE Date() – ДатаПоступления < 365
6) Выбрать всех студентов, фамилии которых лежат в диапазоне от буквы 'В'
до 'О':
SELECT * FROM Студент WHERE Фамилия BETWEEN 'В' AND 'О'
Сравнение текстовых полей осуществляется согласно ASCII-кодов символов.
Рассмотрим подробнее параметр LIKE, который реализует поиск по шаблону:
* – обозначает, что в данной позиции может присутствовать любое количест-
во любых символов (в некоторых СУБД используется символ %);
? – обозначает, что в данной позиции обязан присутствовать один любой
символ (в некоторых СУБД применяется символ _);
130 Лекция 9. ОПЕРАТОР ВЫБОРКИ SELECT

# – обозначает, что в данной позиции обязана присутствовать одна любая


цифра;
[a – z] – означает, что в данной позиции обязан присутствовать один символ
из указанного диапазона;
[dfaf] – означает, что в данной позиции обязан присутствовать 1 символ из
указанного множества;
[!safgwe] – означает, что в данной позиции обязан присутствовать один сим-
вол, не входящий в указанный диапазон.
7) Выбрать из таблицы тех студентов, в фамилии которых есть не менее трех
букв 'а':
SELECT Фамилия, Имя FROM Студент
WHERE Фамилия LIKE "*а*а*а*"
8) LIKE удобно использовать при поиске значений, точное написание кото-
рых у разработчика запроса вызывает затруднение из-за забывчивости. Предпо-
ложим, что Вы не уверенны, как были записаны имена некоторых студентов Але-
на или Елена. Вы можете просто использовать ту часть, которую Вы знаете и
групповые символы, чтобы находить все возможные варианты:
SELECT * FROM Студент WHERE Имя LIKE "?лена";

4. Сортировка выбираемых полей


Для сортировки результирующих строк в операторе SELECT используется
параметр ORDER BY с необязательным параметром ASC (стоит по умолчанию) –
сортировка по возрастанию (в алфавитном порядке для строк) или DESC – сор-
тировка по убыванию. Приведем несколько примеров.
1) Выбрать поля КодСтудента, Фамилия и Имя из таблицы Студент с сорти-
ровкой по фамилии и имени в алфавитном порядке:
SELECT КодСтудента, Фамилия, Имя FROM Студент ORDER BY Фамилия, Имя
2) Выбрать студентов, отсортировав их в порядке убывания вступительно-
го бала (первичная сортировка) и по возрастанию (в алфавитном порядке) фа-
милий (вторичная сортировка):
SELECT * FROM Студент ORDER BY БалПриПоступлении DESC, Фамилия ASC
Таким образом, все рассмотренные нами запросы на выборку данных под-
чиняются строгой структуре:
1) сначала после ключевого слова SELECT указываются те поля, которые
надо выбрать и то, как их отобразить;
2) после ключевого слова FROM указывается имя таблицы (или нескольких
таблиц) для выборки;
3) затем после ключевого слова WHERE записывается условие отбора за-
писей;
4) и только потом записывается параметр ORDER BY для сортировки вы-
бираемых полей.
Лекция 9. ОПЕРАТОР ВЫБОРКИ SELECT 131

5. Запросы по нескольким таблицам


В запросе можно объединять данные из двух или более таблиц. Дело в том,
что пользователю обычно необходимо извлечь как можно более полную ин-
формацию из базы данных, а в реляционных БД для этого зачастую приходится
обращаться к нескольким таблицам одновременно. Для этого необходимо ука-
зать, какие столбцы и из какой таблицы нужно выбирать. В большинстве СУБД
синтаксис обращения к столбцам таблицы выглядит таким образом:
Имя_таблицы.Имя_столбца (если столбцы имеют уникальные названия в преде-
лах запроса, то имя таблицы указывать необязательно).
Например, сформируем запрос для выбора фамилий и имен всех студентов
с указанием полного обозначения группы, в которой они обучаются:
SELECT Фамилия, Имя, ОбозначениеГруппы FROM Студент, Группа
WHERE Студент.КодГруппы = Группа.КодГруппы
Этот запрос вернет список фамилий и имен студентов из таблицы Студент и для
каждого студента – название группы из таблицы Группа, т. е. произойдет соеди-
нение таблиц.
Если не указать в этом запросе связку между таблицами, то вместо строк,
соответствующих друг другу, будет получено их декартово произведение, т. е.
всевозможные комбинации каждой строки одной таблицы с каждой строкой дру-
гой таблицы (в нашем случае всевозможные комбинации фамилий, имен и назва-
ний групп). А для получения нормального (неизбыточного) результата при вы-
полнении многотабличных запросов необходимо, чтобы все участвующие в за-
просе таблицы были связаны между собой. Это означает, что для любой таблицы,
участвующей в запросе, должна существовать связь с любой другой таблицей из
этого же запроса (связь может быть как прямой, так и через другие таблицы).
Соединять можно несколько таблиц БД. Если имена полей повторяются в
двух таблицах, то перед именем поля пишется имя таблицы с точкой. Сформи-
руем запрос, который соединит четыре таблицы. Для выборки фамилий студен-
тов и экзаменующих их преподавателей, а также сведений об оценке и дате эк-
замена можно воспользоваться таким запросом:
Select Студент.Фамилия, Преподаватель.Фамилия, Оценка, ВидСдачи, ДатаСдачи
From Студент, Успеваемость, УчебныйПлан, Преподаватель
Where Студент.КодСтудента=Успеваемость.КодСтудента AND
Успеваемость.КодУчебногоПлана= УчебныйПлан.КодУчебногоПлана AND
УчебныйПлан.КодПреподавателя= Преподаватель.КодПреподавателя
Этот запрос сформирует таблицу из пяти столбцов из четырех разных таблиц.
Заметим, что хотя названия таблиц перед именами столбцов достаточно
информативны, постоянное их использование довольно громоздко. Для облег-
чения конструкций в SQL существует понятие алиасов (alias) – псевдонимов
имен таблиц. Псевдонимы используются, в основном, для визуального упроще-
ния текста запросов. Например, предыдущий запрос можно записать в виде:
Select Т1.Фамилия, Т4.Фамилия, Оценка, ВидСдачи, ДатаСдачи
From Студент Т1, Успеваемость Т2, УчебныйПлан Т3, Преподаватель Т4
Where Т1.КодСтудента=Т2.КодСтудента AND
Т2.КодУчебногоПлана= Т3.КодУчебногоПлана AND
Т3.КодПреподавателя= Т4.КодПреподавателя
132 Лекция 9. ОПЕРАТОР ВЫБОРКИ SELECT

Например, для выбора списка дисциплин, лекции на которых читают пре-


подаватели с ученым званием доцент или профессор, запрос может иметь вид:
SELECT НаименованиеПредмета, ВидЗанятия, Фамилия, УченоеЗвание
FROM Предмет T1, УчебныйПлан Т2, Преподаватель Т3
WHERE T1.КодПредмета= Т2.КодПредмета
AND Т2.КодПреподавателя=Т3.КодПреподавателя
AND ВидЗанятия="лекция" AND УченоеЗвание IN ("доцент", "профессор");
При построении многотабличных запросов зачастую требуется использо-
вание агрегатных функций. Например, необходимо определить количество по-
ставленных оценок каждым преподавателем за последние полгода.
SELECT Фамилия, COUNT(Оценка) AS КоличествоОценок
FROM Преподаватель Т1, УчебныйПлан Т2, Успеваемость Т3
WHERE Т1.КодПреподавателя = Т2.КодПреподавателя
AND Т2.КодУчебногоПлана = Т3.КодУчебногоПлана
AND Abs(Date() – Успеваемость.ДатаСдачи) < 366 / 2
GROUP BY КодПреподавателя
Такой запрос произведет группировку по преподавателям и вычислит количе-
ство оценок для каждого преподавателя. В этом запросе понадобилась таблица
УчебныйПлан как промежуточное звено между данными о студентах и оценках.
Здесь была использована самая естественная и распространенная связка между
таблицами – через внешний ключ.

6. Использование параметра GROUP BY


Параметр GROUP BY позволяет сгруппировать выбранный набор строк для
получения набора сводных строк по значениям одного или нескольких столб-
цов или выражений. При этом будет возвращена только одна строка для каждой
группы. Зачастую GROUP BY используется вместе с той или иной агрегатной
функцией (COUNT, SUM, AVG, MIN, MAX) для каждой из групп.
Сформируем SQL-запрос на показ суммарного количества студентов в ка-
ждой из групп (без повторений), сгруппировав для этого строки таблицы по ко-
ду группы:
SELECT КодГруппы, COUNT(КодСтудента) As КоличествоСтуденовВГруппе
FROM Студент GROUP BY КодГруппы
Этот запрос вернет таблицу, в которой будет два столбца: КодГруппы и Ко-
личествоСтуденовВГруппе с суммарным количеством студентов в соответствую-
щей группе.
Построим таблицу, содержащую названия предметов и суммарные значе-
ния часов для каждого предмета. Данные будут выбираться из двух разных таб-
лиц, связанных по ключевому полю КодПредмета. Записи в таблице отсортиру-
ем по наименованию предметов в алфавитном порядке:
SELECT НаименованиеПредмета, SUM(Часы)
FROM Предмет, УчебныйПлан
WHERE Предмет.КодПредмета = УчебныйПлан.КодПредмета
GROUP BY КодПредмета ORDER BY НаименованиеПредмета
Необязательный параметр HAVING может использоваться вместе с пара-
метром GROUP BY для задания условия на результат агрегатных функций (MAX,
Лекция 9. ОПЕРАТОР ВЫБОРКИ SELECT 133

SUM, AVG, …). HAVING <условие> аналогичен WHERE <условие> за исключением


того, что строки отбираются не по значениям столбцов, а строятся из значений
столбцов, указанных в GROUP BY, и значений агрегатных функций, вычислен-
ных для каждой группы, образованной GROUP BY.
Следующий запрос возвращает список групп, в которых количество сту-
дентов со вступительным балом выше 180 балов превысило 10 человек:
SELECT КодГруппы, COUNT(КодСтудента) As КоличествоСтуденовВГруппе
FROM Студент WHERE БалПриПоступлении >=180
GROUP BY КодГруппы HAVING COUNT(КодСтудента)>10
Необходимо, чтобы в SELECT были заданы только требуемые в выходном
потоке поля, перечисленные в GROUP BY и/или агрегированные значения. Рас-
пространённая ошибка – указание в SELECT столбца, пропущенного в GROUP BY.
Если параметр GROUP BY в SELECT не задан, HAVING применяется к "груп-
пе" всех строк таблицы, полностью дублируя WHERE (допускается не во всех
реализациях стандарта SQL). Следующий запрос вернет список кафедр, в кото-
рых работает более чем 10 человек:
SELECT НазваниеКафедры, COUNT(*)
FROM Преподаватель, Кафедра
WHERE Преподаватель.КодКафедры = Кафедра.КодКафедры
GROUP BY НазваниеКафедры HAVING COUNT(*)>10;

7. Операция объединения UNION


Язык SQL позволяет объединять результаты нескольких сходных запросов
по нескольким таблицам в единую результирующую таблицу с помощью пара-
метра UNION. При выполнении запроса с UNION данные из каждого набора со-
ответствующих полей объединяются в одно поле, поэтому результирующие
данные запроса имеют столько же полей, сколько и каждая инструкция
SELECT по отдельности. Для того чтобы таблицы результатов запроса можно
было объединить с помощью параметра UNION, необходимо соответствие сле-
дующим требованиям:
– таблицы должны содержать одинаковое число столбцов;
– тип данных каждого столбца одной таблицы должен совпадать с типом
данных соответствующего столбца в другой(их) таблице(ах);
– ни одна из таблиц не может быть отсортирована отдельно (однако у
пользователя существует возможность отсортировать объединенный результат
целиком).
Можно обратить внимание на то, что названия столбцов в таблицах могут
не совпадать. В таком случае столбцам даются анонимные имена, которые
можно переопределить.
Например, отобразить все адреса и сотрудников и студентов в одной таб-
лице "сплошным потоком" можно с помощью такого запроса на выборку:
SELECT Фамилия || " " || Имя AS ФИО,
ДомашнийАдрес AS Адрес FROM Преподаватель
UNION SELECT Фамилия || " " || Имя AS ФИО, Адрес AS Адрес FROM Студент
Оператор UNION обладает еще одним чудесным свойством – он удаляет из
получившегося результата повторяющиеся строки. Если же вам чудеса не нуж-
134 Лекция 9. ОПЕРАТОР ВЫБОРКИ SELECT

ны, например, вы подсчитываете итоговую сумму, то от удаления повторяю-


щихся строк можно отказаться, использовав оператор UNION ALL (кстати, за-
прос, использующий UNION ALL вместо UNION, выполняется намного быстрее).
Например, узнать количество преподавателей и студентов можно с помо-
щью такого запроса:
SELECT "Студенты" AS Итог, COUNT(*) AS Количество FROM Студент
UNION ALL SELECT "Преподаватели", COUNT(*) FROM Преподаватель
UNION ALL SELECT "Итого", SUM(Количество)
FROM
(SELECT "Студенты", COUNT(*) AS Количество FROM Студент UNION ALL
SELECT "Преподаватели", COUNT(*) AS Количество FROM Преподаватель )
В приведенном примере результирующая таблица будет состоять из двух
столбцов Итог и Количество и трех строк со значениями общего количества сту-
дентов (в первой строке), преподавателей (во второй строке) и их общего сум-
марного значения (в третьей строке). Рассмотрим подробно несколько необыч-
ных моментов в этом запросе: во-первых, выражение COUNT(*) возвращает ко-
личество строк в таблице (количество записей); во-вторых, запросы можно раз-
мещать внутри инструкции FROM. В последнем случае сначала выполняется
внутренний запрос, создается временная таблица, и оператор SELECT уже вы-
бирает данные из временной таблицы. Инструкция UNION ALL здесь была не-
обязательна, так как строки были умышленно сделаны уникальными (с помо-
щью меток), но ее использование ускоряет выполнение запроса (не тратится
время на поиск дубликатов).
Операцию UNION и UNION ALL можно использовать многократно для объе-
динения результатов трех и более таблиц. Предположим, что A, B, C – запросы,
тогда разумно предположить, что запросы A UNION B UNION C, (A UNION B)
UNION C, A UNION (B UNION C) выполняются с одинаковым результатом. То же
самое можно сказать и о запросах A UNION ALL B UNION ALL C, (A UNION ALL B)
UNION ALL C, A UNION ALL (B UNION ALL C) – эти запросы также выполняются с
одинаковым результатом.
А вот выражения (A UNION ALL) B UNION C и A UNION ALL (B UNION C) бу-
дут выполняться по-разному. В первом случае повторяющихся строк не будет,
а во втором их присутствие вполне законно (последней инструкцией будет
UNION ALL). Поэтому, когда вы производите смешанное объединение результа-
тов запросов, не забывайте о скобках.
Примечание. Во многих СУБД не разрешается при объединении включать
в инструкцию SELECT предложения GROUP BY или HAVING; некоторые СУБД
не позволяют использовать в списке возвращаемых столбцов статистические
функции; более того, некоторые СУБД не поддерживают саму операцию UNION
(например, SQL Server).
8. Вложенные запросы
Стандартом SQL предусматривается возможность вкладывать запросы
друг в друга, что имеет большое практическое применение. Причем это отно-
сится и к операторам, возвращающим совокупные характеристики, и к операто-
рам, возвращающим множество значений.
Лекция 9. ОПЕРАТОР ВЫБОРКИ SELECT 135

Чтобы разобрать тонкости данного понятия, рассмотрим несколько приме-


ров. Оператор выборки всех сведений о группе с максимальным средним балом
в группе будет иметь вид:
SELECT * FROM Группа
WHERE СреднийБал = (SELECT MAX(СреднийБал) FROM Группа)
Оператор выборки сведений из учебного плана о предмете "Информатика":
SELECT * FROM УчебныйПлан
Where УчебныйПлан.КодПредмета=
(SELECT КодПредмета FROM Предмет
WHERE НаименованиеПредмета="Информатика");
До выполнения основного (внешнего) запроса, прежде всего, выполнится
вложенный запрос (подзапрос) в предложении WHERE. Таким образом, вначале
выполнится подзапрос, как если бы он был единственным запросом. В первом
из рассмотренных запросов будут просмотрены все записи таблицы Группа и
выберется запись, для которой значение поля СреднийБал будет максимальным.
Полученный результат подставится в основной запрос и выполнится основной
запрос. В конечном результате, окажется выбранной запись, содержащая ин-
формацию о группе с максимальным средним балом в группе.
Теперь поговорим об ограничении, которое накладывает использование
вложенных запросов... Подзапрос должен выбирать одно и только одно поле.
Более того, тип данных этого поля должен соответствовать типу значения, ис-
пользуемому в основном запросе. К примеру, запрос, представленный ниже,
должен привести к ошибке, так как в нем на выходе подзапрос дает несколько
значений (возвращаются коды двух предметов):
SELECT * FROM УчебныйПлан

Ошибочный
Where УчебныйПлан.КодПредмета=

запрос!
(SELECT КодПредмета FROM Предмет
WHERE НаименованиеПредмета="Информатика"
OR НаименованиеПредмета="Физика");
Таким образом, используя вложенные запросы, основанные на операторах
отношения, необходимо быть уверенным, что конечными выходными данными
подзапроса является только одна строка.
А что делать, если подзапрос вообще не вернет никаких данных, так назы-
ваемый NULL-выход? Это приведет к тому, что подзапрос будет оценен не как
TRUE или FALSE, а как имеющий значение UNKNOWN. Результат UNKNOWN
аналогичен результату FALSE – основной запрос не выберет ни одной строки,
т. е. тоже приведет к NULL-выходу. Например, если допущена ошибка при на-
писании его названия или запрашиваемый предмет отсутствует в БД:
SELECT * FROM УчебныйПлан
Where УчебныйПлан.КодПредмета=
(SELECT КодПредмета FROM Предмет
WHERE НаименованиеПредмета="Культурология");
В некоторых случаях использование оператора IN позволяет сформулиро-
вать вложенные запросы, в результате выполнения которых получается любое
количество строк. Надо оговориться, что операторы BETWEEN, LIKE, IS NULL
к подзапросам применять нельзя. Пример, выбрать фамилии и имена всех сту-
136 Лекция 9. ОПЕРАТОР ВЫБОРКИ SELECT

дентов, которые сдавали экзамены в промежутке между 1 декабря 2014 года и


текущей датой:
SELECT Фамилия || " " || Имя AS ФИО FROM Студент
WHERE КодСтудента IN
( SELECT КодСтудента FROM Успеваемость
WHERE ДатаСдачи >#01.12.2014# AND ДатаСдачи<DATE() );
Возможно построение операторов с использованием нескольких подзапро-
сов, вложенных друг в друга. Рассмотрим реализацию следующего запроса:
"найти всех студентов, кто сдал экзамен по информатике во втором семестре":
SELECT Фамилия || " " || Имя AS ФИО FROM Студент
WHERE Студент.КодСтудента IN
(SELECT КодСтудента FROM Успеваемость
WHERE КодУчебногоПлана=
(SELECT КодУчебногоПлана
FROM УчебныйПлан
WHERE Семестр=2 AND ВидСдачи="экзамен" AND КодПредмета=
(SELECT КодПредмета
FROM Предмет
WHERE НаименованиеПредмета="Информатика" )));

Вопросы для самопроверки


1) Какое предназначение оператора SELECT?
2) Какой формат оператора SELECT? Какие ключевые слова в любом опе-
раторе SELECT являются обязательными?
3) Какое предназначение параметра DISTINCT в SELECT-операторе?
4) Какие арифметические операции могут использоваться для вычисляе-
мых полей в SELECT-операторе?
5) Перечислите доступные при построении запросов агрегатные функции
(совокупные характеристики). Сколько результатов может возвращать
любая агрегатная функция?
6) Перечислите используемые логические операции при формировании ус-
ловий для параметра WHERE.
7) В каких случаях целесообразно использование IS NULL в условиях
SELECT-запросов?
8) В каких случаях используется параметр IN в условиях SELECT-запросов?
9) Каким образом можно в запросе объединять данные двух или более таблиц?
10) Какое предназначение параметра LIKE в условиях оператора SELECT?
11) Какой параметр используется для сортировки результирующих строк в
операторе SELECT? Какие виды сортировки доступны?
12) В каких случаях целесообразно использование параметра GROUP BY в
SELECT-операторе?
13) В чем состоит отличие использования параметров GROUP BY и UNION?
14) Каким требованиям должны соответствовать таблицы, объединяемые с
помощью параметра UNION?
15) Какие ограничения накладываются на использование вложенных запросов?
137

Список литературы
1. Берко А. Ю. Системи баз даних та знань. Книга 2. Системи управління
базами даних та знань : навч. посіб. / Берко А. Ю., Верес О. М., Пасічник В. В.
– Львів : «Магнолія-2006», 2012. – 584 с.
2. Введение в программирование Access. [Электронный ресурс]. – Ре-
жим доступа: http://office.microsoft.com/ru-ru/access-help/HA010341717.aspx?CTT
=1#BMlearnaboutmacros. – Название с экрана.
3. Гайна Г. А. Основи проектування баз даних : навч. посіб. / Гайна Г. А. –
К.: Кондор, 2008. – 200 с.
4. Джелен Б. Сводные таблицы в Microsoft Excel 2010 ; пер. с англ. /
Б. Джелен, М. Александер. – М. : ООО "И.Д. Вильямс", 2011. – 464 с.
5. Знакомство с запросами. [Электронный ресурс]. – Режим доступа:
http://office.microsoft.com/ru/access-help/HA102749599.aspx. – Название с экрана.
6. Експорт даних Access у документ Word. [Електронний ресурс]. – Ре-
жим доступу: http://office.microsoft.com/uk-ua/access-help/HA010341683.aspx #BM2.
– Назва з екрану.
7. Завадський І. О. Основи баз даних : навч. посіб. / Завадський І. О. – К.:
Видавець І. О. Завадський, 2011. – 192 с.
8. Зарицька О. Л. Бази даних та інформаційні системи : метод. посіб. / За-
рицька О. Л. – Житомир : Вид-во ЖДУ ім. І. Франка, 2009. – 132 с.
9. Кузнецов С. Базы данных. Вводный курс. [Электронный ресурс]. –
Режим доступа: http://citforum.ru/database/advanced_intro. – Название с экрана.
10. Михеев Р. VBA и программирование в MS Office для пользователей.
Специальный курс / Михеев Р. – М. : bhv, 2006. – 361 с.
11. Обмен данными с Microsoft Word в системе автоматизации. [Элек-
тронный ресурс]. – Режим доступа: www.taurion.ru/access/15/11. – Название с
экрана.
12. Основи баз даних. СУБД Access 2010 (2013) : посіб. [до вивчення та
практичної роботи] / [Д. А. Покришень, Ю. О. Крєпкий, І. Т. Атрошенко та ін.] –
Чернігів : ТОВ НВП «Інтерсервіс», 2013. – 225 с.
13. Павлов А. Н. Пособие для поддержки практических работ по освое-
нию возможностей СУБД Access 2010 / Павлов А. Н. [Электронный ресурс]. –
Режим доступа: http://pavlov-rags.narod.ru/Accsess2010. – Название с экрана.
14. Ткаченко В. А. Microsoft Access 2007 / Ткаченко В. А. [Электронный
ресурс]. – Режим доступа: http://www.lessons-tva.info/edu/inf-access/ access.html.
– Название с экрана.
15. Фуфаев Э. В. Базы данных : учебн. пособ. для студ. / Э. В. Фуфаев,
Д. Э. Фуфаев. – [7-е изд.] – М. : Издательский центр "Академия", 2012. – 320 с.
16. Хомоненко А. Д. Базы данных : учебник [для высших учебных заве-
дений] / Хомоненко А. Д., Цыганков В. М. , Мальцев М. Г. ; под ред. проф.
А. Д. Хомоненко. – [4-е изд., доп. и перераб.] – СПб. : КОРОНА принт, 2004. –
736 с.
138

Оглавление

Лекция 1. Теория проектирования баз данных .................................................. 3


1. Информационные системы: понятие и возможности ...................................... 3
2. Понятие банка данных, базы данных (БД) и СУБД. Функции СУБД............ 4
3. Классификации СУБД ......................................................................................... 5
4. Модели данных .................................................................................................... 6
5. Этапы проектирования БД ................................................................................ 12
Вопросы для самопроверки .................................................................................. 13
Лекция 2. Реляционные базы данных................................................................. 14
1. Основные элементы реляционных БД............................................................. 14
2. Типы связей между таблицами......................................................................... 16
3. Нормализация..................................................................................................... 18
Вопросы для самопроверки .................................................................................. 22
Лекция 3. Средства управления базами данных в EXCEL ............................ 23
1. Основные операции Excel для работы с таблицами как с базой данных.... 23
2. Сортировка данных............................................................................................ 24
3. Использование фильтров .................................................................................. 25
4. Промежуточные итоги....................................................................................... 30
5. Создание сводных таблиц и диаграмм ............................................................ 31
6. Функции категории "Работа с базой данных"................................................. 35
7. Средства MS Excel для автоматизации документооборота........................... 38
Вопросы для самопроверки .................................................................................. 42
Лекция 4. СУБД ACCESS. Особенности создания таблиц.............................. 43
1. Основные объекты СУБД Access ..................................................................... 43
2. Порядок создания БД в MS Access 2010 ......................................................... 45
3. Типы данных полей ........................................................................................... 48
4. Способы создания таблиц ................................................................................. 50
5. Создание в таблицах полей подстановки ........................................................ 58
6. Создание связей между таблицами.................................................................. 61
Вопросы для самопроверки .................................................................................. 64
Лекция 5. ACCESS. Создание запросов .............................................................. 66
1. Способы формирования запросов.................................................................... 66
2. Создание простого запроса с помощью Конструктора................................ 66
3. Создание простого запроса с помощью Мастера.......................................... 71
4. Создание вычисляемых полей.......................................................................... 72
5. Типы запросов в Access 2010............................................................................ 74
Вопросы для самопроверки .................................................................................. 88
139

Лекция 6. ACCESS. Создание форм, отчетов .................................................... 90


1. Способы создания форм.................................................................................... 90
2. Использование Мастера форм ........................................................................ 91
3. Использование пустой формы.......................................................................... 92
4. Разработка формы в режиме Конструктор .................................................... 93
5. Создание подчиненных форм ........................................................................... 95
6. Создание отчетов ............................................................................................. 100
Вопросы для самопроверки ................................................................................ 105
Лекция 7. Введение в программирование Access............................................ 106
1. Средства программирования в Access ........................................................... 106
2. Создание макросов........................................................................................... 107
3. Создание модулей ............................................................................................ 114
Вопросы для самопроверки ................................................................................ 119
Лекция 8. Введение в SQL ................................................................................... 120
1. Основы языка SQL........................................................................................... 120
2. Состав языка SQL ............................................................................................ 121
Вопросы для самопроверки ................................................................................ 125
Лекция 9. Оператор выборки SELECT ............................................................ 126
1. Формат оператора SELECT ............................................................................ 126
2. Примеры запросов с обязательными параметрами SELECT и FROM....... 126
3. Создание запросов с условиями ..................................................................... 128
4. Сортировка выбираемых полей...................................................................... 130
5. Запросы по нескольким таблицам.................................................................. 131
6. Использование параметра GROUP BY......................................................... 132
7. Операция объединения UNION...................................................................... 133
8. Вложенные запросы......................................................................................... 134
Вопросы для самопроверки ................................................................................ 136
Список рекомендованной литературы ............................................................. 137
140

Учебно-методическое издание

Трофименко Е.Г.
Буката Л.Н.
Швайко И.Г.

Создание и обработка
баз данных

Конспект лекций

Редактор Кодрул Л.А.


Верстка Гардыман Ж.А.

Подписано в печать 4.06.2014.


Объем 8,4 печ. л. Формат 60x88/16 Заказ № 5349
Тираж 50 экз.
Отпечатано в редакционно-издательском центре ОНАС им. А.С. Попова

Украина, 65029, г. Одесса, ул. Ковалевского, 5


ОНАС им. А.С. Попова, 2014

Вам также может понравиться