- •Введение
- •1 Описание предметной области
- •2 Постановка задачи
- •3 Концептуальное проектирование системы
- •3.1 Инфологическое моделирование предметной области
- •3.1.1 Построение диаграммы потоков данных
- •3.1.2 Построение диаграммы «сущность-связь»
- •3.2 Выбор модели представления данных
- •3.2.1 Иерархическая модель данных
- •3.2.2 Сетевая модель данных
- •3.2.3 Реляционная модель данных
- •3.3 Нормализация таблиц
- •4 Программная реализация системы
- •4.1 Обоснование выбора субд
- •4.2 Описание таблиц
- •4.3 Проектирование пользовательского интерфейса
- •4.3.1 Уровни доступа к бд
- •4.3.2 Модель пользовательского интерфейса
- •4.4 Описание функционирования системы
- •4.5 Взаимодействие компонентов системы
- •4.6 Комплект поставки и порядок установки системы
- •Приложение а
- •Приложение б
- •Приложение в
4.1 Обоснование выбора субд
Модель данных СУБД – это инструмент представления концептуальной модели предметной области и динамики ее изменения в виде базы данных.
Важнейшим понятием концептуальной модели является понятие связи между объектами. В моделях данных СУБД соответствующее понятие отражается понятием "групповое отношение".
Групповое отношение – поименованное бинарное отношение, заданное на двух множествах экземпляров рассматриваемых групп. По характеру бинарных связей различают групповые отношения вида 1:1, 1:∞, ∞:∞. Пары чисел называют коэффициентами группового отношения. В групповом отношении один член группы назначается владельцем отношения, другой – членом.
Модель данных СУБД бывает двух видов:
Графовая. Группы изображаются вершинами графа, связи между группами – дугами, направленными от группы-владельца к группе-члену с указанием имени отношения и коэффициента.
Табличная. Связь между группами изображается таблицей, столбцы которой представляют ключи соответствующих групп. Соответствующая модель данных называется реляционной моделью.
На следующей стадии, после того, как выбрана определенная СУБД с конкретной моделью данных, необходимо записать концептуальную схему в терминах и понятиях выбранной СУБД. На этой стадии каждая сущность концептуальной модели описывается как запись, состоящая из полей. Каждый атрибут описывается как поле с типом и характеристиками, возможными в выбранной СУБД. Описываются связи концептуальной модели в понятиях, соответствующих выбранной СУБД, определяется порядок реализации запросов пользователей к базе данных с помощью типовых операций СУБД и т.д.
Результатом этой стадии проектирования будет концептуальная модель, специфицированная к конкретной СУБД.
Для организации заданной базы данных выбрана СУБД MS Access 2003. Специфицированная концептуальная модель представлена на рисунке 4.1.
Рассмотрим связь между таблицами.
Между таблицами установлены связи 1: ∞.
Во всех связях присутствует обеспечение целостности данных.
Каскадное удаление не установлено в связях «Аптека» - «Владелец», «Медикамент» - «Тип», «Медикамент» - «Препарат» и «Медикамент» - «Изготовитель», т.к. даже при удалении медикамента нам нужна информация о типах, препаратах и изготовителях. Во всех остальных связях есть каскадное удаление, т.к. не имеет смысла хранить информацию о поступлении медикамента без медикамента.
Каскадное обновление установлено во все связях, т.к. в поле подстановок для каждого поля присутствуют не только первичные ключи (счетчики), а в связанных таблицах мы должны иметь возможность пользоваться измененными данными.
Рисунок 5.1 – Схема базы данных
Рисунок 4.1 – Схема базы данных
4.2 Описание таблиц
База данных в СУБД MS Access представлена совокупностью таблиц, хранящих информацию о предметной области.
Для реализации СУБД «Сеть аптек» было разработано семь таблиц, хранящих информацию о владельцах, аптеках, изготовителях и медикаментах.
Таблица Аптека, изображенная на рисунке 4.2, хранит список аптек
Поле Название – текстовое поле, длинною 15 символов. Является обязательным полем и совпадения не допускаются.
Поле № Аптеки – текстовое поле, длинною 3 символа, формат поля \99\L. Является обязательным полем и совпадения не допускаются.
Поле Адрес – текстовое поле, длинною 40 символов. Является обязательным полем и совпадения не допускаются.
Поле Телефон – текстовое поле, длинною 9 символов, маска ввода 000"-"00"-"00. Является обязательным полем и совпадения не допускаются.
Поле Лицензия – текстовое поле, длинною 6 символов, маска ввода LL " "000. Является обязательным полем и совпадения не допускаются.
Поле Владелец – числовое поле, имеет тип Длинное целое, является внешним ключом таблицы «Владелец», обязательное для ввода, допускаются совпадения, подстановкой в поле помещается поле «владелец» из таблицы «Владелец». Хранит владельца, которому принадлежит аптека.
Поле #Код аптеки – первичный ключ таблицы, имеет тип счетчик, совпадения не допускаются.
Рисунок 4.2 – Таблица «Аптека»
Таблица Владелец, изображенная на рисунке 4.3, содержит информацию о всех владельцах.
Поле ФИО – текстовое поле длинною 35 символов, обязательное для ввода, повторения не допускаются, пустые строки также не допускаются. Хранит ФИО владельца.
Поле Дата рождения – имеет тип Дата/время. Есть условие на ограничение <Date(), так как дата рождения не может быть больше текущей даты. Является обязательным полем и совпадения не допускаются.
Поле Страховка – текстовое поле, длинною 5 символов, маска ввода LL" "000, необязательное для ввода, совпадения не допускаются.
#Код Владельца – первичный ключ данной таблицы, имеет тип счетчик. Обязательное для заполнения, совпадения не допускаются.
Рисунок 4.3 – Таблица «Владелец»
Таблица Изготовитель, изображенная на рисунке 4.4, хранит информацию об изготовителях.
Поле Название – текстовое поле, длинною 15 символов. Является обязательным полем и совпадения не допускаются.
Поле Телефон – текстовое поле, длинною 9 символов, маска ввода 000"-"00"-"00. Является обязательным полем и совпадения не допускаются.
Поле Адрес – текстовое поле, длинною 40 символов. Является обязательным полем и совпадения не допускаются.
Поле #Код изготовителя – первичный ключ таблицы, имеет тип счетчик. Обязательное для заполнения, совпадения не допускаются.
Рисунок 4.4 – Таблица «Изготовитель»
Таблица Медикамент, изображенная на рисунке 4.5, хранит информацию о медикаментах, которые имеются в аптеки.
Поле Название – текстовое поле длинною 20, обязательное для заполнения, пустые строки не допускаются, совпадения не допускаются. Хранит названия медикаментов.
Поле Тип – числовое поле, имеет тип Длинное целое, является внешним ключом таблицы «Тип», обязательное для ввода, не допускаются совпадения, подстановкой в поле помещается поле «тип» из таблицы «Тип». Хранит тип медикамента.
Поле Цена – имеет денежный тип, формат поля 0 "грн." Является обязательным полем и совпадения не допускаются. Хранит цену медикаментов.
Поле Изготовитель – числовое поле, имеет тип Длинное целое, является внешним ключом таблицы «Изготовитель», обязательное для ввода, не допускаются совпадения, подстановкой в поле помещается поле «изготовитель» из таблицы «Изготовитель». Хранит информацию о изготовителях.
Поле Препарат – числовое поле, имеет тип Длинное целое, является внешним ключом таблицы «Препарат», обязательное для ввода, не допускаются совпадения, подстановкой в поле помещается поле «препарат» из таблицы «Препарат». Хранит название препарата.
Поле #Код медикамента – является первичным ключом таблицы, имеет тип счетчик, совпадений не допускает.
Рисунок 4.5 – Таблица «Медикамент»
Таблица Поступает, изображенная на рисунке 4.6, необходима для того, чтобы какой медикамент в какую аптеку поступает.
Поле Дата поступления – имеет тип Дата/время, условие ограничения <Date(), так как дата поступления не может быть больше текущей даты. Является обязательным полем и совпадения не допускаются.
Поле Кол-во – имеет числовое поле. Является обязательным полем и совпадения не допускаются. Есть условие ограничения >0, так как кол-во не может быть меньше 0. Необходим для того, чтобы знать какое кол-во препаратов поступает в аптеку.
Поле Аптека - числовое поле, имеет тип Длинное целое, является внешним ключом таблицы «Аптека», обязательное для ввода, не допускаются совпадения, подстановкой в поле помещается поле «аптека» из таблицы «Аптека». Хранит в какую аптеку поступает медикамент.
Поле Медикамент - числовое поле, имеет тип Длинное целое, является внешним ключом таблицы «Медикамент», обязательное для ввода, не допускаются совпадения, подстановкой в поле помещается поле «медикамент» из таблицы «Медикамент». Хранит какой медикамент поступает в какую аптеку.
Поле #Код поступления – первичный ключ данной таблицы, имеет тип счетчик, совпадения не допускаются.
Рисунок 4.6 – Таблица «Поступает»
Таблица Препараты, изображенная на рисунке 4.7, хранит информацию о каждом препарате.
Поле Название – текстовое поле, длинною 20 символов. Является обязательным полем, пустых строк не допускается, совпадения допускаются.
Поле Дата изготовления – имеет тип Дата/время. Есть условие ограничения <Date(). Является обязательным полем и совпадения не допускаются.
Поле Рецепт – текстовое поле, длинною 12 символов. Является необязательным полем и совпадения допускаются.
Поле #Код препарата – первичный ключ таблицы, имеет тип последовательный счетчик, совпадения не допускаются.
Рисунок 4.7 – Таблица «Препараты»
Таблица Тип, изображенная на рисунке 4.8, хранит тип медикаментов, которые хранятся в аптеке.
Поле Название – – текстовое поле, длинною 14 символов. Является обязательным полем и совпадения не допускаются. Хранит название препарата.
Поле #Код типа – имеет тип счетчик, так как является первичным ключом таблицы, совпадения не допускаются.
Рисунок 4.8 – Таблица «Тип»