Безопасность и объекты баз данных
Базы данных хранятся на компьютере в виде файлов. Однако работа с ними отличается от обычных файлов других типов, создаваемых прочими приложениями. Это отличие заключается в повышенных требованиях обеспечения безопасности хранимой в базах информации.
При работе с обычными приложениями мы даём команду Сохранить перед закрытием изменённого файла, полагаясь в выполнении файловых операций на операционную систему. Если мы не сохраним файл, то вся работа по редактированию или созданию файла пропадёт.
Базы данных – это особые структуры. Информация, которая в них содержится, имеет большую, часто общественную ценность (учёт автомобилей в ГИБДД, обслуживание счетов в банках, обработка результатов ЕГЭ…). Нередко с одной и той же базой работают тысячи пользователей по всей стране. От информации, её актуальности и сохранности, может зависеть благополучие множества людей. Поэтому целостность содержимого базы не должна зависеть ни от оператора, который может забыть сохранить введённые данные, ни от перебоев в электропитании.
Проблема безопасности решается тем, что в СУБД для сохранения данных используется двойной подход. С одной стороны, изменение структуры базы, добавление или удаление таблиц и другие, так сказать, глобальные операции происходят с сохранением файла базы данных. О таких операциях СУБД предупреждает пользователя (разработчика), их не проводят с базой, находящейся в эксплуатации. Кроме того, что пользователи не могут изменять структуру базы, безопасность обеспечивается ещё и тем, что отдельным пользователям предоставляются только те данные и соответствующие права доступа, которые предусмотрены на конкретном рабочем месте.
С другой стороны, операции по наполнению и редактированию содержимого базы, не затрагивающие её структуру, максимально автоматизированы, выполняются без предупреждения, в обход операционной системы. Если мы добавим или удалим записи, отредактируем хотя бы одно поле, то все изменения тут же сохранятся на диске. Поэтому нельзя ставить учебные эксперименты на реально эксплуатируемых базах – только на специальных учебных базах или копиях.
Каждая СУБД реализует свои типы объектов. Перечислим основные типы объектов, которые используются в БД на примере MS Access.
Таблицы – основные объекты любой реляционной БД. В таблицах хранится как структура базы (поля, их типы и свойства), так и все данные (записи).
Запросы – объекты, предназначенные для доступа к нужным данным из одной или нескольких таблиц. Результат выполнения запроса также представляется в табличной форме. Особенность запросов на выборку состоит в том, что из нужных полей и записей базовых таблиц в оперативной памяти создаётся временная результирующая таблица, которую ещё называют моментальным снимком. Основное назначение запросов – обеспечение удобства и безопасности.
Удобство работы с запросом состоит в том, что, во-первых, пользователю предоставляется доступ не ко всем данным, а только к тем, которые удовлетворяют указанным в запросе критериям. Во-вторых, отобранные по запросу данные могут быть упорядочены по указанному в запросе принципу, а в таблицах они хранятся в естественном порядке по мере поступления. В-третьих, применяемые по запросу операции сортировки и фильтрации выполняются гораздо быстрее, чем с базовыми таблицами, так как результирующая таблица находится на во внешней, а в оперативной памяти.
Соображения безопасности состоят в том, что чем меньше доступа к базовым таблицам имеют пользователи, тем лучше. Запросы составляются так, что из всех возможных данных пользователю предоставляется только необходимый минимум. Во-первых, снижается риск того, что данные в таблицах будут повреждены в результате неумелых или ошибочных действий пользователей. Во-вторых, предоставив разным пользователям разные запросы, можно эффективно разграничить их доступ к данным в строгом соответствии с кругом персональных обязанностей. Например, сотрудник отдела кадров может вести таблицы преподавателей, сотрудник деканата – соответствующих групп студентов, а преподаватель – ведомости по своим дисциплинам. При этом сотрудник отдела кадров не может выставлять в ведомости оценки, а преподаватель – изменять список группы.
С помощью различных видов запросов можно не только выбирать данные, но и изменять их, создавать новые таблицы, автоматически наполнять таблицы данными, импортированными из других источников, выполнять вычисления, преобразование по заданному алгоритму и многое другое.
Формы – объекты, предназначенные для удобного и безопасного (аналогично запросам) ввода данных. В отличие от запросов, представляющих данные в виде таблиц, формы представляют собой окна с размещенными на них полями данных и элементами управления (кнопки, надписи, счетчики и прочие). К формам применяются специальные средства оформления, наглядно отображающие существующие данные и облегчающие ввод новых. Преимущества форм можно представить, если ввод данных осуществляется с заполненных бумажных бланков. В этом случае графическое представление экранной формы повторяет оформление бланка – это заметно упрощает работу наборщика, снижает его утомление и уменьшает количество ошибок, пропущенных и неверно заполненных полей.
Отчеты – объекты, предназначенные только для вывода данных. Отчеты позволяют на основе таблиц и запросов сформировать наглядные документы, которые могут быть распечатаны или включены в документ другого приложения. В отчетах могут быть не только отфильтрованные и отсортированные, но и сгруппированные данные. Добавляются специальные элементы оформления, характерные для печатных документов: колонтитулы, номера страниц, время создания отчёта и т.п.
Макросы и модули – объекты, предназначенные для автоматизации работы с базой. Макросы состоят из последовательности внутренних команд СУБД и предназначены для автоматизации повторяющихся операций. Модули создаются путём программирования на языке Visual Basic for Applications и предназначены для создания новых функций, реализации нестандартных возможностей, позволяющих удовлетворить специфические требования заказчика, повысить быстродействие системы управления и уровень её защищённости.
15.7 Проектирование баз данных *
Проектирование БД представляет собой длительный, трудоёмкий, слабо формализованный процесс, от которого зависит жизнеспособность и эффективность проектируемой базы, её способность к развитию. Проектирование БД выполняется, как правило, коллективом разработчиков и включает следующие этапы:
• анализ предметной области;
• проектирование и кодирование;
• тестирование и сопровождение.
Анализ предметной области необходим для составления технического задания на разработку базы данных. Поскольку заказчик не всегда обладает необходимой квалификацией, то этот этап обычно выполняется разработчиком совместно с заказчиком. Предметная область включает в себя описание информационных объектов, их свойств, взаимосвязей, а также пожелания заказчика. При этом важно не ограничиваться взаимодействием с головным подразделением, а провести обсуждение с возможными пользователями, со всеми службами, которые могут оказаться поставщиками данных в базу и их потребителями. В техническом задании более строго указывается список исходных и выходных данных, оговаривается интерфейс, определяющий переход от представления данных в БД к представлению, принятому среди пользователей, и обратно. В общем случае пользователи представляют данные в виде документов различных видов, от произвольных текстов до справок и таблиц фиксированного формата.
Проектирование баз данных осуществляется на двух уровнях – физическом и логическом. На физическом уровне решаются вопросы размещения данных на внешних носителях. Во многом эта работа выполняется СУБД автоматически без участия разработчика. На логическом уровне создаётся структура базы, начиная с построения модели данных предметной области (инфологической, то есть информационно-логической модели) и заканчивая схемой данных (описанием таблиц и связей между ними).
Разработка структуры основных таблиц начинается с составления генерального списка полей, который может насчитывать сотни позиций. Для каждого поля определяется подходящий тип данных. Поля генерального списка распределяются по базовым таблицам. Дальнейшее рассмотрение информационной структуры приводит к разбиению основных таблиц на более мелкие с целью устранения повторяющихся данных в записях – нормализации, что уменьшает объем памяти, занимаемый базой данных на диске, и обеспечивает непротиворечивость данных в БД. Процесс нормализации носит итерационный (пошаговый) характер, осуществляется методом нормальных форм. Суть метода состоит в последовательном переводе таблицы из одной нормальной формы в другую, причем каждая последующая устраняет определенный вид функциональной зависимости между полями таблицы. Всего в теории описаны шесть нормальных форм, на практике чаще всего применяются первые три.
Первая нормальная форма. Отношение называется приведенным к первой нормальной форме, если все его атрибуты неделимы. Например, отношение, содержащее поле ФИО, не приведено к первой нормальной форме, если в запросах БД требуется выделить отдельно фамилию или имя. Разработчики БД изначально строят исходные отношения так, чтобы они были в первой нормальной форме.
Вторая нормальная форма. Для приведения отношений ко второй нормальной форме введем понятие функциональной зависимости. Функциональная зависимость полей — это зависимость, при которой в строке определенному значению ключевого поля соответствует только одно значение не ключевого поля. В случае составного ключа вводится понятие функционально полной зависимости. При функционально полной зависимости не ключевое поле зависит от составного ключа, но не зависит от любого поля, входящего в составной ключ. Например, в отношении СТУДЕНТ (ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО, ФАКУЛЬТЕТ, КУРС, ГРУППА) первичным ключом является совокупность полей ФАМИЛИЯ + ИМЯ + ОТЧЕСТВО. Поля ФАКУЛЬТЕТ, КУРС, ГРУППА функционально полно зависят от составного ключа.
Отношение находится во второй нормальной форме, если оно находится в первой нормальной форме, и каждое не ключевое поле функционально полно зависит от составного ключа. Например, в отношении УСПЕВАЕМОСТЬ (НОМЕР ЗАЧЕТКИ, ФАМИЛИЯ, ДИСЦИПЛИНА, ОЦЕНКА) составным ключом является совокупность НОМЕР ЗАЧЕТКИ + ДИСЦИПЛИНА. Это отношение находится в первой нормальной форме, но оно не находится во второй нормальной форме, так как поле ФАМИЛИЯ не имеет полной функциональной зависимости от составного ключа. Для перевода этого отношения во вторую нормальную форму необходимо исключить из него поле ФАМИЛИЯ, так как оно функционально зависит от НОМЕРА ЗАЧЕТКИ. Т.е. исходное отношение необходимо разбить на два связанных отношения УСПЕВАЕМОСТЬ (НОМЕР ЗАЧЕТКИ, ДИСЦИПЛИНА, ОЦЕНКА) и СПИСОК (НОМЕР ЗАЧЕТКИ, ФАМИЛИЯ). Связь здесь осуществляется по полю НОМЕР ЗАЧЕТКИ.
Третья нормальная форма позволяет устранить транзитивную зависимость. Транзитивная зависимость существует в том случае, если одно из двух описательных полей зависит от ключа, а второе зависит от первого. Отношение находится в третьей нормальной форме, если оно находится во второй нормальной форме, и каждое не ключевое поле не транзитивно зависит от ключа.
Например, в отношении СТУДЕНТ (ФАМИЛИЯ, ФАКУЛЬТЕТ, НАЗВАНИЕ вуза, АДРЕС) поле АДРЕС транзитивно (через поле НАЗВАНИЕ вуза) зависит от ключа ФАМИЛИЯ. При заполнении экземплярами такого отношения поле Адрес будет многократно повторяться. Для устранения транзитивной зависимости в классе используется «расщепление» отношения на несколько новых. Например, отношение СТУДЕНТ расщепляется на два: СТУДЕНТ (ФАМИЛИЯ, ФАКУЛЬТЕТ, НАЗВАНИЕ вуза) и ВУЗ (НАЗВАНИЕ вуза, АДРЕС), связь по полю НАЗВАНИЕ вуза.
Процесс нормализации заканчивается созданием схемы данных, в которой указываются все нормализованные таблицы с их полями и взаимосвязями между ними. Дальнейшая работа над проектом – кодирование – связана с реализацией базы в среде конкретной СУБД, выбираемой с учётом требований заказчика и намеченной архитектуры ИС. Например, применительно к СУБД MS Access, задается формат файла базы данных, создаются таблицы и другие объекты БД. Access обладает ручными (режим Конструктора) и автоматизированными (с помощью Мастеров) средствами создания объектов. Автоматизированные средства более наглядные и производительные. Ручные – более трудоёмкие, требуют дополнительных знаний об инструментах и возможностях СУБД, но и более гибкие.
Тестирование должен проходить любой программный продукт, тем более такой, как БД. При тестировании с использованием реальных данных обнаруживаются возможные ошибки, собираются статистические данные для определения показателей качества и надёжности созданного программного обеспечения.
Сопровождение является самым продолжительным этапом жизненного цикла любой БД. Основные действия на этом этапе сводятся к наблюдению за созданной системой и поддержке её нормального функционирования.
Вопросы и тестовые задания для самоконтроля
1 Комплекс программ, реализующих функции ведения данных и визуализации информации в удобной для пользователя форме
1) база данных
2) система управления базой данных
3) информационная система
2 Аппаратно-программный комплекс, обеспечивающий выполнение функций обработки и визуализации информации
1) база данных
2) система управления базой данных
3) информационная система
3 Совокупность структурированных данных, относящихся к одной предметной области
1) база данных
2) система управления базой данных
3) информационная система
4 Организованная структура, предназначенная для хранения информации
1) база данных
2) система управления базой данных
3) информационная система
5 Термин, объединяющий действия по добавлению, удалению или изменению хранимых данных
1) ведение данных
2) визуализация данных
3) проектирование базы данных
4) транзакция
6 Отбор отображаемых данных в соответствии с заданным критерием, упорядочение, оформление и последующая выдача на устройство вывода
1) ведение данных
2) визуализация данных
3) проектирование базы данных
4) транзакция
7 Каковы основные функциональные возможности СУБД?
8 Чем характеризуется реляционная модель данных?
9 Перечислите основные типы объектов, которые используются в БД на примере MS Access.
10 Перечислите основные свойства полей БД на примере СУБД Microsoft Access:
11 Дайте понятие ключа.
12 Данные каких типов могут храниться в полях базы данных.
13 Какие виды связей между объектами Вам известны?
14 Какие команды выполнения типовых операций среде СУБД вы знаете.
15 Назовите основные этапы технологического процесса обработки информации с использованием СУБД.
вернуться к содержанию