Основные понятия баз данных
Выбери формат для чтения
Загружаем конспект в формате doc
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Министерство образования и науки
Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Чувашский государственный университет имени И.Н.Ульянова»
А.П. Димитриев
Базы данных
Учебное пособие
Чебоксары 2015
УДК 004.6(076.5)
ББК З973.233-018.2я73
Д
Рецензенты:
кафедра «Сервис транспортных и технологических машин и оборудования» Волжского филиала Московского автомобильно-дорожного университета (МАДИ), зав. кафедрой докт. техн. наук, профессор В.В. Белов;
канд. физ.-мат. наук, доцент кафедры управления и информатики в технических системах Чебоксарского политехнического института (филиала) ФГБОУ ВПО "Московский государственный открытый университет имени В.С.Черномырдина" А.В.Серолапкин.
Димитриев А.П.
Д Базы данных: учебное пособие / А. П. Димитриев. Чебоксары: Изд-во Чуваш. ун-та, 2015. 80 с.
ISBN
Составлено в соответствии с темами, приведенными в федеральным государственном образовательном стандарте высшего профессионального образования направления подготовки 230700 Прикладная информатика, который был утвержден в 2009 году.
Рассматриваются теоретические вопросы, а также практика по Microsoft Access и Borland Delphi.
Для студентов II курса дневной формы обучения по направлениям подготовки бакалавров 230700 – «Прикладная информатика» и 231000 – «Программная инженерия».
Ответственный редактор: канд. техн. наук доцент Е.В. Сидиряков
Утверждено Учебно-методическим советом университета
УДК 004.6(076.5)
ББК З973.233-018.2я73
ISBN
Изд-во Чуваш. ун-та, 2015
Димитриев А.П., 2015
Предисловие
Современные информационные технологии ориентированы на массовое применение баз данных: Интернет-магазины, системы учета студентов в деканатах, бухгалтерия и многие другие практические области применения.
Цель изучения дисциплины – знакомство с основными понятиями баз данных, приобретение основных навыков работы с ними. Дисциплина обеспечивает совершенствование навыков, полученных при изучении основ программирования. Акцент смещается на стадию разработки конкретных структур баз данных с последующим их использованием в практических приложениях. Дисциплина находится на стыке программирования и математики с большей ориентацией на практическое использование в программировании.
Дисциплина «Базы данных» в настоящее время изучается в соответствии с Федеральным государственным образовательным стандартом высшего профессионального образования, тогда как официально история баз данных начинается с 1960-х годов, и как самостоятельный предмет они существовали еще в 1980-е годы. Данную дисциплину учебного плана изучают в вузах России по укрупненной группе специальностей и направлений 230000 – Информатика и вычислительная техника, по некоторым стандартам для 220000 – Автоматика и управление, а также в техникумах и колледжах.
Глава 1. Основы реляционных баз данных
1.1. Основные понятия БД
Рассмотрим терминологию при работе с базами данных (БД) [7], где перевод дан только при необходимости. Базой данных (БД, database) принято называть совокупность структурированных данных с именем, которые принадлежат определенной предметной области. Принято считать, что предметная область – это часть реально существующей системы, которая функционирует самостоятельно. Например, предметная область некоего предприятия.
Данные представляют собой результат фиксации каких-либо сведений на некотором материальном носителе1. Система управления базами данных (СУБД) – это системное программное обеспечение для работы с БД, т.е.: её создание, изменение информации (добавление, изменение, поиск, удаление, отбор, представление на экране, вывод на печать, разграничение прав доступа к информации и прочее).
Информация (information) – знания по какому-либо вопросу. При этом они не теряют актуальности при изменении способа их представления2. Точного определения информации не существует, для разных областей знаний имеются свои определения. Классическое определение по Норберту Винеру: это обозначение содержания, полученное человеком из внешнего мира в процессе приспосабливания к нему этого человека и наших чувств. Обозначение подразумевает использование для фиксации того, что выявлено (т.е. содержания), т.е. каких-либо знаков, таких как, например, символов алфавита, или на низком уровне той или иной ориентации магнитного поля на носителе. Под приспосабливанием чувств понимается использование различных технических достижений, например, сканера (что свойственно обществу, поэтому использовано местоимение «наших»). Внешний мир является в некоторой степени относительным: контрпримером является информация о состоянии своего здоровья. Таким образом, это в большей степени относится к сознанию данного человека. Важными здесь являются слова «в процессе приспосабливания к нему этого человека», т.е. обозначение не должно лежать «мертвым грузом», а применяться для чего-либо. Данные становятся информацией лишь тогда, когда они могут быть использованы для принятия каких-либо решений. Например, содержимое файла с утерянным паролем не может быть использовано и информационной ценности не представляет, хотя оно и занимает дисковое пространство и является таким образом, данными. Другое дело – атрибуты того же файла: имя, размер, дата и время создания и прочее – это уже информация для его пользователя.
Основной тип современных БД – реляционные (РБД). Они включают в себя таблицы. Между таблицами возможно установление связей.
Таблица БД данных (table) – объект матричной структуры, формируемый из однотипных строк (записей, records), разделяяемых также на столбцы (поля, fields). Синоним таблицы в теории БД – отношение (relation), где строки носят название кортежей, а столбцы – атрибутов. На стадии моделирования таблица – это сущность (entity), обладающая атрибутами, которые могут принимать допустимые значения (множество этих значений называют доменом).
Ключевым элементом таблицы (ключ, regular key) в общем случае называют строковое выражение, полученное из значений нескольких полей, по которому находятся значения прочих полей для различных записей. В частном случае – это одно поле, называемое простым ключом. Применять ключи позволяют индексы. Они создаются автоматически и содержат упорядоченные сведения о значениях ключей.
Принято считать, что главный ключевой элемент (либо минимальный набор атрибутов), однозначно идентифицирующий строку в таблице (либо кортеж в отношении или экземпляр сущности) – это первичный ключ (primary key). Ключи могут также быть альтернативными (candidate) и уникальными (unique). Такие ключи тоже служат для идентификации строк.
Связью (relation) называют зависимость по функциям между различными объектами. В РБД они устанавливаются между различными таблицами по ключам. Из этих ключей один находится в таблице, которую принято называть главной, или родительской (parent). В этом случае он носит название первичного ключа. Говорят, что второй из ключей – это внешний (foreign) ключ. Он расположен во внешней, или, как ее нередко называют, дочерней (child), или подчиненной таблице. Его определяют как ключ из таблицы, у которого значение равно первичному ключу, расположенному в главной из таблиц.
Обычно этот второй ключ не является первичным, образуя при этом связь, которая носит название «один ко многим» и обозначается «1:М». Тем не менее, он может быть и первичным. Тогда тип связи становится «один к одному» и обозначается «1:1». В БД наряду с данными хранится информация о таких связях.
Следующий термин – ссылочная целостность («referential integrity») представляет собой правила, которые необходимы для того, чтобы значения ключей в таблицах, которые являются между собой связанными, соответствовали друг другу. Самостоятельно функционирующие фрагменты программ, которые называются хранимыми (stored) процедурами, имеют свойство храниться в БД для того, чтобы с их помощью можно было совершать какие-либо действия с данными. Их частным случаем является триггер, который нужен, чтобы выполнять условия ссылочной целостности.
Объект – это основной компонент системы с присущими ему задаваемыми свойствами, которые в системах программирования обозначаются словом «properties». Объект заранее установленным образом вырабатывает реакцию на внешние по отношению к данному объекту события (events).
Система – это набор объектов, воздействующих как друг на друга, так и на внешнюю среду и получающих из нее воздействия. Она обладает новым качеством по сравнению с суммой качеств отдельных объектов, составляющих ее единое целое.
Реплика БД – ее копия, требующая синхронизации. Транзакция представляет собой модификацию информации в БД, которая должна быть либо вообще не выполнена, либо выполнена полностью.
Язык SQL – универсальный язык манипулирования БД и находящейся в ней информацией. Значение, хранящееся в БД и идентифицирующее, что информации там нет, получило название «Null». Банк данных (БНД) обычно определяется как БД плюс СУБД.
1.2. Классификация БД
Модели данных
Полагается, что непустая БД содержит сведения о конкретной предметной области. Информационная модель данных – это способ описания информации о предметной области. Имеется несколько уровней таких моделей. Первый – концептуальный уровень, второй – логический, или, как его еще называют, даталогический, третьим является физический уровень и четвертый – уровень внешних моделей.
Архитектура БД
Существует ряд признаков, по которым можно классифицировать БД.
Например, одним из таких признаков является тип информации, которая может содержаться в БД. В этом случае БД можно разделить на три класса.
1. Документальные. Такие БД обычно нужны для хранения текстов.
2. Лексикографические. Они содержат некоторые языковые конструкции и используются для машинного перевода.
3. Фактографические (рис. 1.1).
Рис. 1.1. Схема классификации фактографических БД
СУБД тоже классифицируют по различным признакам.
1. Первый признак - язык общения. Когда манипуляции с данными выполняются на основе универсального языка программирования, такую СУБД называют открытой. Если этого нет, но применяется внутренний язык, – эта СУБД замкнутая. Существуют также смешанные СУБД, где используются обе разновидности языков.
2. Вторым признаком являются выполняемые функциии. Когда в СУБД хранятся какие-либо данные, и предоставляется к ним доступ, эта СУБД называется информационной. Если же нужна также интеллектуальная обработка, эта СУБД – операционная.
3. Третий признак – сфера, в которой могут применяться СУБД. В данном случае можно выделить СУБД универсальные либо специализированные.
4. Четвертый признак – мощность. По данному критерию СУБД делят на две категории. Настольные СУБД характеризуются низкими техническими требованиями, а также небольшой стоимостью. Если же СУБД корпоративная, то в связи с распределенной обработкой в ней предусмотрены развитые средства помощи администратору и т.п.
Другим признаком деления БД является технология обработки данных. БД называют централизованной, когда только один компьютер (будь то ПК, мини-ЭВМ и прочие виды вычислительных систем) хранит в себе эту базу. Противоположность этому составляет распределенная БД: её части хранятся более чем в одной машине. Для работы с ней существуют системы управления распределенными БД (СУРБД). Существуют также персональные БД, в которых не только БД, но и СУБД находятся на одном компьютере.
Следующая классификация - по доступу к данным: БД могут быть локального либо сетевого доступа. В настоящее время все БД допускают сетевой доступ, причем для многих пользователей.
Так, если БД централизованная, то в настоящее время, как и для СУБД, ее архитектура бывает файл-серверной, «клиент-сервер БД» либо «тонкий (thin) клиент - сервер приложений - сервер БД». Последнее - случай трехуровневой архитектуры.
В файл-серверной архитектуре один из компьютеров является центральным и называется файловым сервером. На нем функционирует серверная операционная система (ОС). Например, это может быть MS Windows Server 2008. БД на этой ЭВМ представляет собой набор файлов и является централизованной. Остальные компьютеры являются рабочими станциями, на которых может быть установлена ОС MS Windows XP или подобная ей. Когда пользователи обращаются к БД, их рабочие станции занимаются первичной обработкой получаемой от сервера информации в виде файлов. При интенсивном доступе к БД производительность данной системы снижается.
В архитектуре «клиент-сервер БД» также имеется выделенный сервер. Как и в предыдущей архитектуре, здесь функционирует серверная ОС. Дополнительно имеется специальное программное обеспечение (ПО), которое называется сервером БД. Например, это может быть Microsoft MySQL. Широко распространены также Microsoft SQL Server, Informix, Oracle, IBM DB2 Universal DataBase, и пр. Размер базы данных на них может достичь до миллиарда гигабайт. СУБД состоит из клиентской и серверной частей. Сервер БД использует SQL. Запрос SQL порождается рабочей станцией и передается серверу БД. Это может приводить, например, к отбору данных, которые затем передаются назад клиенту. Поэтому количество информации, передаваемой через сеть, намного сокращается.
Имеется ряд моделей, отличающихся распределением функций между клиентом и сервером.
1. Удаленный доступ (к данным). Здесь клиент выполняет функции представления и обработки данных. Данные к клиенту передаются в большом количестве, что перегружает сеть и, таким образом, снижает быстродействие системы.
2. Сервер БД. В отличие от удаленного доступа, функциональные обязанности по манипулированию данными возложены на сервер. Это значительно уменьшает нагрузку на сеть.
3. Распределенное представление. Здесь клиент занимается только визуальным представлением результатов.
4. Распределенная функция. В этом случае на стороне клиента выполняются только некоторые, специфические функции, связанные с обработкой информации.
5. Распределенная БД. Здесь клиент должен быть мощным. На нем выполняются прикладные программы, а также хранится часть данных.
Понятием «сервер БД» обычно обозначают не только серверную, но и клиентскую части СУБД.
Рассмотрим трехуровневую архитектуру. В данном случае клиент называется «тонким», поскольку часть функций (программная логика), изображаемая последовательно и увеличивающая линейные размеры, переносится на так называемый сервер приложений. Клиентом может быть HTML-страница, открываемая в браузере, или приложение Windows. В последнем случае оно взаимодействует с Web-сервисами сети Internet (Intranet). Сервер приложений формирует и передает запросы к БД, находящейся на сервере БД. Он может представлять собой Web-сервер (например, Apache), либо специальную программу (рис. 1.2).
Рис. 1.2. Трехуровневая архитектура
Существуют четыре основных типа фактографических моделей данных.
1. Иерархические БД
Иерархическая модель данных предполагает один главный объект и множество подчиненных, расположенных на разных уровнях иерархии. Схема данной модели является деревом с корневым объектом.
БД в этом случае представляет собой упорядоченное множество экземпляров дерева. СУБД поддерживает целостность связей, имеющихся у предков с потомками. В таких БД у любого потомка должен быть предок. Известная СУБД, поддерживающая иерархические БД – Information Management System (IMS), разработанна в 1968 г. (производитель - фирма IBM).
2. Сетевые БД
Сетевая модель данных – развитие иерархической БД, состоящее в том, что потомок может иметь любое число предков.
В данном случае любой объект может являться в одно и то же время как главным, так и подчиненным. Он может иметь произвольное количество связей с другими объектами (рис. 1.3).
Минимальную единицу данных здесь называют элементом данных. Набор элементов данных называют агрегатом типа «вектор». Имеется также агрегат типа «повторяющаяся группа», который представляет собой совокупность векторов данных.
Пример СУБД с сетевой моделью данных - Integrated Database Management System (IDMS). Эта система использовалась на машинах основного класса фирмы IBM. Она появилась после 1971 г. (разработчик – компания Cullinet Software, Inc.).
Рис. 1.3. Сетевая модель
3. Реляционные БД
Математические принципы реляционной модели используют теорию множеств и логику предикатов. Они были впервые использованы для моделирования данных в конце 1960-х гг. доктором Эдгаром Франком Коддом (Edgar Frank Codd; 23 августа 1923 – 18 апреля 2003). В то время он работал в компании IBM [1]. На протяжении длительного времени в науке считалась недосягаемой возможность эффективной реализации реляционных систем. Тем не менее, происходило накопление различных подходов к организации и управлению реляционными БД. В итоге к середине 80-х годов XX века реляционные СУБД де-факто вытеснили с мирового рынка ПО иерархические и сетевые системы.
4. Постреляционные БД
С 1996 г. получили известность так называемые «постреляционные» системы. В их основе - модель данных, представляющая собой многомерные таблицы, как это используется в СУБД Caché (производитель - фирма InterSystems Сorporation), а также использование принципов объектно-ориентированного программирования.
Основное отличие данной модели - многозначные поля (состоящие из подзначений). Это самостоятельные таблицы, содержащиеся в некоторой исходной таблице. Имеются множественные ассоциированные поля, образующие ассоциацию следующим образом. Для каждой строки крайнее левое значение одного столбца ассоциации соответствует крайним левым значениям остальных ее столбцов.
Преимущество постреляционной модели состоит в более эффективном хранении данных. Число таблиц здесь заметно меньше, чем в реляционной модели. Однако в постреляционной модели сложнее поддерживать логическую согласованность данных.
В многомерных моделях оперируют двумя важнейшими терминами: измерение и ячейка. Измерением в данном подтексте принято называть такой набор данных, относящихся к общему типу, что он будет представлять собой грань n-мерного «куба». Вкупе измерения определяют значение ячейки (атрибута). Значение может быть не только переменной памяти, но и формулой.
В многомерных СУБД широко используются такие термины, как агрегируемость, историчность и прогнозируемость. Агрегируемость – это разные уровни обобщения данных. Агрегация – это более общее представление информации. Историчность характеризует уровень статичности данных и отношений между ними, а кроме того, временная упорядоченность данных при их обработке и выводе на экран. Для достижения прогнозируемости применяют специальные функции прогноза.
В данном случае возможны такие модели организации данных, как поли- и гиперкубическая. При поликубической схеме у n-мерных кубов бывают разные размерности или измерения-грани. В гиперкубической же модели это не соблюдается.
Срез – это подмножество n-мерного куба, которое задают фиксацией указанного числа измерений, и его размерность меньше, чем n. Срез может применяться для вывода информации в виде удобообозримых таблиц. Вращение нужно для той же цели и представляет собой смену порядка измерений.
Преимущество многомерных моделей в том, что они предусматривают эффективную обработку больших объемов данных.
Объектно-ориентированная модель отличается наличием концепций объектно-ориентированного программирования при работе с данными, а именно: полиформизма, наследования и инкапсуляции.
Распределенные базы данных
Системы управления распределенными БД обеспечивают интеграцию локальных БД, расположенных в различных узлах компьютерной сети для того, чтобы пользователь из любых узлов получал возможность работы со всеми БД как с единой базой.
Если распределенная БД однородная, то с каждой локальной БД в ней работает одна и та же СУБД. Если же она неоднородная, то локальные БД могут не только обрабатываться разными СУБД, но и принадлежать даже к различным моделям данных.
Одна из распределенных СУБД - System R*, в которой работа осуществляется при помощи языка SQL.
1.3. Теория реляционных БД
Доктор Эдгар Франк Кодд в 1970 г. предложил 13 правил, касающихся реляционной модели. Впоследствии их стали называть 123 правилами Кодда.
Правила Кодда
1. СУБД должна, при условии, что она реляционная, иметь возможность в полной мере управлять БД при помощи ее реляционных возможностей4.
2. Информационное правило. Необходимо, чтобы в БД (полагая, что она является реляционной) любая информация (в частности, но не только, заглавия таблиц и столбцов) определялясь строго как табличные значения.
3. Гарантированный доступ. Пусть БД реляционна. Требуется, чтобы в ней все значения были доступны (с гарантией) методом комбинации следующих значений: заголовок таблицы, первичный ключ и название столбца.
4. Поддержка пустых значений. Это значит, что от СУБД требуется умение работы со значениями типа NULL (пустыми, неизвестными или неиспользованными). Это не значения по умолчанию. Кроме того, это должно выполняться независимо для любых доменов.
5. Онлайновый реляционный каталог. Согласно данному правилу, надо, чтобы спецификация как БД, так и того, что там содержится, логически представлялись в виде таблиц. К последним тогда можно будет направлять запросы на языке БД.
6. Исчерпывающий язык управления данными. В данном случае необходимо, чтобы не менее одного из языков, поддержка которых предусмотрена в СУБД, имели формализованный синтаксис и были всеобъемлющими. От такого языка требуется, чтобы в нем была поддержка как описания структуры данных и манипулирования ими, так и дополнительно правил ссылочной целостности, а также авторизации и транзакций.
7. Правило обновления представлений (видов). Все обновляемые в теории виды должны быть способны к обновлению при помощи системы.
8. Вставка, обновление и удаление. Помимо запроса на выборку данных, СУБД должна поддерживать также вставку наряду с обновлением и удалением.
9. Физическая независимость данных. Согласно этому правилу, на программные приложения или на какие-либо специализированные программы логически не оказывают влияния изменения, производимые в физических методах доступа к данным, а также изменения структур хранилищ данных.
10. Логическая независимость данных. На программы, перечисленные в предыдущем правиле, логически не оказывают влияния изменения структур таблиц (в пределах разумного, например, нельзя удалять ключевое поле).
11. Независимость целостности. Как следует из данного правила, от языка БД требуется способность определения правил целостности. Эти правила необходимо хранить в так называемом «онлайновом» справочнике, причем не должно существовать никакого способа обойти такие правила.
12. Независимость распределения - на программы, соответствующие правилу физической независимости логически не оказывает какого-либо влияния, первый ли раз используются ими данные, либо повторно.
13. Неподрывность. По этому правилу нельзя обойти правила целостности, которые были определены при помощи языка БД с применением низкоуровневых языков.
В практике работы в таблицах столбцы называют полями. Группа таких «полей», соответствующая строке, получила название записи.
Наивысшим уровнем абстракции в процессе проектирования БД считается модель данных, или как её иногда называют, «концептуальное описание предметной области», имеющее следующие принципы:
• данные хранятся при помощи упорядоченной совокупности строк и столбцов – отношения;
• значения представляются скалярами, т.е. у каждой комбинации столбца и строки отношения имеется ровно одно значение;
• операции производятся с полным отношением, при этом результирующее отношение тоже целое. Такой принцип носит название «замыкание».
Э.Ф. Коддом было использовано слово «отношение», по той причине, что оно однозначно (а «таблица» встречается в тексте, бывает электронной и т.п.). От этого слова произошло название реляционной (relation) модели.
Строку с данными называют кортежем, а столбец - атрибутом. Другие элементы данной модели - сущности, домены, также как и связи.
Сущность - это объект (физический, такой как «студент» либо абстрактный, например, «экзамен»). В БД хранится о ней информация. У объекта есть заданный набор свойств, которые называют атрибутами (так, атрибуты студента – номер зачетной книжки, телефон, специальность, группа и пр. У экзамена соответственно – дисциплина учебного плана, место и время проведения, экзаменатор и пр.). Тип сущности определяется его именем и перечнем свойств, а ее экземпляр - их значениями.
Существует следующая классификация атрибутов (рис. 1.4).
Рис. 1.4. Атрибуты
Так, если атрибут идентифицирующий, то у него уникальное значение по отношению к сущностям рассматриваемого типа. Потенциально он может быть ключом. Такой атрибут дает возможность распознавания экземпляров. Из таких атрибутов берется единственный первичный ключ, по которому предполагается более частое обращение к тем или иным экземплярам. От первичного ключа требуется, чтобы он содержал наименьшее нужное для идентификации количество атрибутов. Прочие атрибуты являются описательными.
Атрибут, состоящий из единственного компонента, называют простым; его значение является атомарным. Напротив, если атрибут представляет собой комбинацию компонентов, причем не исключено, что они имеют различные типы данных, его называют составным. Примером может служить адрес.
Если атрибут однозначный, то он может иметь только одно значение для любого экземпляра сущности. Если же он многозначный – много.
Если атрибут основной, то его значение от прочих атрибутов не зависит. Наоборот, если атрибут является производным, то его значение можно вычислить при помощи значений некоторых других атрибутов. Примером может выступать возраст пациента. Он может быть определен с помощью даты рождения пациента, а также текущей даты.
Формализованное описание атрибута включает следующие компоненты: имя, тип данных, а также спецификация ограничений целостности. Под последним понимается множество допустимых значений (т.е. домен, в отличие от типа данных) атрибута. Например, существует тип данных «дата», в отличие от которого «возраст» – домен.
Связи в реляционной модели – это обычные ассоциации между сущностями. Так, согласно утверждению «Читатели берут книги», между сущностями «Читатели» и «Книги» имеется связь. Подобные сущности получили название участников связи.
Между двумя сущностями распространены следующие типы связей: «один к одному» (1:1), «один ко многим» (1:M) и «многие ко многим» (M:N).
Любая связь в свете вышеуказанного может быть описана именем, обязательностью, типом, а также степенью. Связи могут быть факультативными либо обязательными. Когда сущность какого-либо типа является связанной с сущностью другого типа по необходимости, принято считать, что между ними имеется обязательная связь. Такую связь принято обозначать двойной линией. В противном случае связь называют факультативной.
Рассмотрим степень связи. Она связана с числом сущностей, которые данная связь охватывает. Например, связь между книгой и читателями, которые ее брали - бинарная.
Диаграмма «сущности-связи» (Entity-Relationship diagram, E/R diagram) используется для того, чтобы концептуально описывать схему БД. Этот подход был предложен в 1976 г. Питером Пин Шань Ченом [2]. На таких диаграммах сущности рисуются в форме прямоугольников, их атрибуты - эллипсами, и связи между прямоугольниками - в форме ромбов.
В последующем рядом авторов разрабатывались собственные варианты таких моделей, называемые нотациями (Мартина, IDEF1X, Баркера и пр.). Как и в исходном варианте, у всех у них изображаются сущности, атрибуты и связи.
Объекты (сущности) бывают как реальными, так и абстрактными. Они объединяются в классы, т.е. в совокупности обладающих идентичным набором свойств объектов. ER-диаграмму рисуют не для отдельных экземпляров, а целиком для классов объектов. Любому классу ставят в соответствие уникальное имя. Оно представляет собой существительное, находящееся в единственном числе, возможно, дополненное прилагательным либо предлогом (например, КНИГА, ВЗЯТАЯ_КНИГА). Такое имя получило название идентификатора объекта.
Любому объекту ставится в соответствие набор свойств. Они характеризуют те состояния объекта, в которых он может находиться. Экземпляры различаются именно тем, что они имеют различные значения свойств (объект КНИГА, свойства Автор, Название).
В том случае, когда любой из объектов может принимать только одно из значений свойства в некоторый момент времени (например, Номер_Читательского_Билета), принято называть единичными. Напротив, когда их несколько (например, свойство Авторы у объекта КНИГА), их называют множественными.
Допустим, значения части свойств неизменны во времени. Тогда эти свойства носят название статических, а в противном случае – динамических.
Бывают свойства, которыми не должны одновременно обладать все объекты класса (пример: свойство ISBN у объекта КНИГА). Их называют условными.
Свойства бывают составными. Например, свойство Автор может включать в себя следующие составные части: Фамилия, Имя, Отчество.
Объект называют простым, если в модели он выступает как атомарный. Объект называют сложным, если он выступает как объединение ряда объектов. Если объект сложный, он может быть составным, обобщенным либо агрегированным.
Если объект является составным, то он применяется для того, чтобы отображать «целое-часть» (например, ОТДЕЛ-СОТРУДНИК_БИБЛИОТЕКИ).
Если объект обобщенный, то его применяют для того, чтобы отображать связи «род-вид», которые существуют между объектами. Так, в библиотеке в обобщенный объект с именем СОТРУДНИК (родовой) входят такие видовые объекты, как ДИРЕКТОР, СТАРШИЙ_БИБЛИОТЕКАРЬ, ГАРДЕРОБЩИЦА и т.п., получившие название категорий обобщенного объекта. В данном случае имеется наследование свойств, так как каждый видовой объект должен иметь (наследовать) все свойства объекта родового, а кроме них еще и индивидуальные свойства, которые присущи только ему.
Объекты, представляющие какой-либо процесс, называют агрегированными. Например, объект МЕРОПРИЯТИЕ, который содержит объекты ДАТА_МЕРОПРИЯТИЯ, НАИМЕНОВАНИЕ, ОТВЕТСТВЕННЫЙ.
Рассмотрим основные операции реляционной алгебры.
1. Объединение отношений. Пусть отношения R1 и R2 обладают одинаковыми схемами. Отношение R = R1 R2, у которого множество кортежей, представляет собой все кортежи двух данных, называется их объединением.
2. Пересечение отношений. Пусть отношения R1 и R2 обладают одинаковыми схемами. Отношение R = R1 R2, у которого множество кортежей представляет собой кортежи как первого, так и второго отношений, называется их пересечением.
3. Разность отношений. Пусть отношения R1 и R2 обладают одинаковыми схемами. Отношение R = R1 \ R2, у которого множество кортежей, представляет собой кортежи, которыми обладает R1, но не R2, называется их разностью.
4. Сцепление кортежей. Кортеж, получаемый при помощи добавления атрибутов второго сцепляемого кортежа сразу за последним атрибутом первого, называется их сцеплением.
5. Произведение отношений (расширенное декартово произведение). Пусть имеем отношение R1 со степенью m и R2 со степенью n. Тогда отношение R = R1 х R2, имеющее степень m + n, у которого кортежи создаются в результате сцепления кортежей R1 с кортежами R2, называется их расширенным декартовым произведением. Условие: не должно быть одних и тех же имен атрибутов в кортежах. Схемы отношений R1 и R2 могут быть любыми.
6. Выборка по условию. Отношение с совпадающей схемой, у которого кортежи удовлетворяют условию w, называется его выборкой по условию w. Условием могут быть константы, логические операции, операции сравнения, имена атрибутов.
7. Проекция отношения. Пусть отношение R имеет подмножество атрибутов. Отношение, содержащие данное подмножество, а также все кортежи R, где содержатся значения этих атрибутов, получило название проекции отношения на это подмножество. Условие: одинаковые атрибуты указывать нельзя. Эта операция применяется для того, чтобы получить требуемые характеристики некоторого объекта. Часто данная операция, а также произведение, используются как промежуточный шаг (обычно при операциях выборки).
Имеются два частных случая проекции. Во-первых, тождественная проекция (результат – исходное отношение). Во-вторых, пустая проекция (результат – пустое множество).
8. Соединение отношений. Пусть даны отношения R1 и R2. Отношение, которое получается в результате произведения R1 и R2 с дальнейшей операцией выборки по условию w, носит название их соединения по условию w.
9. Деление отношений. Предположим, что даны отношения R1 и R2 и требуется первое разделить на второе. Делить можно по общему для обоих из них подмножеству атрибутов . В этом случае деление – это отношение, которое содержит в себе множество атрибутов А, причем в нем содержится набор таких кортежей а, что выполняется следующее условие: отношение R1 имеет наборы кортежей и , такие что набор кортежей представляет собой множество значений подмножества , которые принадлежат отношению R2 [8].
Нормализация отношений
При разработке БД для экономии внешней памяти желательно сокращение повторения одних и тех же данных, а также упрощение процедур обработки этих данных. Для этого осуществлется нормализация отношений.
При использовании хранилищ данных может применяться обратное действие – денормализация отношений. Оно предназначено для ускорения выполнения запросов к значительно большим таблицам.
Э.Ф. Кодд разработал теорию нормализации отношений и доказал, что любое отношение можно привести к третьей нормальной форме.
Нормализацией называется формальная методика анализа таблиц, основанная на первичном ключе и имеющихся связях. Она заменяет исходную схему БД новой, где структура таблиц более проста и регулярна.
Удовлетворение требованиям первой нормальной формы (1НФ) является достаточным для получения таблиц с приемлемым качеством. Данная форма основана на терминах «простой атрибут» и «сложный атрибут». Если атрибут имеет атомарные значения (неделимые), его назвывают простым. Если же атрибут сложный, то у него может быть значение, которое является объединением ряда значений как одного, так и различных доменов. В 1НФ ликвидируются повторяющиеся атрибуты или их группы. Это значит, что выявляются неявные сущности, «спрятавшиеся» в атрибуты.
Отношение называется приведенным к 1НФ в том случае, когда каждый его атрибут простой. Это означает, что атрибут не имеет права содержать в себе значение, являющееся множеством либо повторяющейся группой.
Для того чтобы таблица удовлетворяла 1НФ, надо сложные атрибуты разделить на простые, а многозначные преобразовать в новые таблицы. Например, в табл. 1 в 1НФ приведен список авторов и список книг, ими написанных.
Таблица 1
Издательство
Автор
Адрес изд-ва
Число страниц
Название книги
Наука
Гоголь Н.В.
М., Профсоюзная, 90
416
Мертвые души
Мир
Толстой Л.Н.
М., Рижский 1-й пер., 2
928
Война и мир
Вышэйшая школа
Шолохов М.А.
Киев, ул.Гоголевская, 7-г.
640
Поднятая целина
Наука
Гоголь Н.В.
М., Профсоюзная, 90
254
Ревизор
Приведенная табл. 1 имеет две записи, относящиеся к автору Н.В. Гоголю, поэтому она избыточна, однако достигнута 1НФ.
Рассмотрим вторую нормальную форму (2НФ), которая используется для отношений, имеющих составные ключи, и основана на понятии функциональной зависимости.
Пусть даны атрибуты А и В. Когда безотносительно времени любому значению первого атрибута соответствует одно и только одно значение второго атрибута, тогда последний функционально зависит от первого (AB). Атрибут (или их группа) A носит название детерминанта.
Во 2НФ исключаются те атрибуты, которые зависят лишь от части уникального ключа. Данная часть формирует отдельную сущность.
Принято считать, что отношение приведено во 2НФ тогда, когда оно находится в 1НФ, а также любой неключевой атрибут имеет функционально полную зависимость (ФПЗ) от составного первичного ключа.
Понятие ФПЗ обязательно для 2НФ. В табл. 1 часть строк имеет дублирующиеся данные.
Например, в БД для библиотеки мы имеем данные об издательствах, и их надо предварительно вынести в отдельную таблицу. Подобные таблицы получили название справочников БД или доменов данных, например, табл. 2.
Таблица 2
Издательство
Директор
Адрес изд-ва
Индекс
Наука
Иванов
М., Профсоюзная
113000
Мир
Петров
М., Каширское
110000
Вышэйшая школа
Сидоров
Киев
230000
Первая таблица приведена к 1НФ, в ней имеются поля, которым присуща логическая зависимость: Издательство и Адрес. Исходя из таблицы, нельзя утверждать, что издательство «Наука» находится в Киеве, так как оно в Москве.
Таким образом, Адрес зависит от Издательства – это ФПЗ, поэтому Адрес следует поместить в справочник издательств. Следовательно, надо иметь два справочника: издательств и книг. У обеих таблиц должен быть первичный ключ. Атрибут «Издательство» является первичным ключом для справочника издательств, а название - для справочника книг (обычно используют инвентарный номер).
Теперь вместо хранения длинных адресов в главной таблице будут лишь соответствующие идентификаторы. Для таблицы идентификаторы будут внешними ключами.
Рассмотрим третью нормальную форму (3НФ). Она опирается на понятие транзитивной зависимости. Пусть отношение имеет три атрибута: A, B, C. Пусть также AB и BC, однако в обратную сторону ни одна из зависимостей не выполняется. В таком случае C зависит от A транзитивно (AC).
Пример:
Шифр хранения книги Комната храненияТелефон,
но Комната хранения not Шифр хранения книги, Телефон not Комната хранения (поскольку в каждой комнате телефоны не стоят).
Транзитивная функциональная зависимость
Пусть отношение имеет два атрибута: А и В. В таком случае принято считать, что А многозначно зависит от В, когда любому значению А соответствует некоторое множество значений В (А –>>В). Это возможно, когда отношение имеет по крайней мере три атрибута ключа и хотя бы два атрибута, не зависящих друг от друга.
В 3НФ избавляются от атрибутов, зависящих от атрибутов, не входящих в уникальный ключ. Такие атрибуты, не входящие в уникальный ключ, выступают в качестве основы отдельной сущности.
Отношение приведено к 3НФ в том случае, когда оно приведено к 2НФ, причем в нем не имеется атрибутов, которые не входят в первичный ключ и находятся в транзитивной зависимости от этого ключа.
Отношения могут также быть приведены к нормальной форме Бойса-Кодда (НФБК), четвертой и последующим нормальным формам. Главное значение придается 1НФ в связи с тем, что остальные нормальные формы касаются понятий о составных ключах и сложных зависимостях от ключей, в то время, как практически обычно распространены более простые случаи.
В таблице издательств (табл. 2) существует транзитивная зависимость атрибутов Адрес и Индекс. Индексы с 110 по 127 присущи Москве. Ни индекс, ни адрес не представляют собой первичные ключи, однако друг от друга зависят, что нарушает требования 3НФ, что является транзитивной зависимостью.
Допустим, оператор, работавший с БД, совершил ошибку, и ввел издательству «Вышэйшая школа» московский индекс. Пользователи будут сомневаться, что правильно - индекс или город?
Задача 3НФ состоит в обеспечении целостности данных в БД, что достигается устранением транзитивных зависимостей (рис. 1.5).
Рис. 1.5. Третья нормальная форма
На рис. 1.5 имеются два справочника, первый – индексов, а второй – городов. В этом случае отсутствуют транзитивные зависимости, БД находится в 3НФ и состоит из пяти таблиц [3].
Усиленная 3НФ (Бойса-Кодда) – НФБК
Говорят, что отношение приведено к НФБК, когда это отношение приведено к 3НФ, причем устранены зависимости ключей от атрибутов, не являющихся ключевыми5.
Форма 4НФ основана на теореме Фейджина.
Теорема Фейджина. Пусть дано отношение R, имеющее три атрибута: А, B и С. В некоторых случаях его можно без потерь спроецировать в два отношения: R1, имеющее атрибуты А и В, и R2, имеющее атрибуты А и С. Для этого необходимо, чтобы в R имелись две многозначные зависимости атрибутов В и С от атрибута А.
Однако нормализация не всегда полезна по ряду причин.
1. Она исходит из допущения, что вначале все атрибуты предметной области находятся в одной таблице, что совершенно противоестественно. Обычно проектировщик с самого начала создает несколько таблиц, отвечающих найденным сущностям. В противном случае будет абсолютно непонятен смысл таблицы.
2. Трудно «с ходу» определить все атрибуты, так как человеку свойственно называть по-разному одни и те же объекты и, напротив, давать различным объектам одно и то же название.
3. Для выполнения нормализации требуется найти зависимости между атрибутами, что довольно непросто.
При разработке БД наряду с нормализайией используют другой подход – семантическое моделирование, которое предполагает, что на основе смысла данных моделируется их структура. Для этого применяют ER-диаграммы.
Ссылочная целостность в реляционных БД
Основным правилом удовлетворения ограничений ссылочной целостности (СЦ) является соответствие внешних и первичных ключей. Правило гласит, что у всех значений внешнего ключа необходимо наличие этого значения для первичного ключа в главной таблице (ГТ).
Вставка, обновление значений, также как и удаление записей могут приводить к нарушению СЦ. Все эти действия могут производиться как в главной, так и подчиненной таблицах (ПТ). В связи с этим возможны шесть вариантов, оказывающих влияние на СЦ, причем не все они ее нарушают.
1. Добавление в ГТ. Появляется некоторое значение первичного ключа. СЦ не нарушается.
2. Изменение значений в ГТ. СЦ может нарушиться, т.к. в ПТ могут быть записи со старым значением, которое теперь неверно.
3. Удаление в ГТ. СЦ может нарушиться, т.к. в ПТ могут быть записи, ссылающиеся на несуществующие теперь записи в ГТ.
4. Добавление в ПТ. СЦ может нарушиться, т.к. в ПТ могут появиться записи с неверным значением внешнего ключа.
5. Изменение значений в ПТ. При этом значение внешнего ключа может неверно измениться, а СЦ нарушиться.
6. Удаление в ПТ. СЦ при этом не нарушается.
Используемые подходы для поддержания СЦ
Для поддержания СЦ используются следующие подходы (первые два из них основные и имеются у всех СУБД с поддержкой СЦ).
1. RESTRICT (ограничение) – запрет операции, нарушающей СЦ.
2. CASCADE (каскад) – при выполнении операции совершить изменения в связанных таблицах таким образом, чтобы не нарушилась СЦ, а связи сохранялись. Изменение сначала производится в ГТ. Затем каскадно меняются ПТ. Но ПТ могут являться ГТ для других таблиц, для которых надо поддерживать СЦ. При этом в случае, когда одна из каскадных операций невозможна, следует вернуть БД в начальное состояние. Недостаток здесь в сложности стратегии.
3. IGNORE (игнорирование) означает выполнение действий без проверки СЦ. Здесь ответственным за СЦ является программист либо пользователь.
4. SET NULL (задание значения «NULL»). При этом появляющиеся в результате действия неверные значения внешних ключей меняются на значения «NULL». Недостатки подхода следующие: первый – необходимость использования значений «NULL»; второй – исчезновение связи записей ПТ с записями ГТ.
5. SET DEFAULT (установка значения по умолчанию). Аналогично предыдущему подходу, однако неверные значения меняются на определенное значение, принимаемое по умолчанию. Здесь нет первого недостатка предыдущего подхода, хотя второй остается.
1.4. Методы и инструментальные средства
проектирования БД
В процессе проектирования информационных систем нередко применяется унифицированный язык моделирования UML (Unified Modeling Language). Он предназначен для работы с объектными системами: формального описания, визуализации, конструирования и документирования. Модель UML может содержать три аспекта.
1. Структурный аспект:
1.1. Use-Case-диаграммы (прецедентов), предназначенные для идентификации процессов бизнеса, а также бизнес-транзакций, определениия их соподчиненности друг другу и взаимодействия.
1.2. Package-диаграммы, необходимые для описания структур предметной области, также как и организации.
2. Динамический аспект, включающий поведенческие диаграммы (Behavior): Activity (действий), Statechart (состояний), Collaboration (кооперации), Sequence (последовательностей). С их помощью описывается поведение процесcов бизнеса при взаимодействии этих процессов как во времени, так и в пространстве. Причем учитываются требуемые ресурсы и результаты.
3. Статический аспект.
3.1. Class-диаграммы (классов) – отражают взаимосвязанные объекты в их совокупности. Другими словами, структуру предметной области – иерархию объектов, их взаимосвязь, структуры данных и т.п.
3.2. Deployment-диаграммы (развертывания) – показывают технологические ресурсы данной организации.
В словаре языка UML имеются следующие строительные блоки: сущности, отношения и диаграммы.
Сущности представляют собой абстракции - основные элементы модели. Отношения нужны для связывания сущностей. Диаграммы же используются для группирования сущностей.
Бывают следующие сущности: структурные, поведенческие, группирующие и аннотационные.
В моделях UML структурные сущности обозначаются именами существительными. Обычно это статические элементы модели. Имеются следующие их разновидности: Класс, Интерфейс, Кооперация, Прецедент, Активный класс, Компонент, Узел.
Динамические элементы модели представляются поведенческими сущностями и обозначаются глаголами. Эти элементы, необходимые для описания поведения модели, бывают двух типов: Взаимодействие и Автомат.
Организующие элементы модели представляются группирующими сущностями (пакетами) и являются блоками, на которые модель может быть разложена.
Пояснительные элементы модели – это аннотационные сущности (примечания). Они представляют собой комментарии к какому-либо из элементов модели.
В UML имеются следующие разновидности отношений: зависимость, ассоциация, обобщение и реализация.
Диаграмма языка UML представляет собой изображение набора элементов, обычно в виде графа с вершинами, которым соответствуют сущности, и ребрами, которым соответствуют отношения. Практически применяется небольшое число типовых комбинаций сущностей и отношений, которые соответствуют наиболее употребительным видам, составляющим архитектуру ИС. Помимо вышерассмотренных, в UML выделяют следующие два типа диаграмм: объекты и компоненты.
Инструментальные средства, поддерживающие рисование диаграмм – Visual Studio 2010, ArgoUML и др.
На стадии получения кода программы на каком-либо языке программирования (как клиентского, так и серверного) все средства моделирования на UML способны его генерировать.
При оформлении программной документации следует придерживаться стандартов класса ЕСПД (ГОСТ 19.101-77 "Единая система программной документации. Общие положения" и т.д.)
Для моделирования БД могут быть использованы инструментальные CASE-средства (Computer-Aided Software System Engineering). К ним можно отнести SyBase Power Designer, Case Studio, ERWin Data Modeler и др. Они используют стандарт IDEF1X и генерируют код программы на таких языках, как SQL, Visual Basic Script, Java Script, либо используют некоторые технологии перевода модели в конкретные СУБД, такие как Oracle, Microsoft Access и др.
Выбор средства разработки прикладных программ, взаимодействующих с БД - решение непростое и ответственное. Это могут быть универсальные системы программирования, такие как C#, Delphi, Visual Basic и пр. В то же время СУБД имеют в своем составе большое количество методов работы с БД, специализированные библиотеки, средства ускорения работы с большими БД. Многие системы, использующие БД, предполагают разработку трехуровневой архитектуры Web-приложений [7].
1.5. Контрольные вопросы
1. Что такое фактографическая база данных?
2. Каковы требования первой нормальной формы?
3. Что означает правило логической независимости данных?
4. Дайте определение объекту в контексте информационной системы.
5. Перечислить основные стратегии поддержания правил соответствия ключевых значений для разных таблиц, связанных между собой.
6. Каково основное отличие многомерной модели?
7. Назовите основное достоинство сервера баз данных.
8. Какие существуют типы динамических элементов в UML?
9. Для чего нужны Deployment-диаграммы?
10. Нарушается ли ссылочная целостность после выполнения операции добавления записей в родительской таблице?
11. В чем состоит правило соответствия первичных ключей?
12. Пояснить многозначную зависимость атрибутов.
13. Что такое проекция отношения?
14. Какие геометрические формы применяют при изображении ER-диаграмм?
15. В чем отличие информационной СУБД от операционной?
Глава 2. Системы управления базами данных
Каждая СУБД имеет в своем составе язык для взаимодействия пользователей с информацией, хранящейся в БД. Существуют следующие категории языковых средств СУБД.
1. Языки описания данных (ЯОД) – это языки описания схем (ЯОС), подсхем данных (ЯОПС), хранимых данных (ЯОХД), внешних данных (ЯОВД).
2. Языки манипулирования данными (ЯМД) делятся на процедурные (когда пользователь сам программирует способ, приводящий к нужному для него результату) и непроцедурные (декларативные).
3. Языки запросов (ЯЗ). Некоторые ЯЗ обеспечивают только формулирование запросов, а комплексные ЯЗ имеют также возможности по обновлению данных.
Нередко для достижения одинакового результата можно пользоваться языками различных типов. Например, к ним относятся табличный язык запросов QBE, и язык SQL.
Восьмидесятые годы прошлого столетия характеризуются массовым распространением ПК, на платформе которых стали создаваться так называемые, «настольные» (desktop) реляционные СУБД. К ним относятся dBase, FoхBase (и его развитие - FoхPro), Access, Paradoх.
Самым распространенным форматом файлов настольных СУБД стал dbf, совместимый также с Clipper – строковым компилятором для работы с БД. Некоторые из этих СУБД затем стали использовать для работы с серверами БД, а также получили возможность разработки html-страниц для работы с БД [7].
Настольные СУБД делятся на три вида:
1. СУБД, которые позволяют работать с БД только при условии запуска этой системы и не создают автономные программы для работы с БД. К ним относятся такие системы, как Access, Paradoх и dBase.
2. Системы, дополненные возможностью разработки пользовательских приложений, к которым относится FoхPro.
3. Системы, аналогичные предыдущему виду, но лишенные возможностей первого вида СУБД – это Clipper и Clarion.
Вышеперечисленные СУБД выполняют следующие операции:
• создание БД, изменения структуры БД и индексации;
• работа пользователя с данными в виде таблицы или располагающимися в виде «одно поле – одна строка». Имеется возможность изменения содержимого полей, вставки новых записей, их удаления, использования данных из набора таблиц, вычисление выражений, проверка условий;
• проектирование экранных форм с кнопками, раскрывающимися списками и т.п.;
• получение отчетов (для вывода на печать) с групповыми операциями над данными (сумма, среднее и т.п.);
• написание программ автоматизированной обработки данных;
• создание сложных запросов, получающих данные из других баз, со сложными условиями, по которым производится отбор данных, с сортировкой (упорядочиванием) и группированием данных.
В некоторых СУБД также предусмотрена разработка меню, помощи и компиляции проекта в программу. При выборе СУБД важно учесть поддерживаемый формат данных и защиту информации.
Формат файлов БД предоставляет те или иные возможности по обмену данными с прочими прикладными программами операционной системы. В период появления персональных компьютеров был распространен формат dbf, который и сегодня еще поддерживается многими СУБД, в первую очередь Visual FoхPro, а также основными компонентами Microsoft Office: Word, Eхcel, Access. Каждая СУБД имеет собственный формат файлов данных: Paradoх - db, Access – mdb, и т.д.
Так, dbf-формат представляет собой двоичный файл, содержащий заголовок и собственно данные. Отдельными файлами являются индексы и содержимое полей МЕМО. Заголовок находится в начале файла и содержит информацию о версии Dbase, размер заголовка, число записей. Затем следует описание полей, каждое поле описывается одинаковым числом символов, включающих название, тип, размер. После описания полей начинаются сами записи, все одинакового размера. Так, если запись помечена для удаления, перед ней помещается специальный символ. Файл завершается символом конца файла, поэтому не все символы ASCII – кода можно хранить в таком файле. Зная структуру данного формата, легко запрограммировать работу с базой данных на языке высокого уровня с использованием файловых операций даже для работы в MS-DOS. Однако работа с индексными файлами более сложна, поэтому для быстрого поиска данных в БД желательно использовать ОС Windows и технологию доступа к данным, например, ADO в Delphi.
Конфиденциальность данных обеспечивают многие современные системы, такие как Access, MySQL, Cache и пр. Конфиденциальность обеспечивается с помощью сервера для хранения данных, где имеется разграничение прав пользователей.
Как правило, СУБД предполагает многопользовательскую работу в сети с одной БД. Некоторые СУБД имеют «мастеров», «построителей» и «генераторы выражений» для ускоренной разработки баз данных, экранных форм, отчетов, стандартных приложений.
Версии СУБД, предназначенные для работы в OC Windows, включают средства объектно-ориентированного программирования, к таким СУБД относятся Visual FoхPro, Microsoft Access и другие.
2.1. СУБД Access
2.1.1. Основы работы с Microsoft Access
Для изучения Microsoft Access предлагается выполнить следующее задание. Причем надо использовать для БД предметную область своего варианта, расширенную связанными таблицами произвольного содержания.
1. Создание БД по шаблону.
После запуска прикладной программы Microsoft Access шаблоны можно увидеть в правой области экрана. В Access 2003 можно использовать пункт «Создать файл», после чего щелкните левой клавишей мыши (ЛКМ) в закладке «Шаблоны» - «На моем компьютере». Отобразится окно «Шаблоны», где выбирается вкладка «Базы данных». В зависимости от своего варианта используйте одно из предлагаемых наименований БД, например «Контакты», для предметной области «Библиотека», потому что здесь имеется фамилия и имя. Далее программа выводит окно запроса имени создаваемого файла. После выбора директории и имени файла с сохраняемой БД в очередном окне щелкните ЛКМ по «Далее». Отметьте необходимые поля, либо выберите самые соответствующие в смысловом отношении. Так, «биография» может быть указана, если необходимо поле заметок. После произведенных действий укажите способ оформления вывода на экран, также как и отчета, например «стандартный». Затем введите название БД и щелкните ЛКМ «Готово». Автоматически запустится форма, и БД готова к работе.
2. Модификация поля и таблицы (добавить, переименовать, чтобы они подходили к своему варианту).
Создав (открыв) БД, пользователь увидит исходное окно, в котором требуется выбрать «Таблицы». Выберите ту таблицу, где изменяется перечень полей. Например, «Звонки». Потом щелкните ЛКМ по «Конструктор» или по имени таблицы и нажмите «Конструктор», чтобы отобразился перечень полей данной таблицы с указанием имен, типов и пр. Измените названия полей на осмысленные, от лишних избавьтесь. Для того, чтобы удалить поле, используйте правую клавишу мыши (ПКМ) для нажатия слева от его названия. Если Вы намерены создать поле, надо в конец перечня дописать его имя, справа указать тип (дата, число и т.п.). Завершив действия, сохраните изменения. С целью создания таблицы используйте «мастер» для их создания. Выполняйте указания мастера: выбор полей, ввод наименования таблицы. Связи создавать не требуется.
3. Введение в таблицы по 7-10 записей.
Для этого рекомендуется произвести следующие операции. Откройте исходное окно, сделайте двойной щелчок ЛКМ по наименованию какой-либо таблицы. Теперь таблица может быть дополнена новыми данными.
Примечания. Поля, имеющие тип «Счетчик», обладают специфическим свойством: данные не могут туда вводиться или копироваться, их содержимое формируется автоматически. В поля типа «МЕМО», содержащие длинный текст (например, реферат), проще копировать текст из предварительно подготовленного документа Word. Если пользователю СУБД нужно вводить много строк в такое поле, рекомендуется оттянуть мышью строку вниз (слева). С целью ввода новых строк применяется следующая клавиатурная комбинация: «Ctrl»+ «Enter». Невозможно ввести буквенный символ в числовое поле.
4. Получение формы, имеющей поля ввода текста, текстовые метки и кнопки (Button) для навигации по таблице.
Все вышеперечисленное расположено в меню «Вид», пункте «Панель элементов». Нажмите в исходном окне на элемент «Формы», создайте форму при помощью мастера, следуя его указаниям (рис. 2.1). При этом необходимо выбрать ту таблицу, в которую форма должна помещать данные, а также ее поля. Для того, чтобы выбрать поле, щелкните ЛКМ по нему, а затем по кнопке с изображением символа «>». В результате наименование поля переходит направо. Чтобы перетащить поле назад, щелкните ЛКМ по «<». Если требуется выбрать все поля, а затем удалять лишние, щелкните ЛКМ по «<<». В других появляющихся окнах укажите способ отображения формы, стиль и наименование. Теперь можно использовать форму для ввода данных, в которой имеются метки, текстовые поля, и кнопки для навигации по таблице.
5. Модифицирование формы.
Для выполнения данного действия выберите указанное ранее исходное окно и щелкните ЛКМ на «Формы». Укажите требуемую форму и щелкните «Конструктор». Один раз щелкните по модифицируемому элементу, например, по кнопке «ОК». В области форматирования укажите другой шрифт.
6. Получение запроса.
Нажмите в исходном окне на элемент «Запросы». Создайте запрос, используя мастер, для чего предназначена кнопка с соответствующей надписью. Выполните указания мастера (аналогично рис. 2.1).
7. Получение отчета, использующего запрос
С этой целью в исходном окне щелкните «Отчеты». Создайте отчет при помощи мастера, используя кнопку, имеющую соответствующую надпись. Выполняйте указания мастера (аналогично рис. 2.1). Установите последовательность сортировки, укажите вариант макета отчета, его стиль и наименование.
8. Определение связи от одной таблицы к другой.
Связь необходимо установить по индексным полям этих таблиц. Чтобы Access проиндексировал поле, в окне конструктора таблиц укажите ЛКМ поле, после чего снизу около надписи «Индексированное поле» из списка выберите «Да». В таблице-справочнике поле необходимо сделать ключевым со свойством «Совпадения не допускаются». В таблице данных установите свойство поля «Совпадения допускаются». С целью определения связи применяется пункт «Схема данных» меню, возникающего при щелчке ПКМ в неиспользованном пространстве исходного окна. Мышью перетащите наименование поля второй таблицы на наименование связываемого поля первой таблицы (главной). В окне схемы данных будет изображена связь в виде ломаной линии со стрелкой. Теперь, открывая главную таблицу, в левой части можно заметить символы «+». Если щелкать на них, появляются соответствующие записи подчиненной таблицы.
9. Сортировка (в алфавитном порядке) и фильтрация строк. После фильтрации отображается некоторое подмножество строк, например, с фамилией «Яковлев».
Откройте таблицу с целью сортировки записей. Щелкните кнопку «А->Я», расположенную на панели «Таблица». Чтобы выполнить фильтрацию, щелкните ПКМ где-нибудь на содержимом таблицы и выберите во всплывающем меню следующий пункт: «Фильтр по выделенному».
Для выполнения заданий возможны следующие варианты предметных областей:
1. Студенты, обучающиеся на факультете.
2. Преподаватели, обучающие студентов на факультете.
3. Сотрудники, работающие на факультете.
4. Книги, используемые для факультета.
5. Лабораторное оборудование кафедры.
6. Компьютерные файлы ЭВМ.
7. Рабочие программы, разработанные преподавателями.
8. Зарегистрированные больные в поликлинике.
9. Успеваемость, обучающихся на факультете.
10. Заявления различного рода.
11. Поступающие в вуз абитуриенты.
12. Публикации, выпущенные преподавателями.
13. Контрактники, обучающиеся на платной основе.
14. Выпускники, закончившие обучение в вузе.
2.1.2. Microsoft Access
Компаниями-вендорами было разработано немало разных СУБД, и каждый пользователь может выбрать ту, которую предпочитает. Например, достоинство MySQL - бесплатность. Многие действия легко выполняются в Microsoft Access 2003 благодаря широкому распространению. Например, излагаемые далее экспорт и импорт предназначены для обмена данными между СУБД. Поле со списком Access дает возможность выбора из предварительно подготовленного списка, чтобы избавить пользователя от ручного ввода данных. Функция поиска относится к наиболее востребованным в каждой СУБД. Использование индексов уменьшает время поиска. Вычисляемое поле дает возможность не хранить данные, когда их вычисление по существующим данным не замедляет работу СУБД.
В заполненную ранее таблицу необходимо внести вначале экспорт, а затем импорт в форматах HTML, TXT, Microsoft Excel, dBase IV. Необходимо четко следить за сохранением наименований полей и отслеживать факт неизменности типов данных.
Чтобы экспортировать данные, следует щелкнуть по наименованию таблицы, затем в меню «Файл» указать «Экспорт», выбрать путь к файлу и его тип (формат). Сохранять формат следует только для экспорта в Excel и HTML. При экспорте в текстовый формат (*.ТХТ) следует указать такой разделитель, который априори не встречается в таблице, например, «&». Данные формата dBase коректно показывает программа Database Desktop. Для импорта в меню «Файл» необходимо выбрать пункт «Внешние данные», затем «Импорт». В появившемся окне указывается путь, имя и расширение файла.
Далее выполните следующие действия. Создайте на форме «Поле со списком» и кнопку, служащую для поиска данных. Проверить наличие индексов можно, используя конструктор таблиц. Создайте также вычисляемое поле.
Чтобы получить поле со списком, выберите конструктор форм. Укажите на соответствующей панели элемент, называемый «Поле со списком». Затем выберите необходимые параметры, предлагаемые Microsoft Access в процессе диалога. Если панель элементов отсутствует, ее можно найти в меню «Вид». Отсюда же выберите кнопку, и укажите «Найти запись» в перечне, предлагаемом СУБД. Для получения вычисляемого поля запроса в их конструкторе отредактиру заголовок поля. Например, можно ввести «[заголовок числового поля] *0,9».
Следует знать, что в СУБД Access встроен язык визуального программирования Visual Basic с целью получения начальных навыков работы с ним. Для этого в конструкторе форм запустите Visual Basic при помощи щелчка ПКМ на созданной ранее кнопке, указывая затем «Обработка событий» во всплывающем меню. Теперь можно присвоить переменной х значение 2, записав «х = 2», а с новой строки – константе у, записав «соnst y=2».
Пароль, установленный для БД, является одним из уровней информационной безопасности СУБД Access, и его использование не позволяет субъектам, не знающим пароля, полнофункционально работать с соответствующей БД в Access, однако к данным легко получить доступ, используя текстовый редактор. Прежде чем открывать файл БД, обратите внимание: возле кнопки «Открыть» имеется треугольник, указывающий вниз, на который требуется нажать. В предлагаемом перечне укажите «Монопольно». Перейдем в меню «Сервис». Укажите «Защита», затем «Задать пароль БД», как показано на рис. 2.2. Если ввести пароль, то при следующей попытке открыть этот файл Microsoft Access попросит ввести пароль.
2.1.3 Язык SQL в Microsoft Access
Запросы Access автоматизируют ряд действий с БД, не требуя знания языка Visual Basic. Они дублируются системой на SQL. Чтобы предварительно ознакомиться с SQL, рекомендуется просмотреть текст на SQL для всех далее создаваемых запросов. С этой целью в меню Access «Вид» укажите «Режим SQL». Создайте и запустите нижеследующие запросы (руководствуясь номером варианта):
A. Перекрестные.
Создайте простой запрос. Выберите конструктор, и в строке меню укажите «Запрос», затем «Перекрестный». В свойствах перекрестной таблицы (слева) некоторому полю назначьте «Заголовки строк», другому – «Заголовки столбцов», и еще одному (числового типа) - «Значение». Укажите групповую операцию «Sum» (сумма). Выполните запрос, щелкнув ЛКМ по красному значку «!», либо через меню. Также можно, выйдя из конструктора и сохранив его, дважды щелкнуть наименование запроса. Будет отображена таблица с наименованиями столбцов, полученными из указанного поля исходной таблицы.
B. С параметрами.
Создайте простой запрос. Выберите конструктор, и в наименовании поля укажите операцию с ним, применяя квадратные скобки. Пусть оно носило название «оплата», тогда в наименование вводится «[оплата]+[o]», где «o» – имя параметра, который будет запрашиваться при выполнении запроса.
C. На суммирование.
Создайте простой запрос, выберите конструктор. Некоторому содержащему числа полю укажите групповую операцию «Sum». При этом складываются значения этого поля для тех записей, которые имеют равные значения для полей с групповой операцией «группировка». Этот вид запроса может, например, применяться для получения общей суммы оплаты для Сидоровых и прочих однофамильцев.
D. На выполнение:
1. Обновление. В списке меню «Запрос» укажите «Обновление». Пусть имеется поле «оплата». Впишите «[оплата]*0,9» возле метки «Обновление».
2. Добавление.В списке меню «Запрос» укажите «Добавление». Отметьте таблицу, в которую дожны добавляться строки. Введите условие отбора: например, в поле «оплата» введите «<5».
3. Удаление. Оно делается аналогично добавлению, только «Добавление» меняется на «Удаление», также по условию, к примеру, если значение поля «оплата» более 100.
4. Создание. Оно тоже делается аналогично добавлению, только «Добавление» меняется на «Создание таблицы». Потом впишите наименование новой таблицы и условие, по которому туда добавляются строки.
2.2 Разработка приложений с БД в универсальных системах программирования.
Базы данных и SQL в Delphi [4,5]
Кратко изучим получение БД из текста и работу с ней при помощи Borland Delphi. Нижеуказанные действия без ограничений могут вместо этого производиться в системе программирования Borland C++ Builder либо Turbo Delphi.
С целью получения некоторых навыков работы с БД в универсальных системах программирования предлагается выполнить следующие действия.
Создайте БД формата dbf, имеющую индексный файл формата mdx, в Microsoft Access, которая содержит более 4000 строк со словами на русском или английском языках, включающую по крайней мере два поля.
Пояснение к выполнению данного пункта. Можно с этой целью в приложении Microsoft Word в электронном варианте настоящего текста выполнить автоматическую замену пробелов на символы нового абзаца, после чего выполните сохранение с расширением *.TXT. При импорте полученного текста в Microsoft Access нужно использовать фиксированную ширину полей, после чего назначьте индекс и выполните экспорт в формат DBase.
Создайте в Delphi модуль данных. Для этого запустите Delphi, выберите «создание нового проекта», в строке меню укажите «File», затем последовательно «New» (либо «Create» в других версиях), «Data Module».
У события OnCreate созданного модуля напишите процедуру DateModuleCreate.
С целью отобразить Инспектор объектов, нажмите F11, укажите закладку «Events», наберите наименование процедуры около «OnCreate» и нажмите клавишу «Enter».
Текст процедуры может быть, например, такой:
Session.ConfigMode := cmSession; // режим сессии
try Session.AddStandardAlias(‘Hlor’, 'E:\','PARADOX');
// где Hlor - псевдоним БД, E:\ - каталог файлов БД
finally Session.ConfigMode := cmAll; end;//режим сессии
Измените каталог и псевдоним при необходимости. В секции Uses кода программы впишите DB, DBTables. Разместите в модуле данных с закладки BDE компонент «SQL?». Сформируйте запрос SQL и выполните его.
Пояснение к выполнению данного пункта. Создайте сначала форму. Установите в любом месте поле с названием Edit1 и кнопку (Button1). Следует щелкнуть ЛКМ дважды по Button1 и ввести следующий текст обработчика:
var kjs:integer;
begin
DataModule2.Query1.Close; // закрыть запрос
DataModule2.Query1.SQL.Clear; //очистить текст запроса
DataModule2.Query1.SQL.Add('SELECT * FROM ":Words:'+rouble.dbf’+'"'); //дописать строку выборки в запрос
DataModule2.Query1.SQL.Add('WHERE'); // с условием
DataModule2.Query1.SQL.Add('(MyField LIKE "'+ edit1.text + {'%'+ }'")'); // соответствие данных индексированного поля и edit1, символ «%» выносится из комментария, если оно неполное
DataModule2.Query1.Open; // открыть запрос
kjs:=DataModule2.Query1.RecordCount; // число записей
if kjs>0 then begin
button1.caption:= DataModule2.Query1.Fields[1].AsString; end end;
Поле для поиска – MyField (имя надо заменить на реальное); rouble.dbf – файл, тоже заменяется; псевдоним БД – Hlor; kjs – число отобранных строк, для которых выполняется условие в тексте запроса. При первоначальном запуске приложения Delphi спросит, добавить ли в список Use. Выберите «Yes» («Да»). Приложение выполняет поиск в таблице введенной строки, и при удачном поиске данные второго из полей, т.е. Fields[1], помещает на кнопке (потому что нумерация начинается с 0).
Установите на форме следующие компоненты: DBGrid1 с панели Data Controls, DataSource1 с панели Data Access, Table1 с панели BDE (данный компонент можно, хотя и не обязательно, разместить в модуле данных). Установите для Table1 свойство «TableName» как имя существующего файла БД, к примеру, «e:\rouble.dbf», а «Active» измените на True. Укажите из перечня свойства «DataSet» для DataSource1 значение «Table1». Укажите из перечня свойства «DataSource» для DBGrid1 значение «DataSource1». На форме будет выведена таблица с данными.
Установите на форме с панели «Data Controls» компонент DBNavigator1. Укажите в перечне его свойства «DataSource» значение «DataSource1», и запустим приложение. Используйте DBNavigator1, чтобы перемещаться по таблице, для создания и удаления записей.
Поместите на форму кнопку Button1 и текстовое поле Edit1. Скопируйте и при необходимости измените текст процедуры обработки щелчка на Button1 для нахождения номера записи с текстом, набранным Edit1.
Для нечетных номеров вариантов:
procedure TForm1.Button1Click(Sender: TObject);
var I: Integer; begin I :=0; table1.Open; // открываем table1
table1.First; // переходим к началу данной таблицы
while not(table1.eof) do // пока не дошли до ее конца
begin I := I +1; // прибавить к номеру 1
if table1.FieldByName('MyField').AsString=edit1.Text then
// когда данные поля MyField совпадают с введенными
ShowMessage(IntToStr(I)); // показать номер записи
table1.next; // переходим к следующей записи
end; table1.Close; end;// закрытие table1
Для четных номеров вариантов:
procedure TForm1.Button1Click(Sender: TObject);
var B:Boolean begin
B:=table1.locate('MyField',edit1.Text,[]) // имя поля MyField
table1.edit;//разрешение на редактрование записи
Table1.Fields[1].AsString:= Table1.Fields[1].AsString+’1’;//дописать к данным «1»
Table1.Post; end;// фиксация изменений
Запустите приложение и проверьте, как оно работает.
При шифровании БД создайте таблицу с расширением «DB» (формат Paradox). С этой целью запустите Database Desktop в группе программ «Borland Delphi 7». Щелкните File – New – Table – «ОК». Наберите название поля под «Field Name», его тип под «Type» (тип «А» – символьный), длину под «Size». В перечне свойств таблицы (Table Properties) укажите Password Security (пароль) и произведите щелчок ПКМ на слове Define (Определить). Возникает окно ввода пароля. После ввода пароля сохраните таблицу, используя «Save As» (сохранить как). Откройте эту таблицу, используя Database Desktop, щелкая File – Open – Table. Выберите в меню Table – Edit Data, введите данные, затем таблицу закройте. В среде Delphi поменяйте свойство «TableName» для компонента с именем Table1, оно должно быть именем файла таблицы формата DB, все сохраните, выполните перезапуск Delphi. Загрузите проект, и если ввести пароль, отображаются данные зашифрованной таблицы. В ходе работы необходим доступ к папке C:\, так как в ней создается файл с информацией о пользователях.
2.3. Язык SQL
Основные операторы SQL совпадают с привилегиями в табл. 5 главы 3 (кроме п. 10). Рассмотрим оператор SELECT (отбор записей) на примере:
SELECT TBL_01.F_01 AS Фамилия, TBL_01.F_02 AS Название
FROM TBL_01
WHERE TBL_01.F_01 LIKE 'П*';
Данный запрос был создан в Microsoft Access 2003. Структура таблицы «Книги» представлена на рис. 2.3.
Содержимое таблицы показано на рис. 2.4. Чтобы не вводить читателей в заблуждение, необходимо отметить, что данные намеренно искажены, например, А.С. Пушкин не является автором книги «Русский язык». Во-первых, происходит подобие имитозащиты информации (некоторые записи частично верны), а, во-вторых, не рекомендуется для учебных целей использовать истинные данные по следующим причинам. Это в первую очередь затраты времени на их сбор и проверку, которые кому нужны и гарантированно не оправдываются.
То же самое относится к табл. 2: издательство «Вышэйшая школа» находится на в Киеве, а в Минске, а в Киеве имеется издательство с похожим названием «Вiща школа». Но есть и истинные данные, однако неполные, например, адрес издательства «Наука»: ул. Профсоюзная, д. 90, Москва В-485, ГСП-7, 117997. В табл. 1 и табл. 2 находится только часть этого адреса.
Рис. 2.3. Структура таблицы «Книги»
Рис. 2.4. Содержимое таблицы
Затем существуют морально-правовые нормы, например, о защите персональных данных, т.е. данные придется как-то защищать от посторонних глаз. Также необходимо внимательно относиться даже к частично неверным данным, так как известны случаи, когда студенты вводили искаженную информацию и даже нецензурные выражения, которые плохо влияют на товарищей, и надеялись на положительную оценку. Результат запроса показан на рис. 2.5.
Рис. 2.5. Результат запроса
В тексте запроса использован символ «*», означающий любую последовательность символов. Если бы запрос создавался для обработки с помощью BDE (Borland Database Engine), вместо этого надо было бы написать «%». Это иллюстрирует наличие диалектов языка SQL. Так, в MySQL свой диалект, существует также Transact-SQL (T-SQL), имеющий переменные, дополнительные математические и др. функции и некоторые другие расширения стандартного SQL.
В результате использования ключевого слова AS заголовки столбцов переименованы осмысленным образом (рис. 2.5). После FROM указывается наименование используемой таблицы.
Ключевое слово WHERE (англ. ГДЕ) означает проверку условия, в данном случае фамилия начинается на букву «П». Здесь слово LIKE (англ. ПОДОБНО) означает сравнение строк слева и справа от него.
Рассмотрим запрос на обновление с оператором UPDATE:
UPDATE TBL_01 SET TBL_01.[Денежная сумма] = [Денежная сумма]*0.9;
Вследствие уценки стоимость снижается (происходит умножение денежной суммы на 0,9). Вид таблицы после обновления изображен на рис. 2.6. Ключевое слово SET означает «Установить» (новое значение).
Рис. 2.6. Таблица после обновления
Рассмотрим оператор INSERT INTO (вставка записей) на следующем примере:
INSERT INTO TBL_01 ( F_01, F_02, [Денежная сумма] )
SELECT TBL_01.F_01, TBL_01.F_02, TBL_01.[Денежная сумма]
FROM TBL_01
WHERE (((TBL_01.F_01) Like "И*"));
Результат показан на рис. 2.7.
Рис. 2.7. Таблица после вставки
Здесь произошло добавление копии записи с данными об Иванове А.А. Поскольку таблица имеет индексирование по полю F_01 (см. рис. 2.3) и соответствующее расположение в алфавитном порядке, кажется, что новая запись помещена в середину таблицы, хотя на самом деле это не так, она помещается в конец.
В рассмотренном запросе входные данные для вставки формируются как результат выполнения оператора SELECT. Однако можно данные брать из файлов. Рассмотрим оператор DELETE (удаление) на следующем примере (результат на рис. 2.8):
DELETE TBL_01.F_01, TBL_01.F_02, TBL_01.[Денежная сумма]
FROM TBL_01
WHERE (((TBL_01.[Денежная сумма])>30));
Рис. 2.8. Таблица после удаления записей
Как видно из приведенных примеров, в конце каждого предложения SQL ставится точка с запятой. Если нет, то запрос выполняться не будет.
2.4. MySQL
Рассмотрим СУБД MySQL на примере подключения к ней к через ADO. Программное обеспечение, необходимое для работы: операционная система Windows ХР, среда разработки Turbo Delphi, MySQL. В обязанности администратора входит создание учетной записи для пользователя СУБД MySQL. Он может это сделать, используя, как вариант, команду: GRANT DELETE, SELECT, UPDATE, CREATE, DROP, INSERT ON bd1.* TO user@'%' IDENTIFIED BY 'loosered'; В случае использования MySQL Query Browser (MQB) необходимо ввести наименование БД (Default Schema), например bd1.
По адресу http://dev.mysql.com/downloads/connector/odbc/ 5.1.html находится MySQL-провайдер для ODBC - mysql-connector-odbc-5.1.11-win32.msi. Его нужно установить и перезагрузить операционную систему.
С целью создания БД в MySQL запустите MQB, введите логин «user», а также пароль «loosered» (рис. 2.9).
Рис. 2.9. Окно авторизации MQB
Затем в области Schemata щелкните ПКМ, укажите «Create New Schema», что означает создание БД. Наберите ее наименование, к примеру, bd2, щелкните ПКМ по bd2, укажите «Create New Table». Отобразится окно (рис. 2.10), в котором введите название таблицы (t2). Далее укажите названия столбцов (Column), типы: у «fio» – Varchar длиной 20, у «summa» – Integer (целое).
Рис. 2.10. Создание таблицы
Щелкните ЛКМ по «Apply Changes». Выводится окно, содержащее запрос, где щелкните «Execute» и «Close». С целью ввода данных, в Schemata дважды нажмите по имени таблицы. Сверху находится текст запроса, производящего выборку всех строк с ключевым словом SELECT», затем щелкните «Execute». Первоначально таблица не заполнена. Щелкните снизу «Edit» для начала ввода информации в таблицу. После окончания ввода щелкните снизу «Apply Changes», чтобы сделанные изменения были приняты.
Для того чтобы добавить новые столбцы, нажмите сначала ПКМ по наименованию таблицы, потом щелкните «Edit Table». Теперь введите информацию в новом столбце (имя, тип и пр.).
Далее создайте прикладную программу, работающую с БД.
В Delphi сначала создайте новое приложение (Win32). Поместите на форме элементы, сперва две панели. Их свойства установите согласно табл. 3. В нижней панели поместите кнопку (Button1), поле ввода текста (Edit1), а также DBNavigator1 (находится в группе DataControls). В верхней панели разместите сетку (DBGrid1), источник (DataSource1), а также ADOConnection1 и ADOTable1, находящиеся в группе DBGo (в Turbo Delphi).
Таблица 3
Требуемые свойства и значения компонентов
Компонент
Цель
Свойство
Значения
Panel1
Быть «фундаментом» для Panel2
Align
AlBottom
Panel2
Занятие всего остального места
Align
AlСlient
Panel2.Edit1
Ввод текста
Text
«Текст»
Panel2.Button1
Поиск
Caption
«Найти»
DataSource1
–
DataSet
ADOTable1
ADOConnection1
–
Provider
MSDASQL.1
DBGrid1 и DBNavigator1
–
DataSource
DateSource1
Допустим, БД следующая (см. рис. 2.11). Для компонента ADOTable1 в свойство TableName вводим «t1». Около ConnectionString щелкните ЛКМ по многоточию, возникает окно. Здесь щелкните по «Build». Поставщиком данных укажите «Microsoft OLE DB Provider for ODBC Drivers». Если до этого не создавалось наименования источника данных, укажите «Использовать строку подключения», затем щелкните ЛКМ по «Сборка». Появляется окно. В нем выберите «Источник данных компьютера», щелкните «Создать». Укажите, какой он будет – пользовательский (для этого пользователя) либо системный (для всех), щелкните «Далее». Возникает перечень, где укажите «MySQL ODBC 5.1 Driver», после чего щелкните ЛКМ по «Готово».
Рис. 2.11. Пример базы данных
Открывается окно с настройками, в котором следует ввести наименование источника данных, к примеру, «LBA». Для поля User введите «user», а для Password – «loosered». Укажите нужную БД в перечне возле Database. Для успешного соединения щелкните «Test», выходит сообщение «Connection successful».
Щелкните ОК шесть раз (в окнах, появляющихся друг за другом). Свойство Active компонента ADOTable1 смените на True, при этом отображается окно, где ожидается ввод логина и пароля, затем в DBGrig1 показываются данные.
Сохраните и запустите программу. Используйте DBNavigator1 для добавления и удаления записей и перемещения по базе. Примерный вид интерфейса показан на рис. 2.12.
Рис. 2.12. Примерный вид интерфейса
В Delphi дважды щелкните по Button1. Скопируйте следующий текст обработчика щелчка ЛКМ:
var stroka: string; begin stroka:=Edit1.Text; Adotable1.Locate('Fio',stroka,[]) end;
Перезапустите программу и убедитесь, что она ищет строку, находящуюся в Edit1. Чтобы разместить дополнительные элементы слева, установите свойство Align компонента DBGrid1 временно в «alCustom», после чего сузьте вправо. Разместите на освободившемся месте Panel3 (свойство Align установите в alLeft). Сделайте обратно свойство Align для DBGrid1 «alClient».
При использовании локальной сети на клиентском компьютере также следует инсталлировать провайдер MySQL. Потом, используя «Администрирование» Панели управления, откройте «Источники данных» (ODBC). Во вкладке «Пользовательский DSN» щелкните «Добавить». В раскрывающемся списке укажите «MySQL ODBC 5.1 Driver», после чего щелкните «Готово». Возникает окно с настройками, в котором введите наименование источника данных, к примеру, «LBA». Впишите серверный IP-адрес (его можно узнать командой ipconfig). Номер порта не меняйте. Впишите для логина «user», пароль – «loosered», укажите БД из перечня возле Database, к примеру «bd1». Щелкните «Test», выходит сообщение «Connection successful».
Для использования файлов изображений в БД разместите на форме диалог для открытия файлов - OpenDialog1 и диалог сохранения - SaveDialog1, а также элементы Button3 и Button2 с надписями SavetoDB и FromDB (рис. 2.13).
Рис. 2.13. Дополнительные кнопки и диалоги
У обоих диалогов определите фильтры (см. рис. 2.14).
Рис. 2.14. Фильтры диалогов
Дважды щелкните ЛКМ по «SavetoDB», в возникшую процедуру скопируйте следующее:
procedure TForm1.Button3Click(Sender: TObject);
begin {начало подпрограммы}
if OpenDialog1.Execute then {после выполнения }
begin {диалога открытия}
ADOTable1.Edit; {разрешить редактирование}
TBLOBField(ADOTable1.FieldByName('photo'){поле с именем photo}).LoadFromFile( OpenDialog1.FileName);{загрузить из имени файла как результата выполнения диалога}
AdoTAble1.Post;{зафиксировать в БД изменение}
end else {иначе выход} Exit;
end;
Дважды щелкните ЛКМ по кнопке «FromDB». В возникшую процедуру скопируйте следующее:
procedure TForm1.Button2Click(Sender: TObject); {процедура - обработчик нажатия}
begin
if SaveDialog1.Execute {если выбран путь сохранения} then
begin
TBLOBField(ADOTable1.FieldByName('photo') {поле с именем photo}).SaveToFile(SaveDialog1.FileName); {сохранить с именем файла как результатом выполнения диалога}
end else{иначе выход} Exit;end;
Свойство ShowHint кнопки FromDB измените на True, Hint (подсказку) установите в «Сохранить в файл из БД».
По принятому умолчанию MySQL данные базы хранит в каталоге диска C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\data. Поместите в базу изображения, а затем обратно получите из них файлы с помощью разработанной программы. Проследите за размером и временем создания файлов.
Разместите на нижней панели из закладки DataControls компонент «Изображение базы данных» - DBImage1. Установите свойства: DataSource (источник данных) в «DataSource1», DataField (поле данных) в «photo». Изображение должно появиться в случае, если оно было сохранено в БД (рис. 2.15).
Для связи программы с Access введите новую таблицу с именем Null0 в Microsoft Access. Она будет иметь связь с таблицей в MySQL по ключевому полю «Ф.И.О.» (fio). Для этого размещаем на форме DataSource2, DBGrig2, ADOTable2, DBNavigator2, ADOConnection2. Установите им ссылки друг на друга так же, как и для набора соответствующих компонентов, заканчивающихся на 1.
Рис. 2.15. Окно с изображением, хранящимся в БД
В Access создайте базу db6, содержащую таблицу Null0, с полями f, SiteNull0, PictNull0. Выберите провайдера в ConnectionString - «Jet 4» (вместо ODBC, которое выбирали ранее), БД – db6. В свойство MasterTable (главная таблица) для ADOTable2 впишите «ADOTable2», укажите MasterField. Тут выберите связанные поля f и fio, как показано на рис. 2.16. Свойство Active замените на «Истинно» (True).
Рис. 2.16. Cвязь между полями
Запустите приложение. При навигации по таблице MySQL должны быть показаны лишь те записи таблицы Access, где значения f и fio совпадают (см. рис. 2.17). Введите в них длинные строки и значительные по объему памяти рисунки.
Рис. 2.17. Используемые длинные строки и изображения
значительного объема памяти
2.5. Cache и объектно-
ориентированное программирование
Примером постреляционной СУБД является Caché, разработанная фирмой Intersystems, Inc (США) в 1996 г. Это объектно-ориентированная система, поддерживающая также SQL и многомерные структуры данных [14].
Объектная технология предложена еще в 1960-е гг. ХХ века (концепция «Simula») и основана на понятии объектов, классов и трех концепциях – наследование, полиморфизм и инкапсуляция. В отличие от процедурного программирования, здесь сущностям реального мира поставлены в соответствие объекты, которые обладают таким достоинством, как долговечность: так как разработанные единожды классы объектов затем могут быть применены в других приложениях. Недостаток же таблиц в том, что если данные некоторой прикладной программы представляются объектами, то они не могут храниться в таблице без значительных накладных расходов.
Однако огромное множество приложений ориентировано на работу с таблицами, а не объектами, поэтому перед разработчиками ИС встает выбор: разработка объектного приложения «с нуля» либо использование морально устаревших, но почти готовых старых наработок. Cache разрешает эту проблему, так как поддерживает и то, и другое. Многомерность его ядра означает возможность хранения в одной ячейке целой таблицы.
Рассмотрим понятие класса объекта. При объектно-ориентированном программировании (ООП) объектом называют инкапсулированную сущность, которой присущи методы и свойства, а однотипные объекты собирают в классы. Под инкапсуляцией понимается сокрытие внутри объекта его структуры (кодов процедур и внутренних структур данных). Взамен им назначается открытый интерфейс – набор общедоступных подпрограм и значений переменных, а также входных событий. Для выполнения процедуры (метода) объектом ему посылают сообщение.
Индивидуальные объекты получили название экземпляров класса. Они отличаются друг от друга только набором свойств (а также уникальным идентификатором), методы же для всех одни и те же.
Например, пусть необходимо сохранять данные об уравнениях. Для этого введем класс «Уравнение». Уравнения надо изобразить на экране, переместить, удалить (это их методы). К свойствам можно отнести размещение, размер шрифта и его цвет. Каждое уравнение имеет свои свойства, как правило, отличающиеся от свойств других экземпляров. Для создания уравнений требуется также метод класса «New» (создать).
Наследование классов означает создание порожденных классов (подклассов) из родительского класса (суперкласса). Подкласс сохраняет (наследует) интерфейс суперкласса, что называют принципом замещения, т.е. все методы суперкласса могут применяться и для подкласса. Подклассы могут порождать другие подклассы. Множественное наследование означает использование в качестве порождающих нескольких суперклассов, при этом повторяющиеся элементы интерфейса берутся от первого из них.
Например, наш класс «Уравнение» может породить такие подклассы, как «Квадратное уравнение», «Дифференциальное уравнение», «Биквадратное уравнение». Можно расширить пример другими математическими записями, например неравенствами, формулами. Для этого можно ввести суперкласс «Выражение» с его методами «Переместить», «Удалить», «Изобразить». В данном случае имеем возможность создания подклассов с уже готовыми методами, причем «Изобразить» придется переработать.
Абстрактные классы применяются только для создания подклассов. Для них экземпляры не могут создаваться. Например, класс «Выражение» является абстрактным. Финальные классы отличаются тем, что от них не могут порождаться подклассы.
Полиморфизм означает, что за единообразным интерфейсом следуют различия в методах. Например, метод «Изобразить» разный для квадратного и дифференциального уравнения. Возможны также сложные объекты, включающие в свой состав другие объекты.
Сасhe реализует все концепции ООП. В нем имеются классы объектов и классы типов данных (строк, чисел и т.п., см. табл. 4). Классы объектов могут быть зарегистрированными или нет. Если класс зарегистрирован, он может встраиваться (serial) в другой класс или храниться на диске (persistent). Если класс зарегистрированный, его экземпляры существуют лишь на время работы процесса. Для того чтобы определить класс, необходимо указать его тип и поведение, т.е. свойства и методы. Класс определяется следующими элементами: имя, ключевые слова, свойства, методы, параметры, запросы и индексы.
Свойства бывают константами какого-либо типа, ссылками на объекты, встроенными объектами, BLOB-потоками данных, коллекциями, многомерными переменными и связями между persistent-объектами (в обе стороны). Binary Large Object, или поток данных, определяется как множество данных, не имеющее структуры и занимающее значительный объем дисковой памяти ЭВМ. Коллекции могут представлять собой массивы (array) либо списки (list), содержащие ссылки, встроенные объекты либо константы. Свойства могут объявляться простыми, монгомерными (multidimensional), временными (transient) и вычисляемыми (calculated). Последние две разновидности в БД не хранятся. Для многомерных свойств применимы все методы, доступные для индексированных переменных, такие как $Order.
Методы, как и свойства, могут определяться как открытые (public), вызываемые без ограничений, так и закрытые (private), используемые только в классе. Методы могут быть присущи классу либо конкретному экземпляру. Имеются следующие виды методов: код (на языке Cache Object Script - COS), вызов (программы Cache), выражение и генератор.
Язык COS основан на языке М (использован в MUMPS) и к языкам строгой типизации не относится. Например, можно написать SET SET=0, что означает присвоение переменной с именем SET значения 0. Имеется много встроенных функций языка для работы, например, с коллекциями, математические и др. С помощью этого языка пишутся скрипты, встраиваемые в веб-страницы. Сервер Cache принимает запросы от таких страниц на работу с БД, обрабатывает их и формирует статические веб-страницы, отправляемые клиентам.
Для примера создайте вначале класс Animal (животное). Его свойства – кличка, вид и дата рождения (для дальнейшего переноса БД на людей).
Затем запустите Студию, для чего ПКМ нажмите на Cache-куб. В перечне соединений с серверами выберите Local. Появляется окно Студии. Щелкните ЛКМ на кнопке «Новый класс». Задайте имя класса – Animal, тип Persistent. Появится новый класс, отображаемый в их иерархии в Студии.
Щелкните ЛКМ на кнопке «Новое свойство». Введите View (Вид) в качестве имени свойства. Тип данных установите %Library.String. Аналогично определите остальные свойства: Name (кличка) и Birth (дата рождения) с типом %Library.Date.
Определите запрос для поиска. Щелкните ЛКМ на кнопке Новый запрос. Дайте запросу имя Poisk. Выберите все поля для запроса (перенося вправо кнопкой с изображением стрелки). Определите сортировку по алфавиту, для чего из перечня «Упорядочить по» выберем поле Name.
Для использования класса произведите его компиляцию, щелкнув на значке «Компилировать класс». Создайте файл Cache Server Page (CSP). Для этого в Studio укажите последовательно «Файл», «Новый», «CSP Файл». Редактор отображает исходный код для CSP. Выберите «Файл», «Сохранить». В окне «Сохранить как» выберите /csp/user, напишите имя страницы menagerie.csp (зверинец).
В редакторе переместите курсор в секцию , укажите «Вставить», «Мастер Форм». Далее укажите класс Animal и часть свойства из списка свойств.
Затем сохраните произведенные изменения и скомпилируйте CSP, нажимая «Build», «Компилировать». Откройте страницу в браузере Internet Explorer, указывая «Вид», «Web Страница».
Введите несколько экземпляров класса с помощью обозревателя Internet Explorer, осуществите поиск, нажимая на имеющуюся кнопку.
2.6. Системы управления
информационными хранилищами
Массивы данных чрезмерно большого объема могут быть расположены на нескольких серверах. В случае их хранения в сетях наподобие Internet, они называются информационными хранилищами [9]. Их базы и банки данных работают обычно с распределёнными СУБД. Они могут являться сетями хранения данных – для хранения электронных информационных ресурсов. В этом случае они называются Storage Area Network (SAN). Если же сеть корпоративная, используются специальные серверы Network Attached Storage (NAS). Информационными хранилищами там являются RAID-массивы, а также CD- и DVD-библиотеки.
Вильям Инмон в 1992 г. изложил собственные предложения по организации данных. Они потом стали технологией хранилищ данных (Data Warehouse, ХД) [14]. Его методологию на следующий год расширил Э.Кодд при помощи своей концепции OLAP (оперативной аналитической обработки данных - online analytical processing). Данные в ХД обрабатываются при помощи OLAP.
Хранилище данных, в сущности, это центр, куда приходит информация от подразделений предприятия [10]. До этого данные надо каким-то образом обработать. БД, где производится накапливание и обработка входных данных, из которых состоит хранилище, называют транзакционной. Предварительный аннализ длительный потому, что данные идут с разных отделов с разными структурами данных. В ХД должны содержаться средства распределения нагрузки и обеспечения бесперебойности в работе, плюс возможности настройки. Предметная область здесь – собственно данные как результат работы существующих информационных систем.
Понятие «Информационное хранилище»
Информационные системы, используемые на предприятиях, нередко включают в свой состав средства комплексного многомерного анализа как самих данных, так и их динамики с целью поддержки принятия решений. Для принятия управленческих решений обычно необходима количественная информация. В связи с этим требуется создание ХД (Data warehouses, DW). Это включает сбор, фильтрацию и предварительную обработку данных, имеющие целью вывод итоговой информации конечным пользователям для выполнения статистического анализа (либо формирования аналитических отчетов). Концептуальные основы DW предложил в 1990 г. Билл (Вильям) Инмон. Они стали одними из ведущих в разработке технологий обработки данных 90‑х гг. ХХ в. Данный класс систем обработки информации подразумевает подготовку значительного как по объему, так и по времени (5 лет и более) массива информации, необходимого для выполнения анализа данных. На русский язык DW можно перевести так же, как «информационное хранилище». Этот термин ввела корпорация IBM в начале 80-х гг. ХХ в. и характеризует нечто большее, чем по Инмону. В связи с этим имеет смысл воспользоваться следующим общепринятым термином «ХД». ХД – это интегрированный, предметно ориентированный, неизменный, поддерживающий хронологию набор данных, основной задачей которого является поддержка принятия решений.
Важным достоинством применения ХД на предприятии является контроль информации из различных источников как производственного ресурса. То, что она из разных источников, является слабым местом. Поэтому перед загрузкой в ХД ее требуется каким-то образом обработать.
Один из авторов концепции ХД Ральф Кимбалл изложил основные требования к ним:
- быстрота извлечения данных;
- их внутренняя непротиворечивость, достоверность и полнота;
- получение срезов данных и их сравнение (slice and dice);
- удобство утилит просмотра хранимых данных;
- качественная процедура пополнения данных.
Для удовлетворения этим требованиям обычно применяют несколько программных продуктов: для хранения, просмотра и пр. ХД – это банк данных некоторой структуры с информацией об истории производства компании. Основное его назначение – выполнение каких-либо аналитических запросов за небольшое время.
Хранилище данных, как правило, отличается от обыкновенной реляционной БД. Во-первых, вместо помощи пользователям в повседневной работе, они нужны для принятия решений. Например, для анализа динамики продаж за период в несколько лет. Во-вторых, они относительно стабильны: обновление данных производится по расписанию (раз в неделю, в день или в час). В идеале прежняя информация не претерпевает изменения вообще. В-третьих, обычная БД нередко и есть источник данных для ХД. Однако возможны и внешние источники, такие как статистические отчеты. Особенности аналитических систем не дают напрямую использовать оперативные данные. На это есть разные причины, например, разрозненность данных, различие в форматах хранения, а также несоответствие их структур для осуществления анализа. Для этого и используют ХД.
2.7. Типы полей (данных) различных СУБД
Типы полей (данных) различных СУБД представлены в следующей таблице (табл. 4).
Таблица 4.
Типы полей (данных) различных СУБД и их соответствия
MS Access
Cache
Dbase
Paradox
MySQL
Логический
Boolean
Logical
Logical
–
Текстовый
String
Character (alpha)
Alpha
Char, VarChar
–
Binary
Binary
Binary
BLOB, TinyBLOB, MediumBLOB, LongBLOB, Text, TinyText, MediumText, LongText
Числовой
Numeric
Number (BCD)
Number
Numeric, Decimal
Окончание табл. 4.
MS Access
Cache
Dbase
Paradox
MySQL
Дата/время
–
–
–
Datetime
–
Date
Date
Date
Date
Денежный
Currency
–
$ (Money)
Money*
Поле MEMO
–
Memo
Memo
–
Счетчик
–
–
+ (Autoincrement)
–
Поле объекта OLE
–
OLE
OLE
–
Гиперссылка
–
–
–
–
Мастер подстановок
List
–
–
Enum, Set
–
Float
Float (numeric)
–
Float, Real, Double Precision
–
Integer
–
–
Integer
–
Name
–
–
–
–
Status
–
–
–
–
Time
–
Time
Time
–
TimeStamp
–
@ (Timestamp)
TimeStamp
–
–
–
Short
SmallInt
–
–
–
Long Integer
–
–
–
–
# (BCD)
–
–
–
–
Formatted Memo
–
–
–
–
Bytes
–
–
–
–
Graphic
–
–
–
–
–
Year
Счетчик (Autoincrement) – поле с числом, которому автоматически назначается уникальный номер (в процессе создания) записи. Его значения обновлению не подлежат.
Поле MEMO применяется для хранения комментариев размером до 216-1 символов. В Paradox и DBase размер этого поля означает число хранимых в таблице символов (до 240), остальное хранится в специальном файле.
Логический (Logical) – может принимать значения только «истина» либо «ложь». В DBase допустимы символы Y,y,T,t,F,f,N,n.
OLE – объект (такой, как рисунок, документ Acrobat Reader, видеозапись и т.п.), который может быть связан с файлом либо внедрен в БД.
Гиперссылка – строка, являющаяся адресом гиперссылки. Может содержать текст, путь к соответствующему файлу или URL.
Мастер подстановок (ENUM – перечисление, List) означает, что при внесении значения в поле осуществляется выбор его из списка. Список может быть постоянным, а также (в Access) набором значений, хранящихся в некоторой таблице.
MySQL поддерживает даты с 1 января 1000 г. по 31 декабря 9999 г. (Е). Paradox – от 1 января 9999 г. до н. э. по Е. Access – c 100 до Е. Cache – с 12/31/1840 по Е.
TIMESTAMP (временной штамп) применяется для автоматического сохранения времени и даты при изменении и добавлении строк в таблицу.
Cache имеет специфический тип – Name. Это имя и фамилия, например, «Пушкин. Александр».
В текстовых столбцах длина поля имеет значение от 1 до 255, хранимые короткие строки дополняются пробелами до этой длины, отсекаемыми при извлечении значений, а длинные обрезаются.
Строки типа VARCHAR обладают переменной длиной, при их хранении нужно лишь указанное число байт, и еще один для хранения длины. Пробелы в конце строк при записи исчезают.
BLOB – это двоичный объект, занимающий значительное количество памяти. Его модификации с префиксами TINY, MEDIUM и LONG различаются наибольшей допустимой длиной данных. Отличие типов (и их префиксных модификаций) BLOB и TEXT заключается в том, что для BLOB сравнение и сортировка производятся с учетом регистра, а для TEXT – без.
Тип YEAR – с 1901 по 2155 г.
Поле Money (валюта) предусмотрено языком SQL, но не во всех версиях MySQL он есть. В таких полях отображается символ доллара $.
Поле Time в Paradox, в отличие от прочих рассматриваемых СУБД, содержащих часы, минуты и секунды, содержит миллисекунды, прошедших с полуночи.
BCD – число формата Binary Coded Decimal. Вычисляется медленнее, чем для других форматов, но с большей точностью – до 32 цифр после запятой.
Formatted Memo – это Memo плюс возможность определения шрифта хранимого текста, причем произвольной длины.
Поле Graphic содержит изображения любого размера. Его размер – число хранимых в таблице байт (не более 240), прочие хранятся в отдельном, общем для таблицы файле.
Тип Bytes предназначен для хранения до 255 цифр.
2.8. Контрольные вопросы
1. Какие типы полей предлагает формат Paradox?
2. Какие события могут быть для модуля данных?
3. В чем различия компонентов DBGrid1 и DBNavigator1?
4. Что делает метод Locate языка Delphi, а что ключевое слово SELECT языка SQL (в чем сходства и отличия)?
5. Какие слова употребляются в языке SQL?
6. В чем отличие вида SQL для запроса на добавление и запроса на суммирование?
7. Какой из созданных вами запросов больше по объему текста?
8. Что содержит запрос (в виде SQL) – результат п. 4.1?
9. Какие импортируемые форматы имеет Microsoft Access? А для экспорта?
10. Какие элементы у него бывают на форме?
11. Какие операторы имеют место в Visual Basic?
12. Зачем нужна форма?
13. Что такое отчет?
14. Какие у Access шаблоны? А какие типы полей?
15. Какие разновидности полей имеются в Cache?
16. Что такое многомерная структура?
17. Чем отличается база данных от информационного хранилища?
18. Глава 3. Администрирование баз данных
3.1. Информационная безопасность БД
При работе с БД немаловажное значение имеют основные принципы информационной безопасности, к которым относятся конфиденциальность, целостность данных и их доступность [13]. Для большинства бизнес-организаций является достаточным класс безопасности C2 из «Критериев оценки надежных компьютерных систем».
Идентификация и проверка подлинности пользователей
Как правило, в СУБД для идентификации и проверки подлинности пользователей может быть использован один из двух вариантов. Первый из них – это механизмы безопасности операционной системы, а второй – оператор CONNECT языка SQL. Либо в случае MySQL можно подсоединиться к серверу, введя команду: mysql -h host -u user -p, а также используя графический интерфейс Mysql Query Browser.
В любом случае пользователь использует имя (логин), и аутентифицируется посредством пароля. Программа, работающая с БД, обычно имеет повышенные привилегии. В случаях, когда пользователям удается завершить приложение, сохранив активным подключение к серверу БД, они получают неконтролируемую возможность по манипулированию данными.
Поддержание целостности данных в СУБД
Очевидно, что неприятно, когда некто подглядывает за тем, что совершают клиенты со своими счетами. Еще хуже, если иногда часть денег вдруг исчезает. С этим борются, используя обеспечение целостности. Как известно, главные враги БД – это ошибки, совершаемые оборудованием, приложениями, администраторами и конечными пользователями, а вовсе не злоумышленники.
Информационная безопасность в современных системах управления базами данных
Политику безопасности СУБД выбирает администратор, в нашем случае – данных [12]. Полную защиту данных реализвать практически невозможно. По этой причине информацию гарантированно защищают лишь на то время, когда взлом будет иметь некоторые последствия.
Некоторые термины
Конфиденциальной (sensitive) называют информацию, требующую своей защиты.
Доступ (access) к информации – ознакомление с ней, обработка (в том числе создание копий), изменение и удаление.
Субъектом (subject) доступа (принципалом) называют физическое лицо, или же процесс, запущенный в информационной системе, поведение которого определяется правилами разграничения доступа (ПРД, см. ниже).
Единица информации автоматизированной системы, доступ к которой определяется ПРД, получила название объекта доступа. Им в СУБД может быть любой объект, содержащий конечную информацию: таблицы, представления (виды), поля и записи. Таблицы БД и виды имеют своего владельца или создателя.
ПРД (security policy) – такая совокупность правил, которая регламентирует права доступа субъектов к объектам.
Санкционированным (authorized) называют доступ к данным, не нарушающий ПРД.
Несанкционированным (unauthorized) называют доступ, нарушающий ПРД, используя имеющиеся средства автоматизированной системы.
Идентификатор (identifier) доступа – уникальный в некотором смысле признак объекта (либо субъекта) доступа.
Получение идентификатора объектом или субъектом доступа, а также сравнение предъявляемого идентификатора с существующими «аналогами» называется идентификацией (identification).
Паролем (password) называют такой идентификатор субъекта, который представляет собой его секрет.
Аутентификация (authentification) заключается в проверкетого, что субъекту доступа принадлежит идентификатор, им предъявленный (подтверждение подлинности).
В СУБД во время соединения с БД осуществляется идентификация и аутентификация. В результате субъект имеет доступ к данным, соответствующий принадлежащим ему полномочиям.
Уровень полномочий (привилегия, privilege) субъекта – набор его прав доступа.
Нарушитель (violator) ПРД – это субъект (доступа), совершающий несанкционированный доступ.
Моделью (model) нарушителя ПРД называют абстрактное описание нарушителя ПРД. Оно бывает как формализованным, так и неформализованным.
Целостность (integrity) информации – способность ИС по обеспечению ее неизменности в условиях случайного или умышленного искажения или разрушения.
Метка (label) конфиденциальности – информационный элемент, представляющий конфиденциальность объекта.
Многоуровневая (multilevel) защита – это такая защита, которая обеспечивает разграничение доступа субъектов, обладающих различными правами доступа к объектам, принадлежащим различным уровням конфиденциальности.
Пользователи СУБД
Выделяют три группы пользователей СУБД:
1. Прикладные программисты. Эта группа отвечает за разработку прикладных программ, работающих с БД. Они обладают привилегией манипулирования данными и могут получать привилегии создания объектов данных.
2. Конечные пользователи. Эта группа непосредственно работает с БД. Их набор привилегий по манипулированию строго ограничен и может конфигурироваться администратором.
3. Администраторы БД. Они разрабатывают БД, занимаются техническим контролем работы СУБД, работают над быстродействием системы, предоставляют пользователям доступ к данным, разрабатывают (или помогают пользователю в разработке) внешние представления данных. Кроме того, они занимаются защитой данных.
Дискреционная защита
Дискреционное (разграничительное, discretionary) управление доступом – его разграничение между субъектами и объектами, причем и те и другие поименованы. Имеется возможность передачи субъектом права своего уровня другому субъекту. Эта защита многоуровневая и логическая. Логическая защита означает набор привилегий (ролей) для защищаемого объекта.
Роль – это поименованное множество полномочий пользователей. Имеются как стандартные роли, так и создаваемые пользователями. Использование ролей упрощает работу с привилегиями пользователей, а также структурирует ее. Роли можно сконфигурировать даже прежде, чем будут определены пользователи. Как пользователю, так и их группе можно представить несколько ролей.
Обладание таблицей или представлением также является логической защитой. Владельцы могут расширять набор привилегий, либо сужать и ограничивать доступ. Информация о логической защите размещается в системных таблицах БД и отделена от самих таблиц (представлений).
Сведения о пользователях БД находятся в ее системной папке. Нередко в СУБД для соединения с БД используется предложение CONNECT. Соединение для пользователей, о которых нет сведений, или с неверным паролем, невозможно. Сеанс работы начинается с прохождения идентификации пользователя и его аутентификации и заканчивается отсоединением (от системы). При этом его действия привязываются к результату идентификации. В конце возможно нормальное отсоединение пользователя (при помощи операции DISCONNECT), либо принудительное (по инициативе администратора, к примеру, при его удалении), либо в результате непредусмотренного обрыва канала связи. При обрыве канала пользователь получит об этом сообщение, и выполненные им действия откатываются до состояния последней фиксации в БД. Так или иначе, в течение сеанса пользователь является субъектом доступа в отношении средств информационной безопасности СУБД.
Технология открытых систем подразумевает, что субъекту доступа предоставляется возможность обращения с помощью СУБД к БД лишь из программных продуктов, поставляемых в дистрибутиве, либо же разработанных им самим, но только посредством штатных системных средств.
Субъекты контроля расположены в таблице полномочий, причем распределены по категориям, таким как CONNECT, RESOURCE и DBA. Наличие категорий обеспечивается вендором СУБД. В данной последовательности категорий нарастают полномочия по видам подключения.
CONNECT представляет категорию конечных пользователей. Обычно они могут лишь соединяться с БД и производить запросы к данным.
Категория RESOURCE – это привилегированные пользователи. У них есть права по созданию своих объектов в БД. Такими объектами могут быть таблицы, виды, псевдонимы и хранимые процедуры. Владелец объекта обладает полным набором привилегий для управления данным объектом.
Категория DBA представляет администраторов БД. Она содержит в себе привилегии CONNECT и RESOURCE, а также манипулирования субъектами защиты – ввод, удаление из системы, изменение категории.
Необходимо иметь в виду, что дискреционная защита имеет слабое место: ограничение доступа лишь к именованным объектам, но не к данным. Если применяется реляционная СУБД, то в качестве объекта может выступать таблица, а субъекта – пользователь. Тогда невозможно ограничить доступ лишь к части информации из таблицы. Тем не менее данную проблему отчасти решают виды и хранимые процедуры, реализующие соответствующее множество бизнес-операций.
Мандатная защита
Мандатная (принудительная) защита (mandatory access control) реализуется специализированными (trusted) версиями СУБД. Она представляет собой разграничение доступа субъектов по отношению к объектам данных, которое основано на определяемой меткой конфиденциальности информации, содержащейся в объектах, а также на разрешении субъектам обращаться к данным этого же уровня конфиденциальности.
Произвольное управление доступом присуще уровню безопасности «C». Этого вполне хватает большинству коммерческих приложений. Однако здесь не решается одна немаловажная задача – это слежение за передачей данных. Здесь ничто не мешает пользователю, прошедшему авторизацию, законным образом скачивать конфиденциальные данные, после чего сделать их доступными для всех. Можно рассмотреть, почему такое возможно. Дело в том, что привилегии расположены отдельно от данных, например от строк таблиц, и в результате данные обезличиваются. Тогда их разрешено передавать в любом направлении, например, средствами СУБД. С этой целью достаточно только иметь доступ к таблице (виду).
Физическая защита СУБД в основном относится к данным: их принадлежность, важность и т.д. Это главным образом метки безопасности, которые описывают группу принадлежности, уровни секретности и ценности данных какого-либо объекта, в качестве которого могут быть не только таблицы, но и столбцы, строки и даже поля. Метки безопасности представляют собой физическую защиту. Они не меняются и уничтожаются лишь вместе с объектом защиты. Эти метки расположены на диске совместно с защищаемыми данными, в то время как при использовании логической защиты для этих целей использовался бы системный каталог.
При использовании меток конфиденциальности СУБД не дает их проигнорировать во время получения доступа к данным. Подобные версии СУБД обычно являются комплексами программных средств как на стороне сервера, так и на стороне клиента. Дополнительно может применяться специализированная (защищенная) версия операционной системы. Помимо меток конфиденциальности, защищенные версии СУБД имеют возможности по аудиту – отслеживанию доступа субъектов к объектам защиты.
Применение мандатной защиты СУБД предоставляет возможность разграничения доступа к информации, хранящейся в базе, от доступа к объектам данных, каждому из которых присвоен идентификатор. Тогда единица защиты, например, может быть записью о некотором договоре, но не таблицей с данными о нем. Если пользователю системы нужен доступ к договору, то ему не удастся миновать метку конфиденциальности. Иногда можно разграничивать доступ даже до значения определенного атрибута в терминах концептуального моделирования. Как правило, метка – это целый набор значений уровней защищенности, таких, как для устройства с таблицей, для таблицы, для атрибута и для некоторого кортежа.
Если не считать атрибут собственности, используемый логической защитой, отделяющего данные некоторого субъекта от чужих, физическая защита производит разбиение данных более тонко. Можно попытаться обойтись без нее, например, с помощью сложного комплекса хранимых процедур.
Следует отметить, что защищенные СУБД предоставляют возможность разграничения доступа с включенных в специальный список рабочих станций для содержащихся в некотором перечне пользователей, определить их режим работы, ограничить во времени работу этих пользователей с указанных рабочих станций. Этим может заниматься сервер приложений, следящий, что и откуда пришло. Другое серверное приложение, как правило, хранимых процедур, когда СУБД лишено мандатной защиты, занимается аудитом.
Модели транзакций
Основные модели транзакций: плоские (классические), цепочечные, или многозвенные и вложенные. К ним предъявляют требования, называемые ACID (Atomicity, Consistency, Isolation, and Durability – атомарность, согласованность, изолированность и долговечность).
Согласно атомарности, транзакция либо выполняется полностью, либо вовсе не выполняется. Выполнение означает, что совершаются все действия, а транзакция фиксируется, при этом БД принимает очередное согласованное состояние. Иначе, если все действия совершить невозможно, выполненные действия откатываются назад, и БД возвращается в первоначальное состояние.
Требование согласованности означает, что при совершении транзакций БД переходит от одного согласованного состояния к другому.
Рассмотрим требование изолированности. Пусть над одним и тем же требуемым транзакцией набором данных одновременно выполняется еще одна (или более) транзакций. Данный процесс может казаться параллельным, но все они фактически совершаются последовательно (изолированно). При этом часть времени возможно нахождение данных в несогласованном состоянии. Соответствующие данные необходимо «спрятать» от прочих транзакций, пока БД не примет согласованное состояние (либо совершится откат).
Требование долговечности следующее: если транзакция была успешно совершена и зафиксирована, тогда любые изменения в БД не должны быть утеряны вне зависимости от обстоятельств.
Необходимо, чтобы каждая транзакция завершалась одним из двух допустимых исходов. В случае успешного завершения необходима ее фиксация, т.е. все ее результаты, или изменения в БД нужно сделать постоянными. При этом БД следует перевести в согласованное состояние. В случае, когда при выполнении транзакции происходит ситуация, при которой она не может быть завершена успешно, необходимо выполнить «откат» БД в первоначальное состояние.
Рассмотрим ряд определений в области транзакций.
Сегментом отката (rollback segment) называют область дисковой памяти, куда вносится информация о незавершённых (текущих) изменениях.
Журналом транзакций принято назвать такую часть БД, куда заносятся данные вообще о всех изменениях, касающихся всех объектов в БД.
Черновое чтение – это ситуация, которая возникает, в случае, если транзакцией считываются изменения, вносимые посторонней незавершенной транзакцией.
Повторяемое чтение – это ситуация, когда один и тот же запрос, заново совершаемый некоей транзакцией, возвращает результатом одни и те же данные. Таким образом игнорируются те изменения, которые были произведены другими, как завершёнными, так и незавершёнными транзакциями.
Неповторяемое чтение – это ситуация, когда транзакция обнаруживает изменения, производимые другими транзакциями, обязательно завершёнными. Вследствие этого случается несогласованность, касающаяся результатов запроса. При этом половина данных отвечает состоянию БД перед изменениями, а половина – после.
Фантом – это разновидность неповторяемого чтения. Он характерен для случаев, при которых транзакция обновляет данные, а потом она же из них считывает. При начале считывания до завершения обновления возможно появление несогласованных данных.
Уровень изоляции показывает, разрешено ли считывающей транзакции использовать результаты работы прочих одновременно выполняющихся завершённых или незавершённых транзакций, совершающих запись.
Блокировкой называют временное наложение ограничения на доступ к данным, которые задействованы в транзакции, выполняемое со стороны прочих транзакций.
Табличные (строчные, страничные) блокировки накладываются соответственно на таблицу (строку, страницу – блок памяти).
Разделяемая блокировка (S-блокировка) на ресурсе дает транзакциям право общего доступа к данному ресурсу.
Исключающая блокировка (Х-блокировка) дает право монопольного доступа к ресурсу.
Защита информации в базах данных
Привилегии, также называемые полномочиями, пользователей (или их групп) можно охарактеризовать как перечень действий, которые могут быть выполнены ими над объектами БД. Обеспечение защиты информации в БД требует проверки как полномочий, так и подлинности.
Проверка полномочий состоит в соответствии каждому пользователю определенного набора действий, разрешенных с некоторым объектом БД. Важность такой проверки отчасти основана на массовом применении распределенных вычислений.
При проверке подлинности (или аутентификации) требуется подтвердить, что пользователь является тем, за кого он себя выдает. Для того чтобы обеспечить безопасность, СУБД необходимо иметь модель проверки подлинности, подтверждающую заявленные пользователями логины. Современные СУБД реализуют иерархическую систему назначений привилегий.
Несмотря на рассмотренные выше вопросы защиты информации, некоторые проблемы все же остаются. Считается, что информационная безопасность нарушается в связи с реализацией хотя бы одной из угроз. Это соответствует совершению действия (преднамеренно либо случайно), которое может иметь результатом сбой системы защиты.
Основные существующие виды угроз:
- несанкционированное применение данных и приложений (копирование, изменение, удаление), так же как и исследование программ с целью вторжения в систему;
- случайный доступ в область системной памяти;
- некорректное изменение данных;
- ошибки, совершаемые пользователями;
- ошибки, содержащиеся в приложениях;
- перехватывание данных, передаваемых по линиям связи;
- похищение информации (на каких-либо ее носителях).
Вследствие нарушения функционирования системы безопасности, вероятно, наступление следующих событий:
- утеря сведений, являющихся секретными;
- системный сбой, представляющий собой снижение скорости работы системы или даже полную остановку;
- потеря информации, находящейся во внешней памяти, также имеющая название жесткого сбоя;
- ущерб в материальном отношении.
Исходя из вышеперечисленного, декларируются следующие события, от которых требуется защита: хищение, потеря, сбои и отказы.
Защита от хищения – это предотвращение физической кражи, а также в отсутствие санкции – доступа к данным и создания копий (для последующего размножения) информации и приложений.
Для решения задачи защиты от утерь важнейшую роль играет механизм поддержания целостности (как физической, так и логической, а также семантической) и правильности находящихся в БД данных.
Качество защиты от сбоев, а также отказов вычислительной системы зависит от надежности ее компонентов, к которым относятся процессор, память и некоторые другие устройства, также как и операционная система и другие программы. Термин «надежность» означает возможность системного компонента по однозначному и своевременному выполнению функций, которые были на него возложены.
Организация защиты информации предполагает следующие защитные уровни:
1. Внешний, охватывающий территорию, где располагается система.
2. Отдельные сооружения, а также помещения.
3. Компоненты системы наряду с внешними носителями данных.
4. Технологические процессы сбора, хранения, обработки, а также передачи информации.
Уровни 1-3 подразумевают физическое воспрепятствование получению доступа к информации. Четвертый уровень обеспечивает логическую защиту данных и эффективен, когда уже был получен физический доступ. Методы защиты данных можно выделить в следующие основные классы: программные, физические, аппаратные и организационные.
Настройка и администрирование СУБД
Главные задачи администрирования СУБД – защита информации наряду с разграничением прав доступа, предоставлемых различным категориям пользователей. Имеются и прочие задачи: определение способа размещения файлов на диске и требуемого объема памяти на нем, распределение на нем данных, резервное копирование.
Данными задачами на различных этапах жизненного цикла занимаются администраторы ИС. В зависимости от сложности ИС группы администраторов могут выполнять различные функции. Существуют следующие категории администраторов ИС:
- системные аналитики, выполняющие системный анализ;
- проектировщики структур данных;
- проектировщики процессов обработки данных;
- системные, прикладные специалисты и операторы, занимающиеся непосредственной эксплуатацией ИС;
- специалисты по техническому обслуживанию.
Существуют две категории администраторов БД
1. Администраторы данных. Они в начале разработки БД несут ответственность за оптимальность ее структуры по отношению к совместной работе с БД большого количества пользователей. Во время эксплуатации БД такие администраторы несут ответственность за корректность работы с данными при совместной работе пользователей. При развитии и реорганизации БД цель данных администраторов – корректность реорганизации без прекращения текущей эксплуатации БД.
2. Администраторы приложений. Они работают как во время проектирования, так и при создании и реорганизации БД. В их обязанности входит, например, координация работы разработчиков прикладных программ.
3.2. Администрирование MySQL
Рассмотрим некоторые привилегии, предоставляемые в СУБД MySQL (табл. 5). Информация о них хранится в БД с именем mysql, в ее таблицах с именами: user, db, host, tables_priv и columns_priv.
Таблица 5
Номер п.п.
Привилегия
Что позволяет сделать
1
SELECT
Отбор записей
2
INSERT
Вставка записей
3
UPDATE
Изменение содержимого записей
4
DELETE
Удаление записей
5
INDEX
Создание и удаление индексов
6
ALTER
Модификация структуры таблицы
7
CREATE
Создание БД и таблиц
8
DROP
Удаление БД и таблиц
9
GRANT
Предоставление другим пользователям привилегий
10
FILE
Чтение и запись файлов сервера
Привилегии могут использоваться злоумышленниками для того, чтобы сменить привилегии доступа и пароли. Последние зашифрованы, в связи с чем у злоумышленника нет возможности их получения в виде обычного текста. Имея доступ к паролям, находящимся в таблице mysql.user, атакующий может войти в систему с логином другого пользователя и даже (имея соответствующие привилегии) заменить пароль.
Особенности системы привилегий MySQL следующие. Нельзя явно закрыть доступ конкретному пользователю. Нельзя также указать, что у пользователя есть привилегии CREATE и DROP для таблиц, но нет этих привилегий для самой БД.
MySQL предоставляет возможность ограничить использование ресурсов сервера. Например, можно сделать переменную max_user_connections больше нуля. Однако это не дает возможности ограничивать отдельных пользователей. С другой стороны, это может использоваться Internet-провайдерами.
Для конкретных пользователей можно регулировать количество в час: всех запросов, всех обновлений, новых соединений.
3.3. Защита информации
Некоторые пакеты прикладных программ требуют шифрования данных, хранимых в таблице. Это позволяет сделать Paradox, однако, при этом требуется доступ на запись к корневой папке, где хранится файл ParadoxUser.dat, который может быть закрыт системным администратором. Можно самостоятельно шифровать данные, используя известные алгоритмы шифрования, в зависимости от требуемой криптостойкости. В этом случае пользователь должен обладать известным только ему паролем БД (или ее поля). Поэтому некоторые разработчики, не желающие несанкционированного использования их БД, которые они широко распространяют вместе с приложениями, но не нагружающие пользователей знанием пароля, создают файлы с трудной для понимания структурой, например, пакет Microsoft Word с данными о правописании.
Иногда возможно шифрование файлов с хранением внутри программного кода ключа. В этом случае программа должна быть защищена от исследования, для чего имеются различные методы: упаковка, зашифрованный самомодифицируемый код и др. Например, в разработанном на кафедре компьютерных технологий чувашско-русском переводчике база данных словаря содержит одно зашифрованное поле, ключом к которому является содержимое другого поля, так как словарь изменению не подлежит. Для получения исходной БД сначала словарь был отсканирован, проверен, затем в Microsoft Word автоматически заменялись элементы форматирования словарных статей (шрифт, начертание, концы строк и знаки препинания) на специальные символы. Позже была разработана специальная программа, выделяющая эти символы и на этой основе формирующая пригодный для импорта в Microsoft Access текстовый файл. Полученную исходную таблицу обрабатывала шифрующая программа.
Необходимо иметь в виду, что шифрование помимо некоторого замедления работы в связи с расшифровкой приводит к увеличению объема трафика при передаче по сети с использованием сжимающего модема, а также к росту размера архива. Это связано с тем, что если ранее в БД – данные имели много сходных подстрок, кодируемых архиватором короткими последовательностями байт, то теперь у нас набор не имеющих ничего общего друг с другом байтов, оставляемых архиватором «как есть» без изменения длины.
3.4. Контрольные вопросы
1. Поясните термин «субъект доступа».
2. Перечислите привилегии MySQL.
3. Каковы главные задачи администрирования СУБД?
4. Что означают «правила разграничения доступа»?
5. Что означает требование долговечности?
6. Какие существуют виды блокировок?
7. Какие бывают пользователи и администраторы?
8. Перечислите виды угроз для информационной системы.
9. Что позволяют защищенные СУБД?
10. Что такое роль?
11. Чем отличается разграничительное управление доступом от принудительного?
Заключение
Из перспектив развития БД важно выделить следующие:
1. Хранилища данных и OLAP-обработка.
2. Применение неточных данных. Используется процессор запросов, предусматривающий вероятности, коэффициенты доверия, полноты и т.д. при принятии решений.
3. Новые пользовательские интерфейсы, например, на основе онтологии – формализованной системы знаний о предметной области. Интеграция онтологий и БД даст пользователям возможность задания запросов в собственной терминологии.
4. Оптимизация запросов: работа с неструктурированными запросами, оптимизация для группы запросов и др.
5. Интеграция слабоформализованных и разнородных данных, для использования технологий БД в геоинформационных системах, системах автоматизации проектирования и т.д.
6. Доступ к БД через Internet: создание дружественного интерфейса, уменьшение трафика, повышение производительности системы в многопользовательском режиме.
7. Самоадаптация. Для возможности упрощения настройки, а также сопровождения БД нужно, чтобы СУБД брала на себя большую часть таких функций.
8. Концепция GRID – объединение в единую сеть вычислительных ресурсов. К промышленным GRID-системам относятся Oracle 10G и Oracle 11G.
9. Сохранность данных. Со временем устаревают как форматы хранения данных, так и средства доступа, стареют носители. Решить данную проблему помогут средства миграции данных в новые форматы с сохранением метаданных (описания).
10. Технологии разработки данных и знаний (data and knowledge mining). Первые нужны для поиска неявных закономерностей в больших объемах информации. Вторые – это извлечение знаний из БД или ХД.
Используемая литература
1. Базы данных: метод. указания к лабораторным работам / А.П. Димитриев; Чебоксары: Изд‑во Чуваш. ун-та, 2011. 36 с.
2. Аксанов Н. М. Технология хранилищ данных. Ризаев И.С. Казань, 2000. [http://ua.coolreferat.com/Технология_хранилищ_данных].
3. Нормальные формы. Избыточность данных в базе данных. Транзитивная зависимость. Проектирование баз данных URL: http://zametkinapolyah.ru/zametki-o-mysql/normalnaya-forma-izbytochnost-dannyx-v-baze-dannyx-tranzitivnaya-zavisimost-proektirovanie-baz-dannyx.html [Дата обращения 09.09.2013].
4. Фаронов В.В. Программирование баз данных в Delphi 7 / В.В. Фаронов. СПб.: Питер, 2006. – 458 с.
5. Фаронов В.В. Система программирования Delphi / В.В. Фаронов. СПб.: БХВ-Петербург, 2003. 912 с.
6. П. Нортон. Разработка приложений в Access 97 в подлиннике: пер. с англ. / П. Нортон, В. Андерсен. – СПб.: BHV – Санкт-Петербург, 2000. – 656 с.
7. Швецов В.И. Базы данных. // Интернет университет информационных технологий. [Дата обращения 14.02.13 г.] URL: http://www.intuit.ru/department/database/databases/.
8. Шнырев С.Л. Базы данных: учеб. пособие / С.Л. Шнырев. М.: НИЯУ МИФИ, 2011. 224 с.
9. Занятие 16 по курсу «Информационные технологии». URL: http://inftis.narod.ru/it/n16.htm.
10. Реферат на тему: «Виды информационных хранилищ». Герасимов М., Савинова М.А. 2011 г. URL: http://ua.coolreferat.com/ Виды_информационных_хранилищ.
11. Справочное руководство по MySQL. URL: http://www.mysql.ru/docs/man/User_names.html
12. Козленко Л. Информационная безопасность в современных системах управления базами данных. Журнал Компьютер-пресс: URL www.compress.ru, http://www.iso27000.ru/chitalnyi-zai/bezopasnost-baz-dannyh/informacionnaya-bezopasnost-v-sovremennyh-sistemah-upravleniya-bazami-dannyh
13. Информационная безопасность систем управления базами данных. Н. Вьюкова, В. Галатенко, АО «Инфосистемы Джет». URL: http://emanual.ru/download/710.html.
14. В. Кирстен. СУБД Cache: Объектно-ориентированная разработка приложений: учеб. курс / В. Кирстен, М. Ирингер, Б. Рёриг, П. Шульте. СПб. – Питер, 2001. 384 с.
Оглавление
Предисловие……………………………………………………
3
Глава 1. Основы реляционных баз данных…………………..
3
1.1. Основные понятия БД…………………………………….
3
1.2. Классификация БД.……………………………………….
6
1.3. Теория реляционных БД………………………………….
13
1.4. Методы и инструментальные средства проектирования БД……………………………………………………………….
26
1.5. Контрольные вопросы ……………………………………
28
Глава 2. Системы управления базами данных ………………
29
2.1. СУБД Access………………………………………………
31
2.2. Разработка приложений с БД в универсальных системах программирования………………………………………..
38
2.3. Язык SQL…………………………………………………..
41
2.4. MySQL……………………………………………………..
45
2.5. Cache и объектно-ориентированное программирование.
53
2.6. Системы управления информационными хранилищами.
57
2.7. Типы полей (данных) различных СУБД…………………
59
2.8. Контрольные вопросы…………………………………….
62
Глава 3. Администрирование баз данных……………………
63
3.1. Информационная безопасность БД………………………
63
3.2. Администрирование MySQL……………………………..
74
3.3. Защита информации………………………………………
75
3.4. Контрольные вопросы…………………………………….
76
Заключение……………………………………………………..
76
Используемая литература……………………………………..
77
Учебно-теоретическое издание
Димитриев Александр Петрович
базы данных
Учебное пособие
Редактор О. А. Хлебкова
Компьютерная верстка и правка О. А. Хлебкова
Согласно Закону № 436-ФЗ от 29 декабря 2010 года данная продукция не подлежит маркировке
Подписано в печать __.__.2015. Формат 6084/16. Бумага газетная. Печать офсетная. Гарнитура Times New Roman. Усл. печ. л. ____. Уч.-изд. л. ____. Тираж 100 экз. Заказ № __.
Издательство Чувашского университета
Типография университета
428015 Чебоксары, Московский просп., 15
Министерство образования и науки
Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Чувашский государственный университет имени И.Н.Ульянова»
А.П. Димитриев
Базы данных
Учебное пособие
Чебоксары 2015