...
...

БД и СУБД на примере создания телефонного справочника

В одном из номеров КГ некий читатель просил у Михаила Федотова дать ссылку на программу "Телефонный справочник", который должен был по его просьбе обладать самыми простейшими функциями, т.е. запись ФИО и телефона. Эта просьба и натолкнула меня на идею написать статью про СУБД MS Access, с помощью которой мы и создадим такую простейшую программу, причем оформив ее соответственно собственному вкусу и надобностям.

Немного теории


В современном мире роль информации возрастает с каждым днем. Исходя из этого большое развитие получила концепция интеграции данных — их централизованного хранения и использования. Сложность организации и структуры данных обусловила появление баз данных и систем управления базами данных (СУБД). Первые СУБД появились в конце 60-х годов, а в настоящее время на рынке информационных технологий насчитывается большое множество таких программ для разных типов компьютеров и операционных систем. Одна из идей современных информационных технологий носит название "концепция баз данных" и формулируется следующим образом: данные должны быть организованы в базы данных с целью адекватного отражения реального объекта и обеспечения информационных нужд пользователей. Само понятие база данных (database) формулируется как "поименованная и организованная (структурированная) совокупность взаимосвязанных данных, которые отражают состояние объектов конкретной предметной области и находятся под центральным программным управлением". База данных удерживает такой минимальный излишек информации, который позволяет удовлетворить запросы каждого из многочисленных пользователей. Данные представлены совокупностью файлов (таблиц). В широком же смысле база данных есть любая упорядоченная совокупность данных. Сам термин "база данных" был введен неизвестным автором в 1963 г. в англоязычной литературе (data base), в 70- х годах этот термин стали писать через дефис (data-base), а потом ( одним словом (database). Свойства базы данных позже были сформулированы Дж. Мартином:

1. Многоразовое использование: одни и те же данные могут использоваться многими пользователями.
2. Простота обновления ( возможность внесения изменений в базу с минимальными затратами.
3. Быстрый поиск и получение необходимой информации по запросу.
4. Уменьшение избыточности ( новые задачи должны получать данные из существующей базы, а не путем их повторного ввода.
5. Защита от несанкционированного доступа к данным.
6. Максимальная независимость от прикладных программ: изменения в структуре базы данных не должны по возможности приводить к перезаписи пакета программ.
7. Защита от уничтожения и искажения информации (некомпетентного пользователя, злоумышленных действий, сбоев и конфликтных ситуаций). Им же были сформулированы требования к базе данных:
1. Адекватность отражения предметной области:
а) полнота данных;
б) динамичность информационной модели;
в) актуальность информации в данный момент времени.
2. Возможность взаимодействия с пользователями различных категорий и в разных режимах.
3. Обеспечение секретности данных, надежности, целостности, защита от случайного или целенаправленного разрушения базы данных.
4. Обеспечение взаимной независимости программ и данных.
5. Технологичность обработки данных.
6. Совместимость компонентов базы данных.
7. Простота изменения логической и физической структуры базы данных в целях повышения эффективности обработки информации.
8. Способность к расширению и модификации.

Рассмотрим еще одно понятие, которое ввел в 1970 году Кодд — модель данных — отражение связи между объектами. Более точное определение этого понятия звучит следующим образом: "модель данных (data model) ( это система взаимосвязанных типов объектов, операторов и правил обеспечения целостности, создающая абстрактную структуру, которую поддерживает система управления базой данных; это совокупность правил прохождения структур данных в базе данных, операций над ними, а также ограничений целостности, которая определяет допустимые связи и значения данных, последовательность их изменения". Выражаясь проще, это формализованное описание информационных структур и операций над ними программными и математическими средствами. Создание базы данных должно начинаться с построения информационной модели. Сущность построения такой модели заключается в структурировании данных и выявлении взаимосвязей между ними без учета особенностей их реализации. Далее строится концептуальная модель, т.е. модель решаемых задач на объекте, после чего концептуальная модель преображается в модель данных для выбранной СУБД. В одной СУБД могут применяться различные структуры и модели данных. Логическая модель отражается в физической памяти. Превращением концептуальной структуры в форму, удобную для запоминания или поиска, занимается компьютер. Такая внутренняя структура данных называется физической структурой. Она определяет размещение данных, методы доступа и технику индексирования.

Различают иерархическую, сетевую и реляционную логические модели данных в зависимости от способа представления взаимосвязей между объектами. В 60-х годах, когда еще не было персональных компьютеров, применяли иерархическую и сетевую модели данных, а в начале 70-х годов появилась реляционная модель. Не зарываясь глубоко под землю с определениями, попробую объяснить в двух словах, что представляет собой каждая из моделей данных. В иерархической модели взаимосвязи между объектами отражаются по принципу иерархии типов объекта в виде связанного графа, вершины которого размещены на разных иерархических уровнях. Самая высокая вершина называется корнем, а остальные, находящиеся на нижних уровнях — подчиненными (см. рис. 1). Корень не подчиняется ни одной вершине. Все остальные вершины связаны с одной, и только одной вершиной, которая размещена на более высоком уровне.
[pic]

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

