База данных – это совокупность структурированных и взаимосвязанных данных, относящихся к определенной предметной области.
Для создания, хранения, обработки и коллективного использования информации применяются специальные программные системы, называемые системами управления базами данных (СУБД).
К основным
Основная особенность СУБД – это наличие процедур для ввода и хранения не только самих данных, но и описаний их структуры.
Тщательное проектирование базы данных – первый и очень важный шаг создания базы. Он позволяет избежать затрат, связанных с внесением исправлений в структуру хранящихся данных. Проектирование базы данных начинается с анализа предметной области и выявления требований к ней отдельных пользователей (сотрудников организации, для которых создается база данных). На этапе проектирования выявляются объекты информации и их характеристики, определяются виды данных, требующие регулярного обновления, и способы представления информации на экране и в отчетах, формулируются вопросы, на которые необходимо регулярно отвечать при поиске данных. Это помогает конкретизировать требования к хранимой информации. В любой момент можно изменить структуру хранящейся в базе информации, подкорректировав структуру таблиц и, соответственно, форм и отчетов. За проектирование и поддержку базы данных отвечает администратор базы данных (АБД).
СУБД использует следующие модели и описания:
Трехуровневая архитектура (инфологический, даталогический и физический уровни) позволяет обеспечить независимость хранимых данных от использующих их программ.
Первоначально создается обобщенное неформальное описание создаваемой базы данных. Это описание называют инфологической моделью данных, и оно выполняется с использованием естественного языка, блок-схем, математических формул, таблиц, графиков и других средств. Инфологическая модель отражает предметную область, для которой проектируется база данных, и полностью независима от физических параметров среды хранения данных. Основными конструктивными элементами инфологических моделей являются сущности, связи между ними и их свойства (атрибуты). Инфологическая модель не должна изменяться до тех пор, пока изменения в реальном мире не повлекут за собой изменения предметной области и, следовательно, изменения в модели.
Описание, создаваемое разработчиками базы данных по инфологической модели данных, называют даталогической моделью данных. Конечным результатом даталогического проектирования является описание логической структуры базы данных на ЯОД – языке описания данных конкретной СУБД. При создании даталогической модели данных обеспечивается однозначное соответствие между конструкциями языка описания данных и графическими обозначениями информационных единиц и связей между ними.
В основе каждой СУБД лежит концепция модели данных, то есть некоторой абстракции представления данных. Изначально были успешными две конкурирующие модели – иерархическая и сетевая. Иерархическая БД состоит из упорядоченного набора деревьев. Корпорация IBM разработала и внедрила язык описания данных DL/I (Data Language One), который моделировал данные в иерархической форме (представление данных в форме деревьев). Эта модель была разработана совместно с промышленными предприятиями и предназначалась для хранения и поддержки данных, которые иерархически связаны между собой, например, сметы материалов и списки деталей. Типичным представителем иерархической СУБД является СУБД IMS (Information Management System) компании IBM, первая версия которой появилась в 1968 г.
На рис.8.1 показан пример схемы иерархической БД. Тип записи ФАКУЛЬТЕТ является предком (родительской или исходной записью) для типов записей КАФЕДРЫ и ДЕКАНАТ, а записи КАФЕДРЫ и ДЕКАНАТ – потомки (дочерние или порожденные записи) для записи ФАКУЛЬТЕТ.
Все экземпляры определенного типа порожденной записи, относящиеся к одному экземпляру исходной записи, называются близнецами. Иерархическая модель реализует отношение между исходной и дочерними записями по схеме один-ко-многим., то есть одной родительской записи может соответствовать любое число дочерних. В
(рис 8.1) Схема иерархической модели базы данных
В терминологии IMS вместо термина "запись" использовался термин "сегмент", а под термином "запись базы данных" понималось все дерево сегментов. В 1970 году группа CODASYL, которая разрабатывала стандарты для языка COBOL, создала модель под названием DBTG (Data Base Task Group, группа задач базы данных). Модель DBTG была готова к представлению как иерархических, так и сетевых данных. Однако эта модель была очень сложной, поэтому не имела большого успеха.
Типичным представителем систем, основанных на
(рис 8.2) Схема сетевой модели базы данных
Большинство применяемых сегодня баз данных основаны на реляционной модели. Основная идея реляционной модели – представить произвольную структуру данных в виде двумерных таблиц. Наиболее распространенной в настоящее время настольной реляционной базой данных является MS Access, пример которой рассматривается в разделе 6.3.3.
Реляционная модель впервые была предложена Э.Ф. Коддом (E.F. Codd) в 1970 году. Понятие модели данных, введенное Коддом, впоследствии развил Кристофер Дейт. Согласно Дейту, реляционная модель состоит из трех частей, описывающих разные аспекты реляционного подхода: структурной части, манипуляционной части и целостной части. Данные хранятся в таблицах. Столбцы таблиц называются полями, а строки – записями. В каждом поле может храниться информация только одного типа. Запросы предназначены для манипулирования данными, содержащимися в базе данных.
Кодд определил правила реляционной модели, которые получили название "12 правил Кодда". Позже Кодд добавил "нулевое" правило.
Предложив реляционную модель данных, Э.Ф. Кодд создал и инструмент для удобной работы с отношениями – реляционную алгебру – формальную систему манипулирования отношениями, основными операциями которой являются проекция, соединение, пересечение и объединение.
Реляционная алгебра и
Реляционные базы данных имеют следующие специфические особенности.
При
Теория нормализации основывается на наличии той или иной зависимости между полями таблицы. Определены два вида таких зависимостей: функциональные и многозначные.
Поле В таблицы функционально зависит от поля А той же таблицы в том и только в том случае, когда в любой заданный момент времени для каждого из различных значений поля А обязательно существует только одно из различных значений поля В. Отметим, что здесь допускается, что поля А и В могут быть составными.
Поле В находится в полной функциональной зависимости от составного поля А, если оно функционально зависит от А и не зависит функционально от любого подмножества поля А.
Поле А многозначно определяет поле В той же таблицы, если для каждого значения поля А существует определенное множество соответствующих значений В.
По существу, таблица находится в 2НФ, если она находится в
Таблица находится в первой нормальной форме (
Таблица находится во второй нормальной форме (2НФ), если она удовлетворяет определению
Таблица находится в
Кодд и Бойс обосновали и предложили более строгое определение для 3НФ, которое учитывает, что в таблице может быть несколько ключей. Таблица находится в нормальной форме Бойса-Кодда (НФБК), если и только если любая функциональная зависимость между ее полями сводится к полной функциональной зависимости от возможного ключа.
В следующих нормальных формах (4НФ и 5НФ) учитываются не только функциональные, но и
В настоящее время практически каждый производитель СУБД предлагает собственный программный продукт автоматизированного проектирования. Это Oracle Designer (Oracle), Power Desinger (Sybase) и другие. Демонстрационные версии данных программных продуктов можно загрузить с соответствующих сайтов (www.oracle.com, www.sybase.com). Кроме того, для автоматизированного проектирования представлены решения фирм, не производящих СУБД. Наиболее распространенными являются программные продукты фирмы AllFusion – AllFusion ERwin
Реляционные языки обеспечивают типовые операции по обработке реляционных таблиц, позволяют формулировать логические условия, используемые в операциях выборки, проверку целостности (непротиворечивости) данных взаимосвязанных таблиц. Они оперируют с данными как со множествами, применяя к ним основные операции теории множеств. На входе
Выделяют следующие разновидности языков реляционной алгебры:
dBASe-подобные языки используют базы данных dBASe, Paradox, FoxPro,
Типичным представителем графического реляционного языка является язык
SQL (Structured Query Language) применяется при работе с реляционными базами данных в современных СУБД (ORACLE, dBASE IY, dBASE Y, Paradox, Access и др.). Для отдельных СУБД синтаксис версий языка SQL может различаться.
Язык SQL стал стандартом языков запросов для работы с реляционными базами данных архитектуры "файл-сервер" и "клиент-сервер" и для управления распределенными базами данных. Это реляционно полный язык, предназначенный для работы с базами данных, создания запросов на выборку данных, для выполнения вычислений, для обеспечения целостности баз данных.
С появлением большого числа микрокомпьютеров был разработан ряд СУБД для персональных компьютеров. Наиболее успешной из них была dBase – продукт корпорации Ashton-Tate. Среди ранних персональных СУБД наиболее известны Rbase корпорации Microrim и Paradox от Borland.
В настоящее время в мире используется достаточно большое количество универсальных промышленных СУБД. Среди них можно выделить трех несомненных лидеров (как по уровню развития технологий, так и по объему рынка – они вместе занимают более 90% мирового рынка СУБД). Это СУБД первого эшелона – Oracle, Microsoft SQL Server и IBM DB2. Список СУБД второго эшелона довольно велик, сюда относят такие СУБД, как Sybase, Informix, Ingress, Adabas, Interbase, Progress, Postgres, Cache, Linter,
Обычно база данных хранится в памяти компьютера, за которым работают один или несколько человек, или на выделенном сервере, доступ к которому осуществляется по сети.
Локальными или настольными называют СУБД типа Access, Paradox и т. п. В них определен формат данных, который учитывает параллельное выполнение операций, возможность доступа к БД нескольких пользователей и т. д. Недостатки настольных баз данных становятся очевидными не сразу, а по мере увеличения количества данных и числа пользователей – снижается производительность и учащаются случаи сбоев.
Для решения этих проблем была разработана технология "клиентсервер". В основе этой технологии лежит принцип централизации хранения и обработки данных: вся обработка и хранение данных полностью перекладывается на сервер; машина-клиент посылает запросы, а сервер их выполняет и посылает ответы клиенту.
Рынок корпоративных серверных СУБД представлен Oracle, MS SQL, DB2, Sybase и InterBase. СУБД Oracle остается лидером на рынке хранилищ данных как в отношении доли рынка (48.6%), так и инноваций разработок.
СУБД Oracle реализована для нескольких операционных систем и предлагает полный спектр решений по безопасности для обеспечения конфиденциальности данных, защиты от внутрисистемных угроз и соответствия нормативным документам. Благодаря разработанному Oracle мощному многофакторному контролю доступа привилегированных пользователей, установлению степени конфиденциальности информации, прозрачному шифрованию данных, аудиту, мониторингу и маскировке данных, клиенты могут внедрять надежные решения, не требующие внесения изменений в существующие приложения, экономя время и деньги.
Разделение и сжатие данных в Oracle существенно оптимизирует работу СУБД:
Приложение Oracle Total
В конце восьмидесятых годов Sybase разработала SQL Server и продала его Microsoft. Одним из преимуществ SQL Server является простота его применения, в частности, администрирования. Основным языком запросов является язык Transact-SQL, созданный совместно Microsoft и Sybase.
Для обеспечения доступа к данным Microsoft SQL Server поддерживает ODBC (
SQL Server 2008 обеспечивает высокий уровень безопасности, надежности и масштабируемости для критически важных приложений. SQL поддерживает продукты сторонних компаний по управлению ключами и аппаратными модулями безопасности. Динамическое шифрование всей базы данных, файлов данных и файлов журналов не потребует никаких изменений в имеющихся приложениях.
SQL Server 2008 позволяет основному и зеркальному серверу прозрачно устранять последствия ошибок на страницах данных, запрашивая свежую копию "подозрительной" страницы с зеркального сервера незаметно для приложений и конечных пользователей
За счет применения сжатия данные хранятся более эффективно и занимают меньше места в хранилище. Сжатие также обеспечивает заметный прирост производительности на задачах, связанных с большим количеством операций ввода/вывода, как, например, при работе с хранилищами данных.
SQL Server 2008 имеет развитые средства создания корпоративной отчетности, позволяя без труда создавать отчеты любого размера и сложности, а также организовывать общий доступ к ним. Предоставить нужные сведения также можно с помощью развертывания отчетов в Интернете.
Средства упреждающей аналитики SQL Server 2008, основанные на мощном
К их числу относятся:
В настоящее время разработано большое количество бесплатных СУБД. Наиболее популярными и распространенными среди них являются MySQL и PostgreSQL. Обе СУБД довольно динамично развиваются и повсеместно используются
MySQL – это система управления реляционными базами данных. Сейчас это самый распространенный сервер баз данных в сети Интернет. MySQL – быстрая, но немного ограниченная СУБД. Хорошо подходит для проектов, не требующих сложных баз (например, для веб-проектов).
PostgreSQL отвечает всем современным стандартам СУБД. Больше подходит для серьезных проектов, требующих сложных баз данных. По скорости работы PostgreSQL уступает MySQL. Кроме того, администрирование PostgreSQL достаточно сложно.
В небольших фирмах и компаниях, в которых нет необходимости использовать сервер и закупать дорогостоящие базы данных типа "клиент-сервер", применяются локальные (настольные) СУБД. Основными представителями таких СУБД являются Microsoft Access, Paradox,
Paradox и Access входят в офисные пакеты. СУБД Paradox, выпускаемая компанией Corel, входит в пакет WordPerfect Office. СУБД Access выпускается Microsoft и входит в состав MS Office.
СУБД dBase IV и
Microsoft Access в настоящее время является одной из самых популярных настольных систем управления базами данных. Отметим несколько причин такой популярности.
Шаблоны баз данных можно использовать без изменений или настроить в соответствии с конкретными потребностями. Например, шаблоны базы данных помогают сформировать таблицы из имеющихся вариантов таблиц и предоставляют набор форм и отчетов, соответствующих создаваемому типу базы.
При помощи мастеров можно создавать таблицы, запросы, формы и отчеты, основываясь на типовых решениях. Мастера ведут разработчика по шагам, высвечивая на экране вопросы и подсказывая, что необходимо сделать, или предлагая возможность выбора из имеющихся образцов. Используя мастер запросов, можно сконструировать простой запрос или запрос на основе главной и связанной таблиц. Мастер форм предлагает свободный выбор полей, отображаемых на форме. Кроме того, можно указать способ группировки и сортировки данных, а также включить в форму поля из нескольких таблиц или запросов, при условии, что заранее заданы отношения между этими таблицами и запросами. Мастер отчетов, подобно мастеру форм, создает отчет на основании ответов пользователя. Построенный таким образом отчет можно использовать без изменений или далее настроить в соответствии со своими требованиями.
Конструкторы предназначены для создания объектов произвольной структуры. Конструктор ("построитель") выражений помогает быстро и без ошибок создать сложное выражение, используемое в критериях или в вычисляемых полях. Построитель выражений упрощает доступ к именам полей и элементов управления и ко многим встроенным функциям, доступным при создании выражений. С помощью построителя выражений можно выбирать готовые выражения для отображения номеров страниц, текущей даты и времени. Построитель выражений можно запустить из большинства мест, где выражения вводятся вручную, например, при задании свойств полей таблицы. Для запуска построителя выражений достаточно нажатия на кнопку Построить (
).
(рис 8.3) Типы объектов MS Access в области переходов
Интерфейс работы с объектами базы данных унифицирован. Для объекта любого типа предусмотрены стандартные режимы работы: создание и изменение структуры объекта, запуск или просмотр объекта (собственно работа с содержимым объекта). Реализованная в СУБД система управления объектами базы данных позволяет гибко и оперативно переходить из режима конструирования объекта в режим непосредственной его эксплуатации и обратно. Для открытия объекта базы данных можно использовать команды контекстного меню, которые зависят от типа объекта.
В процессе разработки конкретного программного приложения в среде MS Access можно выделить типичные этапы, относящиеся уже к непосредственному конструированию базы данных, которое выполняется после предварительного проектирования. Между перечисляемыми ниже этапами существуют обратные связи, подразумевающие возврат к более ранним шагам, исходя из вновь открывшихся обстоятельств, которые невозможно было заранее учесть или предвидеть.
База данных MS Access является реляционной базой данных и состоит из множества взаимосвязанных таблиц, которые и представляют отношения. Столбцы таблицы отражают сведения, одинаковым образом характеризующие объекты реального мира, которые моделируются с использованием данной таблицы. Для каждого свойства выделяется отдельный столбец – поле таблицы. Строки таблицы содержат информацию об экземплярах реальных объектов и называются записями.
Далее будет рассматриваться построение базы данных для задачи автоматизации расчетов по платежам за разговоры по мобильным телефонам. Объектами этой задачи являются тарифы со стоимостями услуг, абоненты, которые разговаривают по телефону, и произведенные звонки. Каждый абонент характеризуется номером телефона и тарифом. Последний, в свою очередь, имеет название, перечень предоставляемых услуг и их стоимость. Каждый звонок предполагает наличие двух абонентов, определяется оказанной услугой, датой и продолжительностью разговора. Следует оговориться, что указанные объекты и их свойства не охватывают полностью предметную область задачи, т. е. все возможные объекты системы платежей за звонки. Небольшая часть этой системы и соответствующие ей данные рассматриваются здесь в качестве примера построения базы данных.
Хранить в одной большой таблице абсолютно все поля предметной области не очень удобно. Предпочтительно, чтобы каждая таблица содержала данные, ограниченные определенной тематикой. Поэтому в соответствии с выявленными объектами в базе данных будут три таблицы – по тарифам, по абонентам, по звонкам.
Далее на логическом уровне описываются структуры потоков информации в автоматизируемой предметной области, т. е. выделяются поля таблиц данных. Для задачи об оплате звонков по мобильным телефонам таблицы могут иметь следующие структуры. Таблица Тарифы будет содержать код и название тарифа, код и название услуги, стоимость услуги за единицу времени. Таблица Абоненты должна содержать характеристики абонентов, такие как Код абонента, Номер телефона, ФИО, Код тарифа. Наконец, таблица Звонки должна содержать Код звонка, Номер телефона звонившего (первого абонента), Номер телефона второго абонента, Код услуги, Дата и продолжительность разговора.
После проектирования таблиц и их полей следует определить первичный ключ каждой таблицы и провести анализ предполагаемых таблиц на соответствие нормальным формам (хотя бы первым трем). Например, в базу данных задачи об оплате звонков после нормализации добавлены еще две таблицы – таблица с перечнем услуг (таблица Услуги) и таблица со стоимостью каждой услуги в рамках существующих тарифов (таблица Контакты). Это позволяет избежать дублирования информации о тарифах и услугах. Структуры таблиц показаны на схеме базы данных (рис.8.5). Первичные ключи таблиц помечены слева изображением ключа. Заметим, что поля Код абонента, Код звонка, Код тарифа и Код услуги являются полями, обеспечивающими уникальную идентификацию записей в соответствующих таблицах. В таблице Контакты определен
После выполненного проектирования будущих таблиц необходимо выполнить описание структур таблиц средствами СУБД. Это можно сделать в режиме конструктора. Можно использовать встроенные шаблоны таблиц или списков SharePoint, например, шаблоны "Контакты", "Задачи", "Вопросы" и "События". Если имена полей выбранного шаблона недостаточно информативны, их можно изменить. В режиме конструктора можно менять любые свойства полей, менять поля местами или добавлять новые поля. Использовать конструктор для модификации таблиц можно в любое время, даже после ввода данных в таблицу.
Поля таблицы и таблица в целом являются объектами базы данных и обладают целым рядом свойств, которые облегчают ввод и контроль данных. Значения свойств поля определяют отображение поля и допустимые действия с ним. Значения свойств таблицы определяют ее поведение. Для поля задаются тип поля, его размер, маска ввода, значения по умолчанию, ограничения на значения, сообщение в случае ошибки (рис.8.4). Для таблиц, например, определяются порядок сортировки и условия фильтрации, т.е. может задаваться вывод записей в алфавитном порядке значений некоторого текстового поля или вывод записей в порядке убывания дат. Свойства таблицы видны в окне свойств, доступном в режиме конструктора таблицы.
Поля могут иметь любой используемый в офисных приложениях тип данных: Счетчик, Текстовый, Числовой, Дата/время, Логический, Поле объекта OLE. Возможно использование поля комментариев (Memo). MS Access автоматически накладывает условия на значения, определяемые типом поля, например, не допускается ввод текста в числовые поля. Установка типа данных одновременно определяет набор дополнительных атрибутов соответствующего поля. В каждом поле могут храниться данные только одного типа. Изменение типа поля после ввода данных в таблицу может привести к потере данных.
(рис 8.4) Поля таблицы и их свойства
Если поле используется в качестве первичного ключа таблицы, то оно может иметь любой тип данных. Часто применяется тип данных Счетчик, который гарантирует, что при вводе данных в это поле автоматически попадает номер записи в возрастающей последовательности. Можно задействовать в качестве первичного ключа определенный пользователем набор полей. МЕМО-поля и поля объекта OLE не могут быть первичными ключами. Во время ввода данных в поля первичного ключа MS Access автоматически следит за тем, чтобы в поля вводились уникальные или повторяющиеся значения в соответствии с заданным свойством Индексированное поле. Ключи не только идентифицируют записи таблиц, но и используются для установки межтабличных связей.
Для увеличения скорости доступа к данным поле, не объявленное первичным ключом, может индексироваться (вторичный ключ). Пользователь может создать сколько угодно индексов. Индексы создаются при сохранении макета таблицы и автоматически обновляются при вводе и изменении записей. Пользователь может в любое время добавить новые или удалить ненужные индексы в окне конструктора таблиц. Следует иметь в виду, что индексы замедляют изменение, ввод и удаление данных, поэтому не рекомендуется создавать избыточные индексы.
Маска ввода позволяет контролировать ввод данных, и также автоматически добавлять при вводе данных фрагменты значений, увеличивая тем самым скорость ввода данных. Маска ввода разрешает ввод значений в соответствии с некоторым форматом, ограничивая тем самым возможности ввода ошибочных символов и обеспечивая соответствие вводимых символов определенному представлению и заданному типу значений. Эффективным способом контроля корректности вводимых данных является ограничение множества допустимых значений поля (свойство Условие на значение).
При проектировании базы данных можно предусмотреть возможности работы с внешними данными. Это импорт данных и связь с внешними таблицами данных. В случае импорта происходит создание дубликата внешних данных во вновь создаваемой таблице. К импортируемым данным могут применяться все средства манипуляции данными, обеспечивается быстродействие при обращении к ним и независимость от исходного источника данных. Однако возникают проблемы, связанные с поддержкой актуальности и соответствия друг другу двух копий одной и той же информации. Eсли актуальность данных является критичным фактором, то необходимо использовать связь с внешними данными. В этом случае в базе данных появляется лишь ссылка на внешние источники данных, и работа с ними происходит с помощью специальных драйверов, которые традиционно входят в пакет MS Access. Это драйверы для работы с данными, созданными в форматах Paradox, Excel, dBase, FoxPRO, а также в текстовом (txt) и гипертекстовом (htm) форматах. При связывании с внешними данными естественно возникают ограничения возможностей по управлению структурой таблиц, а также зависимость от состояния внешнего источника, к которому осуществляется подключение.
Данные, находящиеся в разработанных таблицах, тесно связаны между собой. Поля разных таблиц, представляющие одинаковые по смыслу свойства объектов (в примере это одноименные поля разных таблиц), должны быть согласованы по типу и размеру. Одно из преимуществ применения базы данных заключается в том, что используя подобные поля, можно для каждой записи одной таблицы просмотреть записи другой, связанной таблицы. Например, в рассматриваемой задаче об оплате звонков, работая с информацией, относящейся к звонкам, можно одновременно обратиться к данным абонента или к данным об услугах и тарифах.
Механизм описания логических связей между таблицами в MS Access реализован в виде объекта, называемого Схемой данных. Схема данных (рис.8.5) представляет собой графическое изображение таблиц и их взаимосвязей. Если таблицы служат для физического хранения данных, то схема данных отражает связи между таблицами базы и возможности доступа к данным таблиц с использованием этих связей, т. е. доступ к данным на логическом уровне.
(рис 8.5) Схема базы данных
Для каждой таблицы, включенной в схему, отражены поля, выделен первичный ключ и связанные поля соединены линиями. Значки на концах линий указывают на тип отношения. На рис.8.5 все таблицы связаны наиболее часто встречающимся отношением "один-ко-многим". Все связываемые таблицы помещаются в окно схемы, при этом размещение всех таблиц базы данных в схеме не является обязательным.
Следует отметить, что одно и то же поле некоторой таблицы может быть использовано для связи этой таблицы с несколькими таблицами. Установка связей между таблицами позволяет получать информацию из нескольких таблиц. Таблица является главной или подчиненной в зависимости от типа установленной связи. Поле связи в главной таблице обычно является первичным ключом таблицы или имеет индекс, тип которого – совпадения не допускаются, и таким образом однозначно определяет запись в этой таблице. Обычно в
Установленная связь – это ссылка между двумя таблицами, которая показывает, как соотносятся данные разных таблиц. Тип создаваемой связи выбирается автоматически и зависит от полей таблиц, для которых определяется связь.
MS Access автоматически следит за обеспечением целостности данных, если оно установлено (рис.8.6). К нарушению целостности данных приводят следующие действия:
Если установлено обеспечение целостности данных (рис.8.6), при изменении значения внешнего ключа записи
В случае необходимости обеспечения целостности данных в MS Access предусмотрено задание дополнительных свойств для устанавливаемой связи (рис.8.6), а именно
(рис 8.6) Установка связей между таблицами
В конечном счете, связывание таблиц производится для того, чтобы на основе данных одной таблицы получить соответствующую информацию из другой таблицы, т.е. объединить информацию двух таблиц. Благодаря имеющимся связям можно достичь следующих преимуществ при работе с данными.
Данные могут быть введены различными способами. Самый простой способ – это ввод данных вручную в режиме Таблицы. При подобном способе выполняется автоматический контроль на соответствие вводимых данных типам полей таблицы. Если данные введены некорректно, то продолжение работы невозможно до тех пор, пока не будет введено правильное значение. Можно копировать уже введенные строки таблицы и корректировать их после добавления в таблицу. Система контролирует допустимость использования повторяющихся значений в ключевых полях в соответствии с заданными свойствами полей.
При конструировании таблицы можно задать подстановку значений в поле. Тогда в режиме ввода при переходе к полю с подстановкой система предлагает выбрать значения из разворачивающегося списка допустимых значений. Этот список может быть создан вручную или может быть получен из значений некоторого поля другой таблицы. В последнем случае строится запрос на отбор данных. При помощи этого запроса происходит связывание таблиц, которое может быть отражено в схеме данных. Подстановка значений из списка позволяет контролировать и ограничивать ввод значений в режиме Таблицы.
На вкладке Внешние данные в группе Импорт можно выбрать формат импортируемого файла, например, импорт данных из MS Excel (рис.8.7). Желательно, чтобы на рабочем листе импортируемые данные располагались в виде списка, т. е. имели бы обозначения столбцов и окружались пустыми строками и столбцами. Можно импортировать именованные интервалы. Если в импортируемой таблице отсутствуют названия столбцов, то импортируемые поля получают имена по умолчанию. Если данные импортируются в новую таблицу, заголовки столбцов используются в MS Access в качестве имен полей в таблице. Эти имена можно изменить в ходе операции импорта или после ее завершения. Если данные добавляются к существующей таблице, то заголовки столбцов рабочего листа в точности должны совпадать с именами полей таблицы базы данных.
(рис 8.7) Возможности импорта данных
Импорт данных можно выполнить, открыв файл необходимого типа (рис.8.8). Импорт возможен и через буфер обмена.
(рис 8.8) Типы открываемых данных
Если при вводе данных обнаружено, что структура таблицы спроектирована некорректно, например, имеются лишние поля или, наоборот, некоторые поля пропущены, задан неверный порядок полей или их тип и т.п., то ошибки можно исправить, перейдя в
Если данные некоторых таблиц должны быть общими в различных базах данных, то вместо дублирования таблицы ее можно сохранять в одной базе данных и создать связи с ней из других баз данных. Естественно, изменить структуру такой таблицы можно только в файле-источнике.
К простейшим реализованным в MS Access способам обработки табличных данных относятся сортировка записей, поиск записи по условию, получение выборки записей таблицы, удовлетворяющей некоторому критерию (фильтрация данных таблицы).
По умолчанию записи таблицы выводятся в последовательности, определяемой первичным ключом таблицы. Если у таблицы нет первичного ключа, то записи выводятся в том порядке, в котором они были добавлены в таблицу. Для удобства визуального поиска нужной информации можно отсортировать данные по одному или по нескольким полям любого типа. Если поля проиндексированы, процесс сортировки ускоряется. При сортировке не происходит физического перемещения данных. Записи данных сохраняют свое первоначальное расположение в таблице.
В MS Access поиск нужной информации может быть выполнен при помощи средств поиска, аналогичных средствам поиска в любом офисном приложении. Поиск ведется быстрее в индексированном поле. Для логических данных и данных типа Дата/Время удобно вести поиск с учетом формата полей. В этом случае образец поиска задается в том виде, в каком выводятся на экран данные, среди которых осуществляется поиск, а не в том виде, в каком они хранятся в базе данных. Например, если для дат установлен формат даты, высвечивающий названия месяцев, то, применив образец поиска "*окт", можно найти все записи, соответствующие октябрьским дням.
Фильтрация является самым простым способом отбора информации. При помощи фильтрации можно видеть на экране не всю таблицу, а только часть записей, удовлетворяющих заданному условию. Фильтры применяются как в таблицах, так и в формах. Команды фильтрации показаны на рис.8.9.
(рис 8.9) Команды фильтрации
Пользователь может выделить фрагмент значения поля и использовать выделенный фрагмент в качестве условия фильтрации, может отфильтровать отдельные значения поля или задать условие отбора с применением логических операций. Если пользователь не владеет записью логических функций, можно воспользоваться бланком фильтра, задание условий на вкладках которого равносильно применению логических функций И/ИЛИ (рис.8.10).
(рис 8.10) Возможности фильтрации данных и бланк фильтра
В условие отбора при помощи Построителя выражений можно включить расчетную формулу. В фильтре можно использовать несколько полей базы данных, можно накладывать фильтр на уже отфильтрованные данные. Сложные условия отбора и возможности сортировки отфильтрованных записей устанавливаются с применением расширенного фильтра, бланк которого напоминает бланк запроса (рис.8.11).
(рис 8.11) Бланк расширенного фильтра
Однако этих возможностей недостаточно для задач обработки данных, которые возникают в реальных приложениях. Для их решения применяется инструментарий запросов к базе данных. Запросы в MS Access различаются по выполняемым функциям: запросы на выборку данных или изменение данных, запросы на создание или удаление таблиц, группирующие запросы и т.д. В таблицах базы данных хранятся, как правило, лишь исходные данные, а все результаты, которые могут быть получены на их основании, вычисляются с помощью запросов. Такой подход позволяет уменьшить объем хранимой в базе данных информации.
В запросах можно использовать данные одной таблицы или нескольких связанных таблиц. Если таблицы не связаны в схеме, их можно связать в запросе. Если таблицы связаны в схеме, то в запросе можно изменить свойства установленной связи. Например, в запросе Стоимость звонка установлена дополнительная связь между таблицами Абоненты и Контакты (рис.8.12).
(рис 8.12) Окно конструктора запроса с добавленной связью
Результатом выполнения запроса на выборку является динамическая виртуальная таблица, содержащая отобранные по условию данные. Эта таблица является виртуальной, т. к. она не существует в базе и наполняется данными лишь во время выполнения запроса. Динамическая же она потому, что всегда отражает актуальные данные.
Очень важную роль играют запросы в решении проблемы обеспечения минимальной избыточности сохраняемой в базе информации. С их помощью можно получать любые таблицы, представляющие в различных видах и разрезах реально хранимую в базе совокупность данных.
В качестве источника данных для запроса может быть использован другой запрос, т. е. может существовать иерархия запросов. При запуске последнего в иерархии запроса выполняются все предыдущие запросы.
В процессе создания запроса формируется структура запроса, т. е. указывается, какие поля источников данных запроса должны выводиться в колонках таблицы запроса; задаются порядок вывода записей и условия вывода записей. На рис.8.12 показано окно конструктора запроса, а на рис.8.13 – окно просмотра запроса в режиме таблицы.
(рис 8.13) Запрос в режиме таблицы
Колонки запроса могут содержать как поля источников данных запроса, так и выражения, построенные на основе этих полей (вычисляемые поля). В вычисляемых выражениях могут применяться встроенные функции. Поля данных могут переименовываться в запросе, например, поле нт на рис.8.12 и рис.8.13.
Важными отличиями между фильтрами и запросами являются следующие:
Среди задач обработки данных достаточно типичной является проблема группировки данных по одному или нескольким признакам. Например, в рамках построенной базы данных об оплате звонков может быть поставлена задача определения суммарной стоимости звонков каждого абонента. Решить ее можно, построив запрос, содержащий групповые операции.
(рис 8.14) Запрос с группировкой в режиме конструктора
На рис.8.14 показано окно конструктора запроса, рассчитывающего суммарную стоимость звонков каждого абонента. При этом в бланк запроса включен запрос Стоимость звонков и таблица Абоненты, которые связаны в запросе по коду абонента. Операция суммирования значений нескольких записей запроса Стоимость звонков, осуществляемая для каждого абонента, определяется групповыми операциями Sum и Группировка, расположенными в одноименной строке. В процессе выполнения этого запроса суммируются стоимости звонков при постоянных значениях кода абонента и, соответственно, при постоянных значениях фамилии абонента, его имени и номера телефона. Результирующая запись – одна для каждого абонента (рис.8.15). При задании групповых операций доступны встроенные
(рис 8.15) Запрос с группировкой в режиме таблицы
Параметрический запрос позволяет задать значение (параметр), передаваемый запросу при его открытии. Например, в запросе (рис.8.16) вычисляется суммарное время разговора каждого абонента, код тарифа которого совпадает со значением, вводимым в момент запуска запроса. В целях проверки вводимого значения для параметра запроса рекомендуется указывать тип данных. Если данные параметрического запроса предполагается использовать в других запросах, то определение типа данных параметра является обязательным.
(рис 8.16) Параметрический запрос
Перекрестный запрос применяется для группировки отбираемых данных. Одно, два или три поля из полей запроса используются в качестве обозначений строк и одно поле определяется для заголовков столбцов выводимой виртуальной таблицы. В результате выполнения
(рис 8.17) Перекрестный запрос в режиме конструктора
В приведенном на рис.8.17 запросе наименование услуги выбрано в качестве заголовков столбцов, а фамилия и имя абонента – в качестве заголовков строк. В результате перекрестный запрос отражает суммарное время звонков каждого абонента с разбивкой по характеру звонков (рис.8.18)
(рис 8.18) Выполненный перекрестный запрос
Мастер запросов Повторяющиеся записи позволяет установить, сколько раз встречаются те или иные значения в полях таблицы. Это тип запроса также относится к группирующим запросам. Для вывода повторов используется группирующая функция Count, а условие вывода записи – количество записей в группе превышает 1. Можно модифицировать запрос, чтобы искать любое количество повторений значений, например, превышающее 10.
По аналогии с принципами организации работы с таблицами при построении запросов также существует возможность оперативного перехода из режима конструктора в режим таблицы. Поэтому в процессе конструирования запроса можно неоднократно изменять структуру и содержание запроса.
В завершение обзора средств построения запросов следует отметить, что помимо мощного и эффективного визуального конструктора запросов в MS Access доступен также и режим непосредственного ввода SQLвыражений. Данный режим существует параллельно с конструктором и мастерами запросов. Перейдя в режим SQL, можно просмотреть SQL-выражение, соответствующее построенному запросу. Пользователь, владеющий синтаксисом языка SQL, может модифицировать запрос в режиме SQL. Очевидно, что такая техника работы требует большей квалификации, но одновременно дает в руки разработчика мощный и универсальный аппарат управления данными.
MS Access, подобно другим офисным приложениям, предоставляет возможности распечатки информации. Можно распечатать таблицы, запросы или формы. В составе СУБД имеется средство подготовки отчетов по хранимой информации. Под отчетом традиционно понимается специальным образом структурированное представление хранимых данных, выводимое, как правило, на бумажный носитель. Отчеты являются исключительно средством вывода информации, тогда как экранные формы позволяют вводить новую и корректировать существующую информацию. Отчеты предоставляют средства оформления документов в соответствии с потребностями пользователя. Использование отчетов позволяет проводить многоуровневую сортировку и группировку данных, а также вычислять промежуточные и общие итоги.
Разбивка отчета на страницы предполагает организацию вывода колонтитулов в начале и конце каждого листа, повтор головки таблицы на каждой странице, включение отчеркивающих линеек и т.д. Для нумерации страниц в отчетах применяются встроенные переменные Page и Pages, возвращающие соответственно номер текущей страницы отчета и общее количество страниц в нем. Возможно отображение системной даты и системного времени благодаря использованию функции Now().
Идеология работы с отчетами допускает построение простых отчетов, работу с мастером, макетом и конструктором отчетов. Простейший отчет можно представить как табличный или отчет с полями, расположенными в столбец. Мастер отчетов помогает создать существенно более сложный и интересный для пользователей отчет в диалоговом режиме.
Для рассматриваемого примера базы данных можно построить как простейшие отчеты в виде распечатанных списков абонентов, тарифов или услуг, так и отчеты со сложной структурой, например, суммарный отчет о стоимости звонков каждого абонента с расшифровкой информации о каждом звонке (рис.8.19).
(рис 8.19) Суммарный отчет о стоимости звонков
В отчете можно выполнить дополнительные вычисления с полями каждой записи. В приводимом на рис.8.19 фрагменте отчета вычисляется стоимость каждого звонка. Отчеты можно структурировать, задавая группировки по одному или нескольким полям. Для каждого уровня группировки можно предусмотреть вывод промежуточных итогов c применением обычных итоговых функций, например, функции Sum() для получения суммарного итога или функции Avg() для получения среднего арифметического. В примере рассчитанные стоимости звонков суммируются для каждого абонента, и информация о каждом абоненте выводится в алфавитном порядке.
На начальном этапе разработки отчета рекомендуется воспользоваться услугами мастера отчетов, который в диалоговом режиме создаст походящий набросок отчета, избавляя пользователя от многих рутинных операций, например, таких как добавление полей и подписей к ним или выбор стиля оформления отчета. Далее полученный макет отчета в режиме конструктора приводится пользователем к желаемому виду. На рис.8.20 видна структура отчета. Он состоит из нескольких областей (разделов): заголовка отчета, верхнего колонтитула, области данных, нижнего колонтитула и примечания отчета. Разделы содержат элементы отчета, которые в режиме конструктора представляются в виде полей разных типов и являются объектами редактирования. Некоторые области, как в данном случае примечание отчета, могут быть пустыми. В области данных располагаются поля записей источника отчета с содержательной для пользователя информацией. Здесь могут быть размещены вычисляемые поля, в том числе поле, позволяющее нумеровать строки отчета. При выполнении группировок и/или сортировок данных в отчете появляются заголовки и примечания групп, которые содержат поля записей источника отчета, используемые как вспомогательные для выполнения сортировки и группировки. Эти области располагаются в порядке, установленном разработчиком отчета.
(рис 8.20) Структура суммарного отчета
Модификация элементов отчета, в том числе и разделов отчета, выполняется путем изменения их свойств. Вывод значений полей источника данных отчета основан на принципе наследования свойств: если при создании таблицы было определено некоторое свойство отображения поля, то установленный способ отображения используется в запросах, формах, отчетах до тех пор, пока свойство не будет переопределено явным образом в окне свойств соответствующего объекта. Например, в таблице Контакты тип поля Стоимость единицы был определен как Денежный, поэтому в отчете значения этого поля отображаются с двумя знаками после запятой и с указанием валюты.
Можно добавлять новые элементы к отчету, используя панель элементов или удалять включенные в отчет элементы. Возможно перемещение элементов отчета между разделами отчета.
Формы предназначены для наглядного представления данных и существенно облегчают ввод и восприятие хранящейся в базе информации. Можно подготовить стандартную форму, использовать инструменты для детальной настройки формы произвольного вида, дополнить форму результатами вычислений.
Использование экранных форм для ввода данных обуславливается в первую очередь тем, что количество полей в таблице может оказаться достаточно большим и вводить информацию в подобную таблицу будет технически неудобно. При вводе данных непосредственно в таблицу базы данных возможны ошибки, связанные с внесением данных не в те поля или не в те записи таблицы. Может случиться так, что пользователь должен вводить данные одновременно в несколько таблиц, т. к. таблицы связаны в базе, и отсутствие данных в главной таблице приведет к невозможности ввода данных в
Формы являются основными средствами создания интерфейса пользователя – именно через формы можно управлять выполнением всего спектра задач приложения и автоматизировать действия пользователя.
Для создания формы можно воспользоваться возможностями построения простых форм (табличная или форма "в столбец") или мастером форм либо разработать форму в режиме конструктора. Выбор способа создания формы зависит от квалификации пользователя и сложности разрабатываемой формы. Весьма плодотворным также оказывается комбинированный подход: сначала используется мастер формы, а затем полученная форма дорабатывается в режиме конструктора. Режим макета позволяет модифицировать структуру формы и одновременно видеть измененное представление данных. При любом способе создания формы для нее, прежде всего, определяется источник данных – таблица или запрос. Если форма основана на запросе, то он автоматически выполняется при открытии формы.
К числу важных достоинств MS Access относится то, что работа с экранными формами универсальна и подобна работе с отчетами. Режим конструирования экранной формы аналогичен режиму конструктора отчета. Структура формы ориентирована на возможности представления табличных данных. Форма состоит из разделов, основные из которых – заголовок, примечание формы и область данных. Именно в области данных отображается информация, отличающая одну запись от другой, т. е. различные значения свойств объектов реального мира. Процесс проектирования формы в среде MS Access сводится к добавлению управляющих элементов и изменению их свойств. Можно добавить такие элементы управления, как надпись, поле, кнопка, флажок, переключатель, список, набор вкладок и др. (элементы управления показаны на рис.8.21). Помимо этого к форме можно подключать дополнительные элементы управления ActiveX, что значительно расширяет возможности представления данных. Каждый элемент управления обладает своим набором свойств, изменение которых приводит к изменению его вида и поведения, например, можно менять цвет, шрифт, изменять размеры элемента и т.п. Сама форма и ее разделы также рассматриваются как элементы управления и обладают настраиваемыми наборами свойств. Источником вычисляемого элемента, размещаемого в форме, является расчетная формула, построенная по правилам формирования выражений. Для упрощения записи выражений можно воспользоваться Построителем выражений.
(рис 8.21) Панель элементов управления формы
На рис.8.22 показана составная форма Абоненты, которая содержит командные кнопки для вызова двух других форм. Основная форма Абоненты построена на многотабличном запросе, и данные, высвечиваемые в этой форме, организованы в соответствии с главной таблицей Абоненты. Верхняя часть формы показывает информацию о некотором абоненте. Подчиненная форма Звонки отображает в табличном виде информацию о звонках выбранного абонента. Перемещение в форме Абоненты возможно по абонентам или по звонкам. При переходе к следующему абоненту изменяются строки формы Звонки, в которые выводится информация, относящаяся уже к другому абоненту.
Нажатие на кнопку Новый звонок вызывает загрузку формы, которая высвечивает данные только по выбранному абоненту, на что указывает выполняемая в форме фильтрация (рис.8.22). Это достигается за счет того, что MS Access позволяет отображать в объекте базы, вновь загружаемом при помощи командной кнопки, или все отобранные в запросе записи, или записи, которые относятся к субъекту, выбранному в основной форме. По сути, из единой формы Абоненты реализовано управление данными, находящимися в системе взаимосвязанных таблиц. Структура формы Новый звонок соответствует структуре таблицы Звонки. Но можно построить форму, в которой поля таблицы будут расположены в любом порядке.
(рис 8.22) Составная форма
Навигация по записям источника данных для всех видов форм подобна навигации в таблице, но имеет и дополнительные возможности: использование линеек прокрутки и пиктограмм навигации, переход по записям путем изменения номера текущей записи, которое находится в нижней части окна. Можно перемещаться по записям главной и подчиненной форм.
Через форму довольно просто вносить изменения в данные базового источника. Следует отметить, что если источником данных формы является многотабличный запрос, то могут модифицироваться сразу несколько таблиц. Изменения в главной форме вызывают модификацию полей не только главной, но и
Различные свойства полей и формы в целом помогают заблокировать внесение изменений во все или некоторые поля базового источника, реализуя таким образом ограничение доступа к данным. Для ввода новой записи форма должна быть открыта для модификации данных (обычный режим формы). В этом режиме новая запись всегда добавляется в конец высвеченных данных после установки на пустую запись. Переключение в режим ввода новых записей высвечивает бланк записи с пустыми или заполненными по умолчанию значениями полей данных. Режим открытия формы можно изменить при помощи специального свойства формы.
В форме операции поиска и сортировки можно выполнять в основном теми же способами, что и в таблицах. Способы фильтрации в форме совпадают с аналогичными возможностями для таблиц.
MS Access позволяет создавать формы в виде сводных таблиц или сводных диаграмм, которые строятся абсолютно аналогично построению этих объектов в MS Excel. Доступны те же типы диаграмм, что и в MS Excel.
Экранные формы часто применяются для создания приложения, работа с которым предполагает различные способы работы с базой. Диспетчер кнопочных форм обеспечивает быструю и гибкую разработку внешнего интерфейса системы (по сути, разработку приложения) определяющего перечень основных режимов работы с созданной базой данных и их иерархию. При этом создается основная форма (рис.8.23), которая в MS Access носит название
Диспетчер кнопочных форм можно вызвать нажатием одноименной кнопки
, расположенной на вкладке Работа с базами данных. Этот инструмент помогает сконструировать кнопочные формы различных уровней, т.е. помогает создать приложение базы данных, с которым впоследствии может работать любой человек. Кроме того, разработчик приложения может указать системе, какую форму следует загрузить при открытии базы данных, и тем самым полностью скрыть интерфейс СУБД.
На рис.8.23 отображена
(рис 8.23) Главная кнопочная форма
(рис 8.24) Страница кнопочной формы
Кнопочная форма состоит из страниц, каждая из которых имеет название и, в свою очередь, является формой. Одна страница кнопочной формы считается основной или главной: именно она высвечивается при открытии кнопочной формы. На каждой странице кнопочной формы располагаются кнопки и их обозначения. Для каждой кнопки определены некоторые действия, с нею связанные. Это может быть высвечивание следующей страницы кнопочной формы, отображение формы или отчета, выход из приложения и т.д. Для управления кнопочной формой в базе данных автоматически создается таблица Switchboard Items (рис.8.25), каждая строка которой описывает страницу формы или открываемые формы, отчеты и т.д.
(рис 8.25) Таблица элементов кнопочных форм
MS Access обеспечивает два традиционных способа защиты базы данных. Простейший способ защиты – это установка пароля, требуемого при открытии базы данных. Тогда при каждом открытии базы данных будет появляться диалоговое окно, в котором требуется ввести пароль. Этот способ достаточно надежен, т. к. MS Access шифрует пароль, и к нему нет прямого доступа при чтении файла базы данных. После открытия базы данных все ее объекты становятся полностью доступными в течение сеанса работы с базой. Можно считать эту меру защиты достаточной для баз данных, которые совместно используются небольшой группой пользователей или установлены на автономном компьютере.
Гораздо более надежным и гибким способом организации защиты является защита на уровне пользователей. Такой способ защиты позволяет ограничить возможность получения или изменения той или иной информации в базе данных для конкретного пользователя.
По умолчанию в базе определены две группы пользователей: Admins и Users. Для каждой группы задаются разрешения на доступ к объектам базы данных (права доступа). Члены группы Admins, как правило, имеют разрешения на доступ ко всем объектам базы данных. Поскольку группа Users объединяет всех пользователей, имеет смысл ей присваивать некоторый минимальный набор прав. Можно создавать собственные учетные записи групп, предоставляя этим группам соответствующие разрешения и добавляя в группы пользователей, исходя из функциональной специфики предметной области. Один и тот же пользователь может являться членом различных групп.
Как группам, так и пользователям предоставляются разрешения на доступ, определяющие допустимые для них действия по отношению к каждому объекту базы данных. Набор возможных прав, очевидно, определяется спецификой объекта. При запуске MS Access от пользователей требуется идентифицировать себя и ввести пароль.
К этим возможностям относятся создание резервной копии, восстановление и сжатие баз данных, документирование объектов базы данных.
При практической эксплуатации базы данных MS Access возникает необходимость общего копирования БД, восстановления БД после сбоев, сжатия БД и наконец, репликации – режима получения текущей копии с возможностью эксплуатации ее на переносном или изолированном компьютере с последующей синхронизацией существующих копий БД.
Сжатие БД обычно выполняется при интенсивной модификации БД либо в процессе разработки новых объектов (таблиц, форм, отчетов, запросов, модулей), либо в процессе добавления и удаления данных. В этих случаях все удаляемые объекты и данных удаляются логически, т. е. физически они остаются внутри файла базы данных, но в окне базы данных они отсутствуют. Файл базы данных существенно разрастается, и работа с базой значительно усложняется.
Восстановление базы используется после нарушения
Разделение базы данных на клиентское и серверное приложения может потребоваться по различным причинам. Серверная база данных содержит таблицы и хранится на файловом сервере. В клиентской базе данных, которая содержит ссылки на таблицы серверной базы данных, хранятся все формы, запросы, отчеты, макросы и модули. Клиентская база данных устанавливается на рабочих станциях пользователей. Такое разделение обеспечивает наиболее эффективный способ эксплуатации системы:
Разделить базу данных можно вручную или при помощи служебной программы "Разделитель баз данных".
В ответ на определенные действия пользователя могут выполняться процедуры обработки событий, например, нажатие на некоторую кнопку формы может инициировать автоматическое создание новой таблицы определенной структуры. Основной набор средств MS Access, рассмотренный выше, ориентирован на пользователей, не владеющих языками программирования. Пользователи, знакомые с языками программирования, могут использовать макросы и модули (процедуры на языке Visual Basic for Application, VBA). С их помощью можно существенно расширить функциональные возможности создаваемого приложения и настроить его на нужды конечных пользователей.
В MS Word и MS Excel имеется средство автоматической записи макросов –
Макрос в MS Access представляет собой структуру, состоящую из одной или нескольких макрокоманд СУБД Access, которые выполняются либо последовательно, либо в порядке, определенном некоторыми заданными в макросе условиями. С помощью макросов можно выполнить практически все действия с объектами MS Access. Основное назначение макросов – это создание интерфейса приложения. С помощью макросов можно расположить на экране меню и панели инструментов, удобные для приложения.
Макросы легко создавать – для этого не нужно изучать синтаксис языка программирования, а достаточно знать лишь основные приемы работы в MS Access. Однако использование макросов имеет и некоторые недостатки, а именно: возможности макрокоманд ограничены по сравнению с возможностями языка VBA; процедуры VBA выполняются быстрее; макросы являются объектами, существующими отдельно от форм и отчетов, в которых они используются, и поэтому при увеличении количества макросов их поддержка становится достаточно трудоемкой. Тем не менее, во многих случаях использование макросов вполне оправдано, т. к. это существенно упрощает и ускоряет разработку приложения. С помощью макросов можно создавать небольшие однопользовательские приложения, однако если скорость работы приложения критична, лучше применять процедуры VBA.
Если количество макросов оказалось очень большим, можно объединить несколько макросов в группу макросов. Рекомендуется, например, все макросы, связанные с событиями в форме или отчете, объединять в группу макросов, соответствующую данной форме или отчету соответственно. При этом каждый макрос группы должен иметь свое имя, а имя объединенного объекта будет являться именем группы макросов.
Работа по созданию и запуску макросов выполняется так же, как и работа с любым объектом базы. Отличия определяются типом объекта. Макрос создается и редактируется в режиме конструктора. В окне конструктора выбирается макрокоманда из списка всех макрокоманд. Макрокоманды можно сгруппировать по категориям: работа с данными; выполнение; работа с объектами; импорт/экспорт данных и объектов, настройка интерфейса приложения. В категорию работы с данными входит набор макрокоманд, обеспечивающих отбор данных (фильтрация записей в формах и таблицах), перемещение по данным и элементам управления, а также обновление данных в активных формах, таблицах и запросах. К категории выполнения можно отнести выполнение команд, макросов, процедур или запросов, запуск другого приложения, прерывание выполнения и завершение работы в MS Access. Для настройки интерфейса можно вывести на экран или, наоборот, скрыть встроенную или пользовательскую панель инструментов, подать звуковой сигнал и т. п.
Наиболее обширная категория макрокоманд – это макрокоманды работы с объектами. MS Access состоит из нескольких компонентов, каждый из которых предоставляет собственный набор объектов, информация о которых содержится в библиотеках объектов. Например, библиотека объектов MS Access хранит информацию об объектах, предназначенных для отображения данных, для работы с приложением. В частности, это объекты формы или отчета. Макрокоманды для этих объектов позволяют в первую очередь выполнять копирование, переименование и сохранение объектов. Библиотека объектов
После выбора макрокоманды автоматически высвечивается список аргументов, который зависит от выбранной макрокоманды и может отсутствовать, если макрокоманда не имеет аргументов. В макросах используется последовательный порядок выполнения макрокоманд. Однако этот порядок может быть изменен при помощи условий выполнения или пропуска макрокоманд. Условия задаются в виде выражений в окне конструктора макросов после нажатия пиктограммы Условия
на вкладке конструктора макросов.
Выполнение макроса инициируется нажатием на кнопку Выполнить
.
Можно нажать кнопку Выполнить макрос
, расположенную в группе Макрос вкладки Работа с базами данных. В этой группе расположены различные пиктограммы для работы с макросами и процедурами Visual Basic (рис.8.26).
Наиболее часто макросы используются в приложении MS Access для обработки событий объектов. События – это любые действия, распознаваемые объектом, которые происходят в результате манипуляций пользователя, выполнения инструкций VBA или генерируются системой. Примером события является вывод формы на экран или нажатие кнопки. Для каждого объекта базы определены свои собственные события, перечень которых расположен на вкладке События диалогового окна свойств объекта (рис.8.27).
(рис 8.26) Группа Макрос вкладки Работа с базами данных
(рис 8.27) События элемента Кнопка
Каждому событию можно назначить макрос или процедуру VBA, которые будут автоматически выполняться в ответ на произошедшее событие. Практически программирование в MS Access сводится к написанию макросов или процедур, обрабатывающих события, т. е. программируется реакция объектов на события.
В форме Звонки абонентов (рис.8.28) размещена дополнительная командная кнопка Добавить звонок (имя кнопки n_call), при нажатии на которую открывается форма Новый звонок в режиме добавления данных. При этом открытие формы сопровождается звуковым сигналом. Для выполнения перечисленных действий создан макрос new_call (рис.8.29) из двух макрокоманд – открытия формы и подачи сигнала. Аргументы макрокоманды Открыть форму указывают на имя открываемой формы Новый звонок и режим данных Добавление. Указанный макрос выполняется автоматически при возникновении события Нажатие кнопки (рис.8.27).
Нажатие на кнопку Новый звонок (рис.8.28) открывает ту же форму, но в режиме просмотра данных. Для добавления новой записи в этом случае необходимо перейти к последней записи формы.
(рис 8.28) Модифицированная составная форма
(рис 8.29) Макрос открытия формы
Для программирования в MS Access используется процедурный язык Visual Basic for Applications (VBA) с добавлением объектных расширений и элементов SQL (более подробно о языке VBA см. раздел 3). Язык программирования VBA является общим инструментом для всех приложений MS Office, позволяющим решать любые задачи программирования, начиная от автоматизации действий конкретного пользователя и кончая разработкой полномасштабных приложений, использующих MS Office в качестве среды разработки.
Код VBA в приложении MS Access содержится в модулях. Модули являются такими же объектами MS Access, как таблицы, запросы, формы, отчеты и макросы. Основное содержание модулей – это процедуры на языке VBA. Модули, в отличие от макросов, являются более мощным средством разработки программных расширений в среде MS Access. Применение модулей требует от пользователя навыков программирования, а также знания основных принципов объектно-ориентированного программирования.
Если в базе данных существуют макросы, то они могут быть преобразованы в процедуры на VBA. Это касается как макросов, связанных с событиями в формах и отчетах, так и общих макросов, не связанных с формами и отчетами. Все они преобразуются в отдельные модули, причем макросы, выполняемые при возникновении событий, преобразуются в процедуры обработки событий. На рис.8.30 приведен преобразованный в процедуру макрос new_call, показанный на рис.8.29. На вкладке События для кнопки n_call (рис.8.27) в строке, соответствующей событию Нажатие кнопки, вместо названия макроса будет находиться текст [Процедура обработки событий], означающий вызов процедуры нажатия на кнопку n_call.
Процесс создания программных расширений в среде MS Access предполагает активное использование технологии объектно-ориентированного программирования (ООП). Каждый объект базы данных характеризуется набором свойств, методов и событий. Большое количество разнообразных событий определено для форм, отчетов и элементов управления, используемых в них. В процессе работы приложения при возникновении события запускаются специально разработанные программы – обработчики событий (событийные процедуры). Работа программиста, по сути, сводится к определению того события, которое требуется обработать программой, и программированию реакции на событие, а также к созданию новых объектов, описанию их свойств, методов и событий.
(рис 8.30) Макрос, преобразованный в процедуру
Существуют два типа модулей: стандартные модули и модули класса. Стандартные модули содержат общие процедуры, которые не связаны с конкретным объектом, например, формой или отчетом. Общие процедуры могут вызываться из других модулей и использоваться при обработке событий разных объектов, для вычисления значений в разных запросах или формах и т.д. Стандартные модули применяются также для объявления глобальных (т.е. доступных во всех модулях приложения) переменных и констант. Модуль класса отличается от стандартного модуля тем, что, кроме процедур, он содержит описание объекта и используется для работы с объектом. Примерами модулей класса являются модули форм и отчетов. Модули форм и отчетов связаны с конкретной формой или отчетом и содержат процедуры обработки событий, запускаемых в ответ на их возникновение в форме или отчете (отклики на событие). Для создания стандартного модуля используется объект Модули в списке объектов базы данных. Стандартный модуль или модуль класса можно создать при выборе соответствующей строки в списке новых объектов база данных. Модуль формы создается и связывается с формой при создании первой процедуры обработки событий для этой формы или одного из элементов управления формы или же при нажатии кнопки
Просмотреть код в режиме конструктора формы. Все сказанное относится и к модулям отчета.
Важнейшей частью объектно-ориентированного программирования в MS Access является программирование доступа к данным, которое возможно благодаря использованию объектов DАО. С помощью этих объектов, их свойств и методов можно создавать базу данных, изменять структуру таблиц и запросов, устанавливать и изменять связи между данными, а также извлекать, добавлять, удалять и изменять данные в базе MS Access. Объекты
База данных – это совокупность структурированных и взаимосвязанных данных, относящихся к определенной предметной области.
Для создания, хранения, обработки и коллективного использования информации применяются специальные программные системы, называемые системами управления базами данных (СУБД).
К основным
Основная особенность СУБД – это наличие процедур для ввода и хранения не только самих данных, но и описаний их структуры.
Тщательное проектирование базы данных – первый и очень важный шаг создания базы. Он позволяет избежать затрат, связанных с внесением исправлений в структуру хранящихся данных. Проектирование базы данных начинается с анализа предметной области и выявления требований к ней отдельных пользователей (сотрудников организации, для которых создается база данных). На этапе проектирования выявляются объекты информации и их характеристики, определяются виды данных, требующие регулярного обновления, и способы представления информации на экране и в отчетах, формулируются вопросы, на которые необходимо регулярно отвечать при поиске данных. Это помогает конкретизировать требования к хранимой информации. В любой момент можно изменить структуру хранящейся в базе информации, подкорректировав структуру таблиц и, соответственно, форм и отчетов. За проектирование и поддержку базы данных отвечает администратор базы данных (АБД).
СУБД использует следующие модели и описания:
Трехуровневая архитектура (инфологический, даталогический и физический уровни) позволяет обеспечить независимость хранимых данных от использующих их программ.
Первоначально создается обобщенное неформальное описание создаваемой базы данных. Это описание называют инфологической моделью данных, и оно выполняется с использованием естественного языка, блок-схем, математических формул, таблиц, графиков и других средств. Инфологическая модель отражает предметную область, для которой проектируется база данных, и полностью независима от физических параметров среды хранения данных. Основными конструктивными элементами инфологических моделей являются сущности, связи между ними и их свойства (атрибуты). Инфологическая модель не должна изменяться до тех пор, пока изменения в реальном мире не повлекут за собой изменения предметной области и, следовательно, изменения в модели.
Описание, создаваемое разработчиками базы данных по инфологической модели данных, называют даталогической моделью данных. Конечным результатом даталогического проектирования является описание логической структуры базы данных на ЯОД – языке описания данных конкретной СУБД. При создании даталогической модели данных обеспечивается однозначное соответствие между конструкциями языка описания данных и графическими обозначениями информационных единиц и связей между ними.
В основе каждой СУБД лежит концепция модели данных, то есть некоторой абстракции представления данных. Изначально были успешными две конкурирующие модели – иерархическая и сетевая. Иерархическая БД состоит из упорядоченного набора деревьев. Корпорация IBM разработала и внедрила язык описания данных DL/I (Data Language One), который моделировал данные в иерархической форме (представление данных в форме деревьев). Эта модель была разработана совместно с промышленными предприятиями и предназначалась для хранения и поддержки данных, которые иерархически связаны между собой, например, сметы материалов и списки деталей. Типичным представителем иерархической СУБД является СУБД IMS (Information Management System) компании IBM, первая версия которой появилась в 1968 г.
На рис.8.1 показан пример схемы иерархической БД. Тип записи ФАКУЛЬТЕТ является предком (родительской или исходной записью) для типов записей КАФЕДРЫ и ДЕКАНАТ, а записи КАФЕДРЫ и ДЕКАНАТ – потомки (дочерние или порожденные записи) для записи ФАКУЛЬТЕТ.
Все экземпляры определенного типа порожденной записи, относящиеся к одному экземпляру исходной записи, называются близнецами. Иерархическая модель реализует отношение между исходной и дочерними записями по схеме один-ко-многим., то есть одной родительской записи может соответствовать любое число дочерних. В
(рис 8.1) Схема иерархической модели базы данных
В терминологии IMS вместо термина "запись" использовался термин "сегмент", а под термином "запись базы данных" понималось все дерево сегментов. В 1970 году группа CODASYL, которая разрабатывала стандарты для языка COBOL, создала модель под названием DBTG (Data Base Task Group, группа задач базы данных). Модель DBTG была готова к представлению как иерархических, так и сетевых данных. Однако эта модель была очень сложной, поэтому не имела большого успеха.
Типичным представителем систем, основанных на
(рис 8.2) Схема сетевой модели базы данных
Большинство применяемых сегодня баз данных основаны на реляционной модели. Основная идея реляционной модели – представить произвольную структуру данных в виде двумерных таблиц. Наиболее распространенной в настоящее время настольной реляционной базой данных является MS Access, пример которой рассматривается в разделе 6.3.3.
Реляционная модель впервые была предложена Э.Ф. Коддом (E.F. Codd) в 1970 году. Понятие модели данных, введенное Коддом, впоследствии развил Кристофер Дейт. Согласно Дейту, реляционная модель состоит из трех частей, описывающих разные аспекты реляционного подхода: структурной части, манипуляционной части и целостной части. Данные хранятся в таблицах. Столбцы таблиц называются полями, а строки – записями. В каждом поле может храниться информация только одного типа. Запросы предназначены для манипулирования данными, содержащимися в базе данных.
Кодд определил правила реляционной модели, которые получили название "12 правил Кодда". Позже Кодд добавил "нулевое" правило.
Предложив реляционную модель данных, Э.Ф. Кодд создал и инструмент для удобной работы с отношениями – реляционную алгебру – формальную систему манипулирования отношениями, основными операциями которой являются проекция, соединение, пересечение и объединение.
Реляционная алгебра и
Реляционные базы данных имеют следующие специфические особенности.
При
Теория нормализации основывается на наличии той или иной зависимости между полями таблицы. Определены два вида таких зависимостей: функциональные и многозначные.
Поле В таблицы функционально зависит от поля А той же таблицы в том и только в том случае, когда в любой заданный момент времени для каждого из различных значений поля А обязательно существует только одно из различных значений поля В. Отметим, что здесь допускается, что поля А и В могут быть составными.
Поле В находится в полной функциональной зависимости от составного поля А, если оно функционально зависит от А и не зависит функционально от любого подмножества поля А.
Поле А многозначно определяет поле В той же таблицы, если для каждого значения поля А существует определенное множество соответствующих значений В.
По существу, таблица находится в 2НФ, если она находится в
Таблица находится в первой нормальной форме (
Таблица находится во второй нормальной форме (2НФ), если она удовлетворяет определению
Таблица находится в
Кодд и Бойс обосновали и предложили более строгое определение для 3НФ, которое учитывает, что в таблице может быть несколько ключей. Таблица находится в нормальной форме Бойса-Кодда (НФБК), если и только если любая функциональная зависимость между ее полями сводится к полной функциональной зависимости от возможного ключа.
В следующих нормальных формах (4НФ и 5НФ) учитываются не только функциональные, но и
В настоящее время практически каждый производитель СУБД предлагает собственный программный продукт автоматизированного проектирования. Это Oracle Designer (Oracle), Power Desinger (Sybase) и другие. Демонстрационные версии данных программных продуктов можно загрузить с соответствующих сайтов (www.oracle.com, www.sybase.com). Кроме того, для автоматизированного проектирования представлены решения фирм, не производящих СУБД. Наиболее распространенными являются программные продукты фирмы AllFusion – AllFusion ERwin
Реляционные языки обеспечивают типовые операции по обработке реляционных таблиц, позволяют формулировать логические условия, используемые в операциях выборки, проверку целостности (непротиворечивости) данных взаимосвязанных таблиц. Они оперируют с данными как со множествами, применяя к ним основные операции теории множеств. На входе
Выделяют следующие разновидности языков реляционной алгебры:
dBASe-подобные языки используют базы данных dBASe, Paradox, FoxPro,
Типичным представителем графического реляционного языка является язык
SQL (Structured Query Language) применяется при работе с реляционными базами данных в современных СУБД (ORACLE, dBASE IY, dBASE Y, Paradox, Access и др.). Для отдельных СУБД синтаксис версий языка SQL может различаться.
Язык SQL стал стандартом языков запросов для работы с реляционными базами данных архитектуры "файл-сервер" и "клиент-сервер" и для управления распределенными базами данных. Это реляционно полный язык, предназначенный для работы с базами данных, создания запросов на выборку данных, для выполнения вычислений, для обеспечения целостности баз данных.
С появлением большого числа микрокомпьютеров был разработан ряд СУБД для персональных компьютеров. Наиболее успешной из них была dBase – продукт корпорации Ashton-Tate. Среди ранних персональных СУБД наиболее известны Rbase корпорации Microrim и Paradox от Borland.
В настоящее время в мире используется достаточно большое количество универсальных промышленных СУБД. Среди них можно выделить трех несомненных лидеров (как по уровню развития технологий, так и по объему рынка – они вместе занимают более 90% мирового рынка СУБД). Это СУБД первого эшелона – Oracle, Microsoft SQL Server и IBM DB2. Список СУБД второго эшелона довольно велик, сюда относят такие СУБД, как Sybase, Informix, Ingress, Adabas, Interbase, Progress, Postgres, Cache, Linter,
Обычно база данных хранится в памяти компьютера, за которым работают один или несколько человек, или на выделенном сервере, доступ к которому осуществляется по сети.
Локальными или настольными называют СУБД типа Access, Paradox и т. п. В них определен формат данных, который учитывает параллельное выполнение операций, возможность доступа к БД нескольких пользователей и т. д. Недостатки настольных баз данных становятся очевидными не сразу, а по мере увеличения количества данных и числа пользователей – снижается производительность и учащаются случаи сбоев.
Для решения этих проблем была разработана технология "клиентсервер". В основе этой технологии лежит принцип централизации хранения и обработки данных: вся обработка и хранение данных полностью перекладывается на сервер; машина-клиент посылает запросы, а сервер их выполняет и посылает ответы клиенту.
Рынок корпоративных серверных СУБД представлен Oracle, MS SQL, DB2, Sybase и InterBase. СУБД Oracle остается лидером на рынке хранилищ данных как в отношении доли рынка (48.6%), так и инноваций разработок.
СУБД Oracle реализована для нескольких операционных систем и предлагает полный спектр решений по безопасности для обеспечения конфиденциальности данных, защиты от внутрисистемных угроз и соответствия нормативным документам. Благодаря разработанному Oracle мощному многофакторному контролю доступа привилегированных пользователей, установлению степени конфиденциальности информации, прозрачному шифрованию данных, аудиту, мониторингу и маскировке данных, клиенты могут внедрять надежные решения, не требующие внесения изменений в существующие приложения, экономя время и деньги.
Разделение и сжатие данных в Oracle существенно оптимизирует работу СУБД:
Приложение Oracle Total
В конце восьмидесятых годов Sybase разработала SQL Server и продала его Microsoft. Одним из преимуществ SQL Server является простота его применения, в частности, администрирования. Основным языком запросов является язык Transact-SQL, созданный совместно Microsoft и Sybase.
Для обеспечения доступа к данным Microsoft SQL Server поддерживает ODBC (
SQL Server 2008 обеспечивает высокий уровень безопасности, надежности и масштабируемости для критически важных приложений. SQL поддерживает продукты сторонних компаний по управлению ключами и аппаратными модулями безопасности. Динамическое шифрование всей базы данных, файлов данных и файлов журналов не потребует никаких изменений в имеющихся приложениях.
SQL Server 2008 позволяет основному и зеркальному серверу прозрачно устранять последствия ошибок на страницах данных, запрашивая свежую копию "подозрительной" страницы с зеркального сервера незаметно для приложений и конечных пользователей
За счет применения сжатия данные хранятся более эффективно и занимают меньше места в хранилище. Сжатие также обеспечивает заметный прирост производительности на задачах, связанных с большим количеством операций ввода/вывода, как, например, при работе с хранилищами данных.
SQL Server 2008 имеет развитые средства создания корпоративной отчетности, позволяя без труда создавать отчеты любого размера и сложности, а также организовывать общий доступ к ним. Предоставить нужные сведения также можно с помощью развертывания отчетов в Интернете.
Средства упреждающей аналитики SQL Server 2008, основанные на мощном
К их числу относятся:
В настоящее время разработано большое количество бесплатных СУБД. Наиболее популярными и распространенными среди них являются MySQL и PostgreSQL. Обе СУБД довольно динамично развиваются и повсеместно используются
MySQL – это система управления реляционными базами данных. Сейчас это самый распространенный сервер баз данных в сети Интернет. MySQL – быстрая, но немного ограниченная СУБД. Хорошо подходит для проектов, не требующих сложных баз (например, для веб-проектов).
PostgreSQL отвечает всем современным стандартам СУБД. Больше подходит для серьезных проектов, требующих сложных баз данных. По скорости работы PostgreSQL уступает MySQL. Кроме того, администрирование PostgreSQL достаточно сложно.
В небольших фирмах и компаниях, в которых нет необходимости использовать сервер и закупать дорогостоящие базы данных типа "клиент-сервер", применяются локальные (настольные) СУБД. Основными представителями таких СУБД являются Microsoft Access, Paradox,
Paradox и Access входят в офисные пакеты. СУБД Paradox, выпускаемая компанией Corel, входит в пакет WordPerfect Office. СУБД Access выпускается Microsoft и входит в состав MS Office.
СУБД dBase IV и
Microsoft Access в настоящее время является одной из самых популярных настольных систем управления базами данных. Отметим несколько причин такой популярности.
Шаблоны баз данных можно использовать без изменений или настроить в соответствии с конкретными потребностями. Например, шаблоны базы данных помогают сформировать таблицы из имеющихся вариантов таблиц и предоставляют набор форм и отчетов, соответствующих создаваемому типу базы.
При помощи мастеров можно создавать таблицы, запросы, формы и отчеты, основываясь на типовых решениях. Мастера ведут разработчика по шагам, высвечивая на экране вопросы и подсказывая, что необходимо сделать, или предлагая возможность выбора из имеющихся образцов. Используя мастер запросов, можно сконструировать простой запрос или запрос на основе главной и связанной таблиц. Мастер форм предлагает свободный выбор полей, отображаемых на форме. Кроме того, можно указать способ группировки и сортировки данных, а также включить в форму поля из нескольких таблиц или запросов, при условии, что заранее заданы отношения между этими таблицами и запросами. Мастер отчетов, подобно мастеру форм, создает отчет на основании ответов пользователя. Построенный таким образом отчет можно использовать без изменений или далее настроить в соответствии со своими требованиями.
Конструкторы предназначены для создания объектов произвольной структуры. Конструктор ("построитель") выражений помогает быстро и без ошибок создать сложное выражение, используемое в критериях или в вычисляемых полях. Построитель выражений упрощает доступ к именам полей и элементов управления и ко многим встроенным функциям, доступным при создании выражений. С помощью построителя выражений можно выбирать готовые выражения для отображения номеров страниц, текущей даты и времени. Построитель выражений можно запустить из большинства мест, где выражения вводятся вручную, например, при задании свойств полей таблицы. Для запуска построителя выражений достаточно нажатия на кнопку Построить (
).
(рис 8.3) Типы объектов MS Access в области переходов
Интерфейс работы с объектами базы данных унифицирован. Для объекта любого типа предусмотрены стандартные режимы работы: создание и изменение структуры объекта, запуск или просмотр объекта (собственно работа с содержимым объекта). Реализованная в СУБД система управления объектами базы данных позволяет гибко и оперативно переходить из режима конструирования объекта в режим непосредственной его эксплуатации и обратно. Для открытия объекта базы данных можно использовать команды контекстного меню, которые зависят от типа объекта.
В процессе разработки конкретного программного приложения в среде MS Access можно выделить типичные этапы, относящиеся уже к непосредственному конструированию базы данных, которое выполняется после предварительного проектирования. Между перечисляемыми ниже этапами существуют обратные связи, подразумевающие возврат к более ранним шагам, исходя из вновь открывшихся обстоятельств, которые невозможно было заранее учесть или предвидеть.
База данных MS Access является реляционной базой данных и состоит из множества взаимосвязанных таблиц, которые и представляют отношения. Столбцы таблицы отражают сведения, одинаковым образом характеризующие объекты реального мира, которые моделируются с использованием данной таблицы. Для каждого свойства выделяется отдельный столбец – поле таблицы. Строки таблицы содержат информацию об экземплярах реальных объектов и называются записями.
Далее будет рассматриваться построение базы данных для задачи автоматизации расчетов по платежам за разговоры по мобильным телефонам. Объектами этой задачи являются тарифы со стоимостями услуг, абоненты, которые разговаривают по телефону, и произведенные звонки. Каждый абонент характеризуется номером телефона и тарифом. Последний, в свою очередь, имеет название, перечень предоставляемых услуг и их стоимость. Каждый звонок предполагает наличие двух абонентов, определяется оказанной услугой, датой и продолжительностью разговора. Следует оговориться, что указанные объекты и их свойства не охватывают полностью предметную область задачи, т. е. все возможные объекты системы платежей за звонки. Небольшая часть этой системы и соответствующие ей данные рассматриваются здесь в качестве примера построения базы данных.
Хранить в одной большой таблице абсолютно все поля предметной области не очень удобно. Предпочтительно, чтобы каждая таблица содержала данные, ограниченные определенной тематикой. Поэтому в соответствии с выявленными объектами в базе данных будут три таблицы – по тарифам, по абонентам, по звонкам.
Далее на логическом уровне описываются структуры потоков информации в автоматизируемой предметной области, т. е. выделяются поля таблиц данных. Для задачи об оплате звонков по мобильным телефонам таблицы могут иметь следующие структуры. Таблица Тарифы будет содержать код и название тарифа, код и название услуги, стоимость услуги за единицу времени. Таблица Абоненты должна содержать характеристики абонентов, такие как Код абонента, Номер телефона, ФИО, Код тарифа. Наконец, таблица Звонки должна содержать Код звонка, Номер телефона звонившего (первого абонента), Номер телефона второго абонента, Код услуги, Дата и продолжительность разговора.
После проектирования таблиц и их полей следует определить первичный ключ каждой таблицы и провести анализ предполагаемых таблиц на соответствие нормальным формам (хотя бы первым трем). Например, в базу данных задачи об оплате звонков после нормализации добавлены еще две таблицы – таблица с перечнем услуг (таблица Услуги) и таблица со стоимостью каждой услуги в рамках существующих тарифов (таблица Контакты). Это позволяет избежать дублирования информации о тарифах и услугах. Структуры таблиц показаны на схеме базы данных (рис.8.5). Первичные ключи таблиц помечены слева изображением ключа. Заметим, что поля Код абонента, Код звонка, Код тарифа и Код услуги являются полями, обеспечивающими уникальную идентификацию записей в соответствующих таблицах. В таблице Контакты определен
После выполненного проектирования будущих таблиц необходимо выполнить описание структур таблиц средствами СУБД. Это можно сделать в режиме конструктора. Можно использовать встроенные шаблоны таблиц или списков SharePoint, например, шаблоны "Контакты", "Задачи", "Вопросы" и "События". Если имена полей выбранного шаблона недостаточно информативны, их можно изменить. В режиме конструктора можно менять любые свойства полей, менять поля местами или добавлять новые поля. Использовать конструктор для модификации таблиц можно в любое время, даже после ввода данных в таблицу.
Поля таблицы и таблица в целом являются объектами базы данных и обладают целым рядом свойств, которые облегчают ввод и контроль данных. Значения свойств поля определяют отображение поля и допустимые действия с ним. Значения свойств таблицы определяют ее поведение. Для поля задаются тип поля, его размер, маска ввода, значения по умолчанию, ограничения на значения, сообщение в случае ошибки (рис.8.4). Для таблиц, например, определяются порядок сортировки и условия фильтрации, т.е. может задаваться вывод записей в алфавитном порядке значений некоторого текстового поля или вывод записей в порядке убывания дат. Свойства таблицы видны в окне свойств, доступном в режиме конструктора таблицы.
Поля могут иметь любой используемый в офисных приложениях тип данных: Счетчик, Текстовый, Числовой, Дата/время, Логический, Поле объекта OLE. Возможно использование поля комментариев (Memo). MS Access автоматически накладывает условия на значения, определяемые типом поля, например, не допускается ввод текста в числовые поля. Установка типа данных одновременно определяет набор дополнительных атрибутов соответствующего поля. В каждом поле могут храниться данные только одного типа. Изменение типа поля после ввода данных в таблицу может привести к потере данных.
(рис 8.4) Поля таблицы и их свойства
Если поле используется в качестве первичного ключа таблицы, то оно может иметь любой тип данных. Часто применяется тип данных Счетчик, который гарантирует, что при вводе данных в это поле автоматически попадает номер записи в возрастающей последовательности. Можно задействовать в качестве первичного ключа определенный пользователем набор полей. МЕМО-поля и поля объекта OLE не могут быть первичными ключами. Во время ввода данных в поля первичного ключа MS Access автоматически следит за тем, чтобы в поля вводились уникальные или повторяющиеся значения в соответствии с заданным свойством Индексированное поле. Ключи не только идентифицируют записи таблиц, но и используются для установки межтабличных связей.
Для увеличения скорости доступа к данным поле, не объявленное первичным ключом, может индексироваться (вторичный ключ). Пользователь может создать сколько угодно индексов. Индексы создаются при сохранении макета таблицы и автоматически обновляются при вводе и изменении записей. Пользователь может в любое время добавить новые или удалить ненужные индексы в окне конструктора таблиц. Следует иметь в виду, что индексы замедляют изменение, ввод и удаление данных, поэтому не рекомендуется создавать избыточные индексы.
Маска ввода позволяет контролировать ввод данных, и также автоматически добавлять при вводе данных фрагменты значений, увеличивая тем самым скорость ввода данных. Маска ввода разрешает ввод значений в соответствии с некоторым форматом, ограничивая тем самым возможности ввода ошибочных символов и обеспечивая соответствие вводимых символов определенному представлению и заданному типу значений. Эффективным способом контроля корректности вводимых данных является ограничение множества допустимых значений поля (свойство Условие на значение).
При проектировании базы данных можно предусмотреть возможности работы с внешними данными. Это импорт данных и связь с внешними таблицами данных. В случае импорта происходит создание дубликата внешних данных во вновь создаваемой таблице. К импортируемым данным могут применяться все средства манипуляции данными, обеспечивается быстродействие при обращении к ним и независимость от исходного источника данных. Однако возникают проблемы, связанные с поддержкой актуальности и соответствия друг другу двух копий одной и той же информации. Eсли актуальность данных является критичным фактором, то необходимо использовать связь с внешними данными. В этом случае в базе данных появляется лишь ссылка на внешние источники данных, и работа с ними происходит с помощью специальных драйверов, которые традиционно входят в пакет MS Access. Это драйверы для работы с данными, созданными в форматах Paradox, Excel, dBase, FoxPRO, а также в текстовом (txt) и гипертекстовом (htm) форматах. При связывании с внешними данными естественно возникают ограничения возможностей по управлению структурой таблиц, а также зависимость от состояния внешнего источника, к которому осуществляется подключение.
Данные, находящиеся в разработанных таблицах, тесно связаны между собой. Поля разных таблиц, представляющие одинаковые по смыслу свойства объектов (в примере это одноименные поля разных таблиц), должны быть согласованы по типу и размеру. Одно из преимуществ применения базы данных заключается в том, что используя подобные поля, можно для каждой записи одной таблицы просмотреть записи другой, связанной таблицы. Например, в рассматриваемой задаче об оплате звонков, работая с информацией, относящейся к звонкам, можно одновременно обратиться к данным абонента или к данным об услугах и тарифах.
Механизм описания логических связей между таблицами в MS Access реализован в виде объекта, называемого Схемой данных. Схема данных (рис.8.5) представляет собой графическое изображение таблиц и их взаимосвязей. Если таблицы служат для физического хранения данных, то схема данных отражает связи между таблицами базы и возможности доступа к данным таблиц с использованием этих связей, т. е. доступ к данным на логическом уровне.
(рис 8.5) Схема базы данных
Для каждой таблицы, включенной в схему, отражены поля, выделен первичный ключ и связанные поля соединены линиями. Значки на концах линий указывают на тип отношения. На рис.8.5 все таблицы связаны наиболее часто встречающимся отношением "один-ко-многим". Все связываемые таблицы помещаются в окно схемы, при этом размещение всех таблиц базы данных в схеме не является обязательным.
Следует отметить, что одно и то же поле некоторой таблицы может быть использовано для связи этой таблицы с несколькими таблицами. Установка связей между таблицами позволяет получать информацию из нескольких таблиц. Таблица является главной или подчиненной в зависимости от типа установленной связи. Поле связи в главной таблице обычно является первичным ключом таблицы или имеет индекс, тип которого – совпадения не допускаются, и таким образом однозначно определяет запись в этой таблице. Обычно в
Установленная связь – это ссылка между двумя таблицами, которая показывает, как соотносятся данные разных таблиц. Тип создаваемой связи выбирается автоматически и зависит от полей таблиц, для которых определяется связь.
MS Access автоматически следит за обеспечением целостности данных, если оно установлено (рис.8.6). К нарушению целостности данных приводят следующие действия:
Если установлено обеспечение целостности данных (рис.8.6), при изменении значения внешнего ключа записи
В случае необходимости обеспечения целостности данных в MS Access предусмотрено задание дополнительных свойств для устанавливаемой связи (рис.8.6), а именно
(рис 8.6) Установка связей между таблицами
В конечном счете, связывание таблиц производится для того, чтобы на основе данных одной таблицы получить соответствующую информацию из другой таблицы, т.е. объединить информацию двух таблиц. Благодаря имеющимся связям можно достичь следующих преимуществ при работе с данными.
Данные могут быть введены различными способами. Самый простой способ – это ввод данных вручную в режиме Таблицы. При подобном способе выполняется автоматический контроль на соответствие вводимых данных типам полей таблицы. Если данные введены некорректно, то продолжение работы невозможно до тех пор, пока не будет введено правильное значение. Можно копировать уже введенные строки таблицы и корректировать их после добавления в таблицу. Система контролирует допустимость использования повторяющихся значений в ключевых полях в соответствии с заданными свойствами полей.
При конструировании таблицы можно задать подстановку значений в поле. Тогда в режиме ввода при переходе к полю с подстановкой система предлагает выбрать значения из разворачивающегося списка допустимых значений. Этот список может быть создан вручную или может быть получен из значений некоторого поля другой таблицы. В последнем случае строится запрос на отбор данных. При помощи этого запроса происходит связывание таблиц, которое может быть отражено в схеме данных. Подстановка значений из списка позволяет контролировать и ограничивать ввод значений в режиме Таблицы.
На вкладке Внешние данные в группе Импорт можно выбрать формат импортируемого файла, например, импорт данных из MS Excel (рис.8.7). Желательно, чтобы на рабочем листе импортируемые данные располагались в виде списка, т. е. имели бы обозначения столбцов и окружались пустыми строками и столбцами. Можно импортировать именованные интервалы. Если в импортируемой таблице отсутствуют названия столбцов, то импортируемые поля получают имена по умолчанию. Если данные импортируются в новую таблицу, заголовки столбцов используются в MS Access в качестве имен полей в таблице. Эти имена можно изменить в ходе операции импорта или после ее завершения. Если данные добавляются к существующей таблице, то заголовки столбцов рабочего листа в точности должны совпадать с именами полей таблицы базы данных.
(рис 8.7) Возможности импорта данных
Импорт данных можно выполнить, открыв файл необходимого типа (рис.8.8). Импорт возможен и через буфер обмена.
(рис 8.8) Типы открываемых данных
Если при вводе данных обнаружено, что структура таблицы спроектирована некорректно, например, имеются лишние поля или, наоборот, некоторые поля пропущены, задан неверный порядок полей или их тип и т.п., то ошибки можно исправить, перейдя в
Если данные некоторых таблиц должны быть общими в различных базах данных, то вместо дублирования таблицы ее можно сохранять в одной базе данных и создать связи с ней из других баз данных. Естественно, изменить структуру такой таблицы можно только в файле-источнике.
К простейшим реализованным в MS Access способам обработки табличных данных относятся сортировка записей, поиск записи по условию, получение выборки записей таблицы, удовлетворяющей некоторому критерию (фильтрация данных таблицы).
По умолчанию записи таблицы выводятся в последовательности, определяемой первичным ключом таблицы. Если у таблицы нет первичного ключа, то записи выводятся в том порядке, в котором они были добавлены в таблицу. Для удобства визуального поиска нужной информации можно отсортировать данные по одному или по нескольким полям любого типа. Если поля проиндексированы, процесс сортировки ускоряется. При сортировке не происходит физического перемещения данных. Записи данных сохраняют свое первоначальное расположение в таблице.
В MS Access поиск нужной информации может быть выполнен при помощи средств поиска, аналогичных средствам поиска в любом офисном приложении. Поиск ведется быстрее в индексированном поле. Для логических данных и данных типа Дата/Время удобно вести поиск с учетом формата полей. В этом случае образец поиска задается в том виде, в каком выводятся на экран данные, среди которых осуществляется поиск, а не в том виде, в каком они хранятся в базе данных. Например, если для дат установлен формат даты, высвечивающий названия месяцев, то, применив образец поиска "*окт", можно найти все записи, соответствующие октябрьским дням.
Фильтрация является самым простым способом отбора информации. При помощи фильтрации можно видеть на экране не всю таблицу, а только часть записей, удовлетворяющих заданному условию. Фильтры применяются как в таблицах, так и в формах. Команды фильтрации показаны на рис.8.9.
(рис 8.9) Команды фильтрации
Пользователь может выделить фрагмент значения поля и использовать выделенный фрагмент в качестве условия фильтрации, может отфильтровать отдельные значения поля или задать условие отбора с применением логических операций. Если пользователь не владеет записью логических функций, можно воспользоваться бланком фильтра, задание условий на вкладках которого равносильно применению логических функций И/ИЛИ (рис.8.10).
(рис 8.10) Возможности фильтрации данных и бланк фильтра
В условие отбора при помощи Построителя выражений можно включить расчетную формулу. В фильтре можно использовать несколько полей базы данных, можно накладывать фильтр на уже отфильтрованные данные. Сложные условия отбора и возможности сортировки отфильтрованных записей устанавливаются с применением расширенного фильтра, бланк которого напоминает бланк запроса (рис.8.11).
(рис 8.11) Бланк расширенного фильтра
Однако этих возможностей недостаточно для задач обработки данных, которые возникают в реальных приложениях. Для их решения применяется инструментарий запросов к базе данных. Запросы в MS Access различаются по выполняемым функциям: запросы на выборку данных или изменение данных, запросы на создание или удаление таблиц, группирующие запросы и т.д. В таблицах базы данных хранятся, как правило, лишь исходные данные, а все результаты, которые могут быть получены на их основании, вычисляются с помощью запросов. Такой подход позволяет уменьшить объем хранимой в базе данных информации.
В запросах можно использовать данные одной таблицы или нескольких связанных таблиц. Если таблицы не связаны в схеме, их можно связать в запросе. Если таблицы связаны в схеме, то в запросе можно изменить свойства установленной связи. Например, в запросе Стоимость звонка установлена дополнительная связь между таблицами Абоненты и Контакты (рис.8.12).
(рис 8.12) Окно конструктора запроса с добавленной связью
Результатом выполнения запроса на выборку является динамическая виртуальная таблица, содержащая отобранные по условию данные. Эта таблица является виртуальной, т. к. она не существует в базе и наполняется данными лишь во время выполнения запроса. Динамическая же она потому, что всегда отражает актуальные данные.
Очень важную роль играют запросы в решении проблемы обеспечения минимальной избыточности сохраняемой в базе информации. С их помощью можно получать любые таблицы, представляющие в различных видах и разрезах реально хранимую в базе совокупность данных.
В качестве источника данных для запроса может быть использован другой запрос, т. е. может существовать иерархия запросов. При запуске последнего в иерархии запроса выполняются все предыдущие запросы.
В процессе создания запроса формируется структура запроса, т. е. указывается, какие поля источников данных запроса должны выводиться в колонках таблицы запроса; задаются порядок вывода записей и условия вывода записей. На рис.8.12 показано окно конструктора запроса, а на рис.8.13 – окно просмотра запроса в режиме таблицы.
(рис 8.13) Запрос в режиме таблицы
Колонки запроса могут содержать как поля источников данных запроса, так и выражения, построенные на основе этих полей (вычисляемые поля). В вычисляемых выражениях могут применяться встроенные функции. Поля данных могут переименовываться в запросе, например, поле нт на рис.8.12 и рис.8.13.
Важными отличиями между фильтрами и запросами являются следующие:
Среди задач обработки данных достаточно типичной является проблема группировки данных по одному или нескольким признакам. Например, в рамках построенной базы данных об оплате звонков может быть поставлена задача определения суммарной стоимости звонков каждого абонента. Решить ее можно, построив запрос, содержащий групповые операции.
(рис 8.14) Запрос с группировкой в режиме конструктора
На рис.8.14 показано окно конструктора запроса, рассчитывающего суммарную стоимость звонков каждого абонента. При этом в бланк запроса включен запрос Стоимость звонков и таблица Абоненты, которые связаны в запросе по коду абонента. Операция суммирования значений нескольких записей запроса Стоимость звонков, осуществляемая для каждого абонента, определяется групповыми операциями Sum и Группировка, расположенными в одноименной строке. В процессе выполнения этого запроса суммируются стоимости звонков при постоянных значениях кода абонента и, соответственно, при постоянных значениях фамилии абонента, его имени и номера телефона. Результирующая запись – одна для каждого абонента (рис.8.15). При задании групповых операций доступны встроенные
(рис 8.15) Запрос с группировкой в режиме таблицы
Параметрический запрос позволяет задать значение (параметр), передаваемый запросу при его открытии. Например, в запросе (рис.8.16) вычисляется суммарное время разговора каждого абонента, код тарифа которого совпадает со значением, вводимым в момент запуска запроса. В целях проверки вводимого значения для параметра запроса рекомендуется указывать тип данных. Если данные параметрического запроса предполагается использовать в других запросах, то определение типа данных параметра является обязательным.
(рис 8.16) Параметрический запрос
Перекрестный запрос применяется для группировки отбираемых данных. Одно, два или три поля из полей запроса используются в качестве обозначений строк и одно поле определяется для заголовков столбцов выводимой виртуальной таблицы. В результате выполнения
(рис 8.17) Перекрестный запрос в режиме конструктора
В приведенном на рис.8.17 запросе наименование услуги выбрано в качестве заголовков столбцов, а фамилия и имя абонента – в качестве заголовков строк. В результате перекрестный запрос отражает суммарное время звонков каждого абонента с разбивкой по характеру звонков (рис.8.18)
(рис 8.18) Выполненный перекрестный запрос
Мастер запросов Повторяющиеся записи позволяет установить, сколько раз встречаются те или иные значения в полях таблицы. Это тип запроса также относится к группирующим запросам. Для вывода повторов используется группирующая функция Count, а условие вывода записи – количество записей в группе превышает 1. Можно модифицировать запрос, чтобы искать любое количество повторений значений, например, превышающее 10.
По аналогии с принципами организации работы с таблицами при построении запросов также существует возможность оперативного перехода из режима конструктора в режим таблицы. Поэтому в процессе конструирования запроса можно неоднократно изменять структуру и содержание запроса.
В завершение обзора средств построения запросов следует отметить, что помимо мощного и эффективного визуального конструктора запросов в MS Access доступен также и режим непосредственного ввода SQLвыражений. Данный режим существует параллельно с конструктором и мастерами запросов. Перейдя в режим SQL, можно просмотреть SQL-выражение, соответствующее построенному запросу. Пользователь, владеющий синтаксисом языка SQL, может модифицировать запрос в режиме SQL. Очевидно, что такая техника работы требует большей квалификации, но одновременно дает в руки разработчика мощный и универсальный аппарат управления данными.
MS Access, подобно другим офисным приложениям, предоставляет возможности распечатки информации. Можно распечатать таблицы, запросы или формы. В составе СУБД имеется средство подготовки отчетов по хранимой информации. Под отчетом традиционно понимается специальным образом структурированное представление хранимых данных, выводимое, как правило, на бумажный носитель. Отчеты являются исключительно средством вывода информации, тогда как экранные формы позволяют вводить новую и корректировать существующую информацию. Отчеты предоставляют средства оформления документов в соответствии с потребностями пользователя. Использование отчетов позволяет проводить многоуровневую сортировку и группировку данных, а также вычислять промежуточные и общие итоги.
Разбивка отчета на страницы предполагает организацию вывода колонтитулов в начале и конце каждого листа, повтор головки таблицы на каждой странице, включение отчеркивающих линеек и т.д. Для нумерации страниц в отчетах применяются встроенные переменные Page и Pages, возвращающие соответственно номер текущей страницы отчета и общее количество страниц в нем. Возможно отображение системной даты и системного времени благодаря использованию функции Now().
Идеология работы с отчетами допускает построение простых отчетов, работу с мастером, макетом и конструктором отчетов. Простейший отчет можно представить как табличный или отчет с полями, расположенными в столбец. Мастер отчетов помогает создать существенно более сложный и интересный для пользователей отчет в диалоговом режиме.
Для рассматриваемого примера базы данных можно построить как простейшие отчеты в виде распечатанных списков абонентов, тарифов или услуг, так и отчеты со сложной структурой, например, суммарный отчет о стоимости звонков каждого абонента с расшифровкой информации о каждом звонке (рис.8.19).
(рис 8.19) Суммарный отчет о стоимости звонков
В отчете можно выполнить дополнительные вычисления с полями каждой записи. В приводимом на рис.8.19 фрагменте отчета вычисляется стоимость каждого звонка. Отчеты можно структурировать, задавая группировки по одному или нескольким полям. Для каждого уровня группировки можно предусмотреть вывод промежуточных итогов c применением обычных итоговых функций, например, функции Sum() для получения суммарного итога или функции Avg() для получения среднего арифметического. В примере рассчитанные стоимости звонков суммируются для каждого абонента, и информация о каждом абоненте выводится в алфавитном порядке.
На начальном этапе разработки отчета рекомендуется воспользоваться услугами мастера отчетов, который в диалоговом режиме создаст походящий набросок отчета, избавляя пользователя от многих рутинных операций, например, таких как добавление полей и подписей к ним или выбор стиля оформления отчета. Далее полученный макет отчета в режиме конструктора приводится пользователем к желаемому виду. На рис.8.20 видна структура отчета. Он состоит из нескольких областей (разделов): заголовка отчета, верхнего колонтитула, области данных, нижнего колонтитула и примечания отчета. Разделы содержат элементы отчета, которые в режиме конструктора представляются в виде полей разных типов и являются объектами редактирования. Некоторые области, как в данном случае примечание отчета, могут быть пустыми. В области данных располагаются поля записей источника отчета с содержательной для пользователя информацией. Здесь могут быть размещены вычисляемые поля, в том числе поле, позволяющее нумеровать строки отчета. При выполнении группировок и/или сортировок данных в отчете появляются заголовки и примечания групп, которые содержат поля записей источника отчета, используемые как вспомогательные для выполнения сортировки и группировки. Эти области располагаются в порядке, установленном разработчиком отчета.
(рис 8.20) Структура суммарного отчета
Модификация элементов отчета, в том числе и разделов отчета, выполняется путем изменения их свойств. Вывод значений полей источника данных отчета основан на принципе наследования свойств: если при создании таблицы было определено некоторое свойство отображения поля, то установленный способ отображения используется в запросах, формах, отчетах до тех пор, пока свойство не будет переопределено явным образом в окне свойств соответствующего объекта. Например, в таблице Контакты тип поля Стоимость единицы был определен как Денежный, поэтому в отчете значения этого поля отображаются с двумя знаками после запятой и с указанием валюты.
Можно добавлять новые элементы к отчету, используя панель элементов или удалять включенные в отчет элементы. Возможно перемещение элементов отчета между разделами отчета.
Формы предназначены для наглядного представления данных и существенно облегчают ввод и восприятие хранящейся в базе информации. Можно подготовить стандартную форму, использовать инструменты для детальной настройки формы произвольного вида, дополнить форму результатами вычислений.
Использование экранных форм для ввода данных обуславливается в первую очередь тем, что количество полей в таблице может оказаться достаточно большим и вводить информацию в подобную таблицу будет технически неудобно. При вводе данных непосредственно в таблицу базы данных возможны ошибки, связанные с внесением данных не в те поля или не в те записи таблицы. Может случиться так, что пользователь должен вводить данные одновременно в несколько таблиц, т. к. таблицы связаны в базе, и отсутствие данных в главной таблице приведет к невозможности ввода данных в
Формы являются основными средствами создания интерфейса пользователя – именно через формы можно управлять выполнением всего спектра задач приложения и автоматизировать действия пользователя.
Для создания формы можно воспользоваться возможностями построения простых форм (табличная или форма "в столбец") или мастером форм либо разработать форму в режиме конструктора. Выбор способа создания формы зависит от квалификации пользователя и сложности разрабатываемой формы. Весьма плодотворным также оказывается комбинированный подход: сначала используется мастер формы, а затем полученная форма дорабатывается в режиме конструктора. Режим макета позволяет модифицировать структуру формы и одновременно видеть измененное представление данных. При любом способе создания формы для нее, прежде всего, определяется источник данных – таблица или запрос. Если форма основана на запросе, то он автоматически выполняется при открытии формы.
К числу важных достоинств MS Access относится то, что работа с экранными формами универсальна и подобна работе с отчетами. Режим конструирования экранной формы аналогичен режиму конструктора отчета. Структура формы ориентирована на возможности представления табличных данных. Форма состоит из разделов, основные из которых – заголовок, примечание формы и область данных. Именно в области данных отображается информация, отличающая одну запись от другой, т. е. различные значения свойств объектов реального мира. Процесс проектирования формы в среде MS Access сводится к добавлению управляющих элементов и изменению их свойств. Можно добавить такие элементы управления, как надпись, поле, кнопка, флажок, переключатель, список, набор вкладок и др. (элементы управления показаны на рис.8.21). Помимо этого к форме можно подключать дополнительные элементы управления ActiveX, что значительно расширяет возможности представления данных. Каждый элемент управления обладает своим набором свойств, изменение которых приводит к изменению его вида и поведения, например, можно менять цвет, шрифт, изменять размеры элемента и т.п. Сама форма и ее разделы также рассматриваются как элементы управления и обладают настраиваемыми наборами свойств. Источником вычисляемого элемента, размещаемого в форме, является расчетная формула, построенная по правилам формирования выражений. Для упрощения записи выражений можно воспользоваться Построителем выражений.
(рис 8.21) Панель элементов управления формы
На рис.8.22 показана составная форма Абоненты, которая содержит командные кнопки для вызова двух других форм. Основная форма Абоненты построена на многотабличном запросе, и данные, высвечиваемые в этой форме, организованы в соответствии с главной таблицей Абоненты. Верхняя часть формы показывает информацию о некотором абоненте. Подчиненная форма Звонки отображает в табличном виде информацию о звонках выбранного абонента. Перемещение в форме Абоненты возможно по абонентам или по звонкам. При переходе к следующему абоненту изменяются строки формы Звонки, в которые выводится информация, относящаяся уже к другому абоненту.
Нажатие на кнопку Новый звонок вызывает загрузку формы, которая высвечивает данные только по выбранному абоненту, на что указывает выполняемая в форме фильтрация (рис.8.22). Это достигается за счет того, что MS Access позволяет отображать в объекте базы, вновь загружаемом при помощи командной кнопки, или все отобранные в запросе записи, или записи, которые относятся к субъекту, выбранному в основной форме. По сути, из единой формы Абоненты реализовано управление данными, находящимися в системе взаимосвязанных таблиц. Структура формы Новый звонок соответствует структуре таблицы Звонки. Но можно построить форму, в которой поля таблицы будут расположены в любом порядке.
(рис 8.22) Составная форма
Навигация по записям источника данных для всех видов форм подобна навигации в таблице, но имеет и дополнительные возможности: использование линеек прокрутки и пиктограмм навигации, переход по записям путем изменения номера текущей записи, которое находится в нижней части окна. Можно перемещаться по записям главной и подчиненной форм.
Через форму довольно просто вносить изменения в данные базового источника. Следует отметить, что если источником данных формы является многотабличный запрос, то могут модифицироваться сразу несколько таблиц. Изменения в главной форме вызывают модификацию полей не только главной, но и
Различные свойства полей и формы в целом помогают заблокировать внесение изменений во все или некоторые поля базового источника, реализуя таким образом ограничение доступа к данным. Для ввода новой записи форма должна быть открыта для модификации данных (обычный режим формы). В этом режиме новая запись всегда добавляется в конец высвеченных данных после установки на пустую запись. Переключение в режим ввода новых записей высвечивает бланк записи с пустыми или заполненными по умолчанию значениями полей данных. Режим открытия формы можно изменить при помощи специального свойства формы.
В форме операции поиска и сортировки можно выполнять в основном теми же способами, что и в таблицах. Способы фильтрации в форме совпадают с аналогичными возможностями для таблиц.
MS Access позволяет создавать формы в виде сводных таблиц или сводных диаграмм, которые строятся абсолютно аналогично построению этих объектов в MS Excel. Доступны те же типы диаграмм, что и в MS Excel.
Экранные формы часто применяются для создания приложения, работа с которым предполагает различные способы работы с базой. Диспетчер кнопочных форм обеспечивает быструю и гибкую разработку внешнего интерфейса системы (по сути, разработку приложения) определяющего перечень основных режимов работы с созданной базой данных и их иерархию. При этом создается основная форма (рис.8.23), которая в MS Access носит название
Диспетчер кнопочных форм можно вызвать нажатием одноименной кнопки
, расположенной на вкладке Работа с базами данных. Этот инструмент помогает сконструировать кнопочные формы различных уровней, т.е. помогает создать приложение базы данных, с которым впоследствии может работать любой человек. Кроме того, разработчик приложения может указать системе, какую форму следует загрузить при открытии базы данных, и тем самым полностью скрыть интерфейс СУБД.
На рис.8.23 отображена
(рис 8.23) Главная кнопочная форма
(рис 8.24) Страница кнопочной формы
Кнопочная форма состоит из страниц, каждая из которых имеет название и, в свою очередь, является формой. Одна страница кнопочной формы считается основной или главной: именно она высвечивается при открытии кнопочной формы. На каждой странице кнопочной формы располагаются кнопки и их обозначения. Для каждой кнопки определены некоторые действия, с нею связанные. Это может быть высвечивание следующей страницы кнопочной формы, отображение формы или отчета, выход из приложения и т.д. Для управления кнопочной формой в базе данных автоматически создается таблица Switchboard Items (рис.8.25), каждая строка которой описывает страницу формы или открываемые формы, отчеты и т.д.
(рис 8.25) Таблица элементов кнопочных форм
MS Access обеспечивает два традиционных способа защиты базы данных. Простейший способ защиты – это установка пароля, требуемого при открытии базы данных. Тогда при каждом открытии базы данных будет появляться диалоговое окно, в котором требуется ввести пароль. Этот способ достаточно надежен, т. к. MS Access шифрует пароль, и к нему нет прямого доступа при чтении файла базы данных. После открытия базы данных все ее объекты становятся полностью доступными в течение сеанса работы с базой. Можно считать эту меру защиты достаточной для баз данных, которые совместно используются небольшой группой пользователей или установлены на автономном компьютере.
Гораздо более надежным и гибким способом организации защиты является защита на уровне пользователей. Такой способ защиты позволяет ограничить возможность получения или изменения той или иной информации в базе данных для конкретного пользователя.
По умолчанию в базе определены две группы пользователей: Admins и Users. Для каждой группы задаются разрешения на доступ к объектам базы данных (права доступа). Члены группы Admins, как правило, имеют разрешения на доступ ко всем объектам базы данных. Поскольку группа Users объединяет всех пользователей, имеет смысл ей присваивать некоторый минимальный набор прав. Можно создавать собственные учетные записи групп, предоставляя этим группам соответствующие разрешения и добавляя в группы пользователей, исходя из функциональной специфики предметной области. Один и тот же пользователь может являться членом различных групп.
Как группам, так и пользователям предоставляются разрешения на доступ, определяющие допустимые для них действия по отношению к каждому объекту базы данных. Набор возможных прав, очевидно, определяется спецификой объекта. При запуске MS Access от пользователей требуется идентифицировать себя и ввести пароль.
К этим возможностям относятся создание резервной копии, восстановление и сжатие баз данных, документирование объектов базы данных.
При практической эксплуатации базы данных MS Access возникает необходимость общего копирования БД, восстановления БД после сбоев, сжатия БД и наконец, репликации – режима получения текущей копии с возможностью эксплуатации ее на переносном или изолированном компьютере с последующей синхронизацией существующих копий БД.
Сжатие БД обычно выполняется при интенсивной модификации БД либо в процессе разработки новых объектов (таблиц, форм, отчетов, запросов, модулей), либо в процессе добавления и удаления данных. В этих случаях все удаляемые объекты и данных удаляются логически, т. е. физически они остаются внутри файла базы данных, но в окне базы данных они отсутствуют. Файл базы данных существенно разрастается, и работа с базой значительно усложняется.
Восстановление базы используется после нарушения
Разделение базы данных на клиентское и серверное приложения может потребоваться по различным причинам. Серверная база данных содержит таблицы и хранится на файловом сервере. В клиентской базе данных, которая содержит ссылки на таблицы серверной базы данных, хранятся все формы, запросы, отчеты, макросы и модули. Клиентская база данных устанавливается на рабочих станциях пользователей. Такое разделение обеспечивает наиболее эффективный способ эксплуатации системы:
Разделить базу данных можно вручную или при помощи служебной программы "Разделитель баз данных".
В ответ на определенные действия пользователя могут выполняться процедуры обработки событий, например, нажатие на некоторую кнопку формы может инициировать автоматическое создание новой таблицы определенной структуры. Основной набор средств MS Access, рассмотренный выше, ориентирован на пользователей, не владеющих языками программирования. Пользователи, знакомые с языками программирования, могут использовать макросы и модули (процедуры на языке Visual Basic for Application, VBA). С их помощью можно существенно расширить функциональные возможности создаваемого приложения и настроить его на нужды конечных пользователей.
В MS Word и MS Excel имеется средство автоматической записи макросов –
Макрос в MS Access представляет собой структуру, состоящую из одной или нескольких макрокоманд СУБД Access, которые выполняются либо последовательно, либо в порядке, определенном некоторыми заданными в макросе условиями. С помощью макросов можно выполнить практически все действия с объектами MS Access. Основное назначение макросов – это создание интерфейса приложения. С помощью макросов можно расположить на экране меню и панели инструментов, удобные для приложения.
Макросы легко создавать – для этого не нужно изучать синтаксис языка программирования, а достаточно знать лишь основные приемы работы в MS Access. Однако использование макросов имеет и некоторые недостатки, а именно: возможности макрокоманд ограничены по сравнению с возможностями языка VBA; процедуры VBA выполняются быстрее; макросы являются объектами, существующими отдельно от форм и отчетов, в которых они используются, и поэтому при увеличении количества макросов их поддержка становится достаточно трудоемкой. Тем не менее, во многих случаях использование макросов вполне оправдано, т. к. это существенно упрощает и ускоряет разработку приложения. С помощью макросов можно создавать небольшие однопользовательские приложения, однако если скорость работы приложения критична, лучше применять процедуры VBA.
Если количество макросов оказалось очень большим, можно объединить несколько макросов в группу макросов. Рекомендуется, например, все макросы, связанные с событиями в форме или отчете, объединять в группу макросов, соответствующую данной форме или отчету соответственно. При этом каждый макрос группы должен иметь свое имя, а имя объединенного объекта будет являться именем группы макросов.
Работа по созданию и запуску макросов выполняется так же, как и работа с любым объектом базы. Отличия определяются типом объекта. Макрос создается и редактируется в режиме конструктора. В окне конструктора выбирается макрокоманда из списка всех макрокоманд. Макрокоманды можно сгруппировать по категориям: работа с данными; выполнение; работа с объектами; импорт/экспорт данных и объектов, настройка интерфейса приложения. В категорию работы с данными входит набор макрокоманд, обеспечивающих отбор данных (фильтрация записей в формах и таблицах), перемещение по данным и элементам управления, а также обновление данных в активных формах, таблицах и запросах. К категории выполнения можно отнести выполнение команд, макросов, процедур или запросов, запуск другого приложения, прерывание выполнения и завершение работы в MS Access. Для настройки интерфейса можно вывести на экран или, наоборот, скрыть встроенную или пользовательскую панель инструментов, подать звуковой сигнал и т. п.
Наиболее обширная категория макрокоманд – это макрокоманды работы с объектами. MS Access состоит из нескольких компонентов, каждый из которых предоставляет собственный набор объектов, информация о которых содержится в библиотеках объектов. Например, библиотека объектов MS Access хранит информацию об объектах, предназначенных для отображения данных, для работы с приложением. В частности, это объекты формы или отчета. Макрокоманды для этих объектов позволяют в первую очередь выполнять копирование, переименование и сохранение объектов. Библиотека объектов
После выбора макрокоманды автоматически высвечивается список аргументов, который зависит от выбранной макрокоманды и может отсутствовать, если макрокоманда не имеет аргументов. В макросах используется последовательный порядок выполнения макрокоманд. Однако этот порядок может быть изменен при помощи условий выполнения или пропуска макрокоманд. Условия задаются в виде выражений в окне конструктора макросов после нажатия пиктограммы Условия
на вкладке конструктора макросов.
Выполнение макроса инициируется нажатием на кнопку Выполнить
.
Можно нажать кнопку Выполнить макрос
, расположенную в группе Макрос вкладки Работа с базами данных. В этой группе расположены различные пиктограммы для работы с макросами и процедурами Visual Basic (рис.8.26).
Наиболее часто макросы используются в приложении MS Access для обработки событий объектов. События – это любые действия, распознаваемые объектом, которые происходят в результате манипуляций пользователя, выполнения инструкций VBA или генерируются системой. Примером события является вывод формы на экран или нажатие кнопки. Для каждого объекта базы определены свои собственные события, перечень которых расположен на вкладке События диалогового окна свойств объекта (рис.8.27).
(рис 8.26) Группа Макрос вкладки Работа с базами данных
(рис 8.27) События элемента Кнопка
Каждому событию можно назначить макрос или процедуру VBA, которые будут автоматически выполняться в ответ на произошедшее событие. Практически программирование в MS Access сводится к написанию макросов или процедур, обрабатывающих события, т. е. программируется реакция объектов на события.
В форме Звонки абонентов (рис.8.28) размещена дополнительная командная кнопка Добавить звонок (имя кнопки n_call), при нажатии на которую открывается форма Новый звонок в режиме добавления данных. При этом открытие формы сопровождается звуковым сигналом. Для выполнения перечисленных действий создан макрос new_call (рис.8.29) из двух макрокоманд – открытия формы и подачи сигнала. Аргументы макрокоманды Открыть форму указывают на имя открываемой формы Новый звонок и режим данных Добавление. Указанный макрос выполняется автоматически при возникновении события Нажатие кнопки (рис.8.27).
Нажатие на кнопку Новый звонок (рис.8.28) открывает ту же форму, но в режиме просмотра данных. Для добавления новой записи в этом случае необходимо перейти к последней записи формы.
(рис 8.28) Модифицированная составная форма
(рис 8.29) Макрос открытия формы
Для программирования в MS Access используется процедурный язык Visual Basic for Applications (VBA) с добавлением объектных расширений и элементов SQL (более подробно о языке VBA см. раздел 3). Язык программирования VBA является общим инструментом для всех приложений MS Office, позволяющим решать любые задачи программирования, начиная от автоматизации действий конкретного пользователя и кончая разработкой полномасштабных приложений, использующих MS Office в качестве среды разработки.
Код VBA в приложении MS Access содержится в модулях. Модули являются такими же объектами MS Access, как таблицы, запросы, формы, отчеты и макросы. Основное содержание модулей – это процедуры на языке VBA. Модули, в отличие от макросов, являются более мощным средством разработки программных расширений в среде MS Access. Применение модулей требует от пользователя навыков программирования, а также знания основных принципов объектно-ориентированного программирования.
Если в базе данных существуют макросы, то они могут быть преобразованы в процедуры на VBA. Это касается как макросов, связанных с событиями в формах и отчетах, так и общих макросов, не связанных с формами и отчетами. Все они преобразуются в отдельные модули, причем макросы, выполняемые при возникновении событий, преобразуются в процедуры обработки событий. На рис.8.30 приведен преобразованный в процедуру макрос new_call, показанный на рис.8.29. На вкладке События для кнопки n_call (рис.8.27) в строке, соответствующей событию Нажатие кнопки, вместо названия макроса будет находиться текст [Процедура обработки событий], означающий вызов процедуры нажатия на кнопку n_call.
Процесс создания программных расширений в среде MS Access предполагает активное использование технологии объектно-ориентированного программирования (ООП). Каждый объект базы данных характеризуется набором свойств, методов и событий. Большое количество разнообразных событий определено для форм, отчетов и элементов управления, используемых в них. В процессе работы приложения при возникновении события запускаются специально разработанные программы – обработчики событий (событийные процедуры). Работа программиста, по сути, сводится к определению того события, которое требуется обработать программой, и программированию реакции на событие, а также к созданию новых объектов, описанию их свойств, методов и событий.
(рис 8.30) Макрос, преобразованный в процедуру
Существуют два типа модулей: стандартные модули и модули класса. Стандартные модули содержат общие процедуры, которые не связаны с конкретным объектом, например, формой или отчетом. Общие процедуры могут вызываться из других модулей и использоваться при обработке событий разных объектов, для вычисления значений в разных запросах или формах и т.д. Стандартные модули применяются также для объявления глобальных (т.е. доступных во всех модулях приложения) переменных и констант. Модуль класса отличается от стандартного модуля тем, что, кроме процедур, он содержит описание объекта и используется для работы с объектом. Примерами модулей класса являются модули форм и отчетов. Модули форм и отчетов связаны с конкретной формой или отчетом и содержат процедуры обработки событий, запускаемых в ответ на их возникновение в форме или отчете (отклики на событие). Для создания стандартного модуля используется объект Модули в списке объектов базы данных. Стандартный модуль или модуль класса можно создать при выборе соответствующей строки в списке новых объектов база данных. Модуль формы создается и связывается с формой при создании первой процедуры обработки событий для этой формы или одного из элементов управления формы или же при нажатии кнопки
Просмотреть код в режиме конструктора формы. Все сказанное относится и к модулям отчета.
Важнейшей частью объектно-ориентированного программирования в MS Access является программирование доступа к данным, которое возможно благодаря использованию объектов DАО. С помощью этих объектов, их свойств и методов можно создавать базу данных, изменять структуру таблиц и запросов, устанавливать и изменять связи между данными, а также извлекать, добавлять, удалять и изменять данные в базе MS Access. Объекты
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.