Опубликован: 19.11.2012 | Уровень: для всех | Доступ: платный | ВУЗ: Национальный исследовательский университет "Высшая Школа Экономики"
Лекция 8:

Системы управления базами данных

Организация защиты данных в СУБД MS Access

MS Access обеспечивает два традиционных способа защиты базы данных. Простейший способ защиты – это установка пароля, требуемого при открытии базы данных. Тогда при каждом открытии базы данных будет появляться диалоговое окно, в котором требуется ввести пароль. Этот способ достаточно надежен, т. к. MS Access шифрует пароль, и к нему нет прямого доступа при чтении файла базы данных. После открытия базы данных все ее объекты становятся полностью доступными в течение сеанса работы с базой. Можно считать эту меру защиты достаточной для баз данных, которые совместно используются небольшой группой пользователей или установлены на автономном компьютере.

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

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

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

Дополнительные режимы работы с базой данных

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

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

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

Восстановление базы используется после нарушения целостности файла БД, а преобразование базы необходимо для работы с базами, созданными в более ранних версиях MS Access.

Разделение базы данных на клиентское и серверное приложения может потребоваться по различным причинам. Серверная база данных содержит таблицы и хранится на файловом сервере. В клиентской базе данных, которая содержит ссылки на таблицы серверной базы данных, хранятся все формы, запросы, отчеты, макросы и модули. Клиентская база данных устанавливается на рабочих станциях пользователей. Такое разделение обеспечивает наиболее эффективный способ эксплуатации системы:

  • пользователи не могут вносить изменения в структуру таблиц и их взаимосвязи;
  • когда пользователь открывает форму, эта форма открывается локально на компьютере пользователя, а не передается по сети. По сети передаются только данные в связанных таблицах.

Разделить базу данных можно вручную или при помощи служебной программы "Разделитель баз данных".

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

В ответ на определенные действия пользователя могут выполняться процедуры обработки событий, например, нажатие на некоторую кнопку формы может инициировать автоматическое создание новой таблицы определенной структуры. Основной набор средств MS Access, рассмотренный выше, ориентирован на пользователей, не владеющих языками программирования. Пользователи, знакомые с языками программирования, могут использовать макросы и модули (процедуры на языке Visual Basic for Application, VBA). С их помощью можно существенно расширить функциональные возможности создаваемого приложения и настроить его на нужды конечных пользователей.

В MS Word и MS Excel имеется средство автоматической записи макросов – макрорекордер. После включения записи макроса можно создать процедуру, выполнив необходимые действия и остановив запись макроса. Все действия пользователя, выполненные между включением и выключением записи макроса, преобразуются в текст процедуры VBA. Этот текст затем можно просмотреть и отредактировать с помощью редактора VBA. Выполнение записанной процедуры равносильно повторению действий пользователя. В MS Access средств автоматической записи макросов нет. Автоматическая генерация кода VBA происходит только при создании объектов в режиме мастера.

Макрос в MS Access представляет собой структуру, состоящую из одной или нескольких макрокоманд СУБД Access, которые выполняются либо последовательно, либо в порядке, определенном некоторыми заданными в макросе условиями. С помощью макросов можно выполнить практически все действия с объектами MS Access. Основное назначение макросов – это создание интерфейса приложения. С помощью макросов можно расположить на экране меню и панели инструментов, удобные для приложения.

Макросы легко создавать – для этого не нужно изучать синтаксис языка программирования, а достаточно знать лишь основные приемы работы в MS Access. Однако использование макросов имеет и некоторые недостатки, а именно: возможности макрокоманд ограничены по сравнению с возможностями языка VBA; процедуры VBA выполняются быстрее; макросы являются объектами, существующими отдельно от форм и отчетов, в которых они используются, и поэтому при увеличении количества макросов их поддержка становится достаточно трудоемкой. Тем не менее, во многих случаях использование макросов вполне оправдано, т. к. это существенно упрощает и ускоряет разработку приложения. С помощью макросов можно создавать небольшие однопользовательские приложения, однако если скорость работы приложения критична, лучше применять процедуры VBA.

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

Работа по созданию и запуску макросов выполняется так же, как и работа с любым объектом базы. Отличия определяются типом объекта. Макрос создается и редактируется в режиме конструктора. В окне конструктора выбирается макрокоманда из списка всех макрокоманд. Макрокоманды можно сгруппировать по категориям: работа с данными; выполнение; работа с объектами; импорт/экспорт данных и объектов, настройка интерфейса приложения. В категорию работы с данными входит набор макрокоманд, обеспечивающих отбор данных (фильтрация записей в формах и таблицах), перемещение по данным и элементам управления, а также обновление данных в активных формах, таблицах и запросах. К категории выполнения можно отнести выполнение команд, макросов, процедур или запросов, запуск другого приложения, прерывание выполнения и завершение работы в MS Access. Для настройки интерфейса можно вывести на экран или, наоборот, скрыть встроенную или пользовательскую панель инструментов, подать звуковой сигнал и т. п.

Наиболее обширная категория макрокоманд – это макрокоманды работы с объектами. MS Access состоит из нескольких компонентов, каждый из которых предоставляет собственный набор объектов, информация о которых содержится в библиотеках объектов. Например, библиотека объектов MS Access хранит информацию об объектах, предназначенных для отображения данных, для работы с приложением. В частности, это объекты формы или отчета. Макрокоманды для этих объектов позволяют в первую очередь выполнять копирование, переименование и сохранение объектов. Библиотека объектов DAO (Data Access Objects) предоставляет объекты доступа к данным, которые позволяют манипулировать данными из Visual Basic, т. е. управлять базами данных из любого приложения, поддерживающего VBA.

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

Выполнение макроса инициируется нажатием на кнопку Выполнить Выполнить.

Можно нажать кнопку Выполнить макрос Выполнить макрос, расположенную в группе Макрос вкладки Работа с базами данных. В этой группе расположены различные пиктограммы для работы с макросами и процедурами 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

Для программирования в 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. Объекты DAO позволяют взаимодействовать с базами данных из любых приложений MS Office или работать с данными файлов разных форматов (например, MS Excel, dBase или Paradox), подключаться к базам данных на удаленных серверах и разрабатывать клиент-серверные приложения, используя источники данных ODBC.

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

  • Каковы основные функции баз данных?
  • Какие существуют типы организации баз данных?
  • Как организована реляционная база данных?
  • Перечислите объекты базы данных.
  • Укажите различия между таблицами и запросами, между формами и отчетами.
  • Какие объекты базы данных используются для хранения данных?
  • Что такое поле таблицы?
  • Понятие записи таблицы.
  • Какие типы полей допустимы в таблицах базы данных?
  • Какие свойства полей позволяют ограничить ввод данных?
  • В каких целях используются экранные формы?
  • Перечислите способы создания форм.
  • Какие разделы может содержать форма?
  • Как заблокировать внесение изменений в поля формы?
  • Какие способы защиты данных существуют в настольных СУБД (на примере Access)?
Аннна Миллер
Аннна Миллер
Екатерина Дмитриева
Екатерина Дмитриева
Марина Сафонова
Марина Сафонова
Россия
Лидия Белова
Лидия Белова
Россия