Итак, управление базами данных в компьютере осуществляют программные средства ( СУБД (database management system). СУБД представляют собой совокупность программных и языковых средств общего или специализированного назначения, необходимых для создания баз данных на машинных носителях, поддержания их в актуальном состоянии и организации доступа к ним различных пользователей в условиях принятой технологии обработки данных. СУБД ( это управляющие программы, которые обеспечивают все манипуляции с базами данных: создание базы, ее ведение, ее использование многими пользователями и др., т.е. реализуют сложный комплекс функций по централизованному управлению базой данных и обслуживают интересы пользователей.

СУБД — это обычная программная оболочка, которая осуществляет связь между базой данных и пользователем. Она обеспечивает контроль защиты и целостности данных, доступ к данным, обработку, формирование отчетов, запросов и др. Каждая СУБД функционирует в своей языковой среде. Именно с помощью языковых средств реализуются заложенные функциональные возможности СУБД и удовлетворяются потребности как программистов так и обычных пользователей. В современном интерфейсе в СУБД языковые средства применяются в неявном виде, т.е. команды в классическом виде не отображаются. Современные СУБД состоят из трех основных частей: диалоговые средства пользователя для работы с базой данных; средства для разработки приложений пользователя; дополнительные средства для разработки приложений. В настоящее время имеется более 50 типов СУБД. Одной из наиболее популярных является Microsoft Access, которая входит в комплект MS Office. MS Access — это реляционная СУБД, основанная на технологии организации и обработки данных в системе по типу "клиент-сервер" для корпоративных баз данных. Ее можно применять также в сети и локально. Реляционная модель этой СУБД ориентирована на 32-разрядные микропроцессоры. Access может выступать в качестве клиента или сервера по отношению к другим приложениям, например, MS Word, MS Excel и др. В этой системе можно пользоваться практически всеми средствами операционной системы Windows. Применяется интерфейс MDI (Multiple Dokument Interface — "многооконность") Эта СУБД имеет все необходимые средства для выполнения трех основных типов функций: определение данных; обработка данных; управление данными. Access воспринимает множество различных форматов данных включая файловые структуры других СУБД — dBASE, FoxPro, Paradox и др. Имеется поддержка стандарта ODBC. В Access входят специальные программы: "Конструктор", "Мастер", "Построитель выражений", "Маска ввода", что позволяет неопытному пользователю с легкостью создавать различные базы данных.

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

Проектирование базы данных ( это взаимосвязанный комплекс работ: от определения общих параметров создаваемой базы данных, анализа объекта управления и существующей системы управления на объекте, построения информационной модели до создания реальной базы данных. По правилам создания базы данных первым делом необходимо провести исследование объекта управления с целью получения необходимой информации и построения модели системы управления. Очень важно правильно определить задачи, требования и возможности системы. Бывали случаи, когда я начинал создание баз данных, опуская данный этап — последствия плачевные: созданная база отправляется в корзину по причине неправильной работоспособности. Поэтому определимся с функциями нашего телефонного справочника и построим модель базы данных. Вначале определимся со структурой данных. Для построения справочника нам нужны следующие поля: Фамилия, Имя, Отчество, Телефон домашний, Телефон мобильный, e-mail, Город, Код города, Заметка. Так как создаем простую базу данных, мы разместим все данные в одной таблице.
Снова немного отвлекусь для теории и расскажу о нормализации отношений. Нормализация (normal form) ( это процесс уменьшения избыточности информации в базе данных с целью получения более эффективных и гибких способов хранения информации. При проектировании реляционной базы данных необходимо создать наиболее эффективную структуру данных, которая должна обеспечить: быстрый доступ к данным в таблицах базы данных; исключение из структуры таблицы ненужного повторения данных, которое приводит к нерациональному употреблению дискового пространства и ошибкам при вводе данных; целостность данных: при изменении одних объектов автоматически соответствующим образом изменяются связанные с ними объекты. Эту теорию разработал Кодд. Первая нормальная форма таблицы наименее структурирована. Каждое поле содержит уникальную информацию, исходная таблица ненормализована. Требования, предъявляемые к таблице в первой нормальной форме: таблица не должна содержать повторяющиеся записи; в таблице не должно быть повторяющихся групп полей; строки должны быть неупорядоченными; столбцы должны быть неупорядоченными. Вторая нормальная форма таблицы соответствует условиям первой нормальной формы, но любое неключевое поле однозначно идентифицируется полным набором ключевых полей. Третья нормальная форма таблицы соответствует условиям второй нормальной формы, но ни одно из ключевых полей таблицы не идентифицируется с помощью иного неключевого поля.

А теперь вернемся к нашим баранам, т.е. программе, и изобразим структуру данных:

По сути, эта схема и есть наша БД, к созданию который мы и переходим.

Пошаговая инструкция по созданию БД "Мой телефонный справочник"

Запускаем MS Access и выбираем пункт Новая база данных. В появившемся окне выбираем папку, в которую будет сохранена база, и вводим ее имя — допустим, Телефонный Справочник. После этого запускается рабочая среда. Выбираем раздел Создание таблицы в режиме конструктора и вводим поля, которые мы определили ранее, указывая их тип. 1. Фамилия: тип данных: Текстовый; размер поля установим равным 30. 2. Фамилия (а также 3. Отчество) будут иметь аналогичные 1 параметры. 4. Телефон домашний: тип данных: Числовое; размер поля: длинное целое; число десятичных знаков равно 0. 5. Телефон мобильный: тип данных: Текстовый; размер поля: 9 символов. Для этого поля создадим маску ввода. Для этого напротив надписи "Маска ввода" нажимаем на кнопку "…" — появляется предложение сохранить таблицу, вводим имя (Справочник) и жмем ОК. После появится сообщение о предложении создать ключевое поле — отказываемся. Появляется окно задания маски ввода. В этом окне нажимаем на кнопку Список, что вызывает добавление своей маски. Вводим ее название: Номер мобильного телефона, задаем маску ввода: 000-00-00, выбираем заполнитель, приводим образец данных и жмем кнопку Закрыть (рис. 2).

Теперь наша маска добавилась в общий список. Выбираем ее и нажимаем кнопку Далее. В появившемся окне можем поменять заполнитель либо саму маску и снова нажимаем кнопку Далее. В следующем окне выбираем параметр хранения данных: вместе со знаками маски (по умолчанию без знаков маски).
6. E-mail: тип данных: Текстовый; размер поля: 50;значение по умолчанию:@.
7. Город: тип данных: Текстовый; размер поля 35. 8. Код города: тип данных: Числовое; размер поля: длинное целое; число десятичных знаков равно 0. 9. Заметка — тип данных: Текстовый, размер поля равен 100 символам. В итоге, поля в конструкторе должны выглядеть как на рисунке 3.

Сохраняем созданную таблицу и переходим в раздел Запросы. Создадим несколько простых запросов для работы с базой данных. Определимся с функциями, которые должна выполнять наша база телефонных номеров. Определенно нам понадобится поиск номера телефона по фамилии. Сделаем также обратный поиск — по номеру телефона. Думаю, для простейшего справочника этих функций будет достаточно. Выбираем пункт Создание запроса с помощью мастера. В появившемся окне выбираем все поля нашего справочника (таблицы), кроме поля Заметка, после чего выбираем вид запроса Подробный и задаем имя — Поиск по фамилии. После чего нажимаем на нашем запросе правой кнопкой мыши и выбираем пункт Конструктор. Под столбцом Фамилия в поле Условие отбора вводим условие: [Введите фамилию] (с квадратными скобками). Тем самым мы создали окно — приглашение ввести фамилию, но об этом позже. Таким же образом создаем второй запрос — Поиск по телефону, но условие вводим под столбцом Телефон домашний: [Введите номер телефона]. Создадим также возможность создания подобия бумажного телефонного справочника. Для этого переходим в раздел Отчеты. Выбираем пункт Создание отчета с помощью мастера, в появившемся окне выбираем нашу таблицу Справочник и добавляем все поля. Далее выбираем уровень группировки Фамилия, после чего выбираем макет отчета и его стиль. Задаем ему имя и сохраняем.

Переходим к оформлению интерфейса программы. Заходим в раздел Формы и выбираем пункт Создание формы с помощью мастера, где далее выбираем в качестве источника строк таблицу Справочник. Внешний вид формы задаем в один столбец, выбираем стиль формы и задаем имя — Телефонная книга. Переходим в конструктор формы и приступаем к ее оформлению. В верхней части формы пометим название. Для этого на панели дополнительных инструментов нажимаем кнопку "Aa" и размещаем текст на форме. Разместим на форме поля в удобном виде, а также увеличим размер окон и шрифт некоторых из них (по собственному вкусу). Выберем из дополнительной панели инструментов прямоугольник и нарисуем его на форме, определим для него цвет фона и другие эстетические параметры. Назовем эту часть формы Навигация, после чего выберем элемент Кнопка, определим для нее одно из действий из раздела Переходы по записям и разместим на прямоугольнике Навигация. Аналогично добавим следующие кнопки на эту и последующие панели. В панели Разное разместим кнопку автонабора номера, вызывающую стандартный Windows-телефон, а также кнопку Весь справочник, вызывающую созданный нами отчет и кнопку закрытия формы. Интерфейс оформили — можем запустить форму и ввести данные, после чего их просмотреть и отредактировать. Займемся параметрами запуска БД. Заходим в меню раздел Сервис -> Параметры запуска, в появившемся окне вводим заголовок приложения — Телефонная книга, выбираем иконку приложения, а в разделе Вывод формы/страницы выбираем нашу форму Телефонная книга, снимаем галочки с элементов для вывода и жмем ОК (рис. 4).

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


Вот так быстро и не обладая выдающимися знаниями можно создать простое необходимое вам приложение. Пример созданного файла можно найти на моем сайте www.pawelk.nm.ru в разделе Download. Если тема представляет для вас интерес — пишите, задавайте вопросы, предлагайте ваши идеи.

Кучинский Павел pawelk_kg@tut.by

© Компьютерная газета

полезные ссылки
Регистрация компаний в Великобритании