Министерство науки и высшего образования Российской Федерации ФГБОУ ВО «Кубанский государственный технологический университет»
Анализ информационных задач и круга пользователей системы
Преобразование ER-диаграммы в схему базы данных
Реляционная модель базы данных, полученная из ER-модели
Составление реляционных отношений
Нормализация полученных отношений
Итоговые отношения
Описание групп пользователей и прав доступа
Создание таблиц
Запросы
Разработка форм
Разработка отчетов
Разработка макросов
Макрос вызывающий несколько запросов
Разработка кнопочной формы
Заключение
648.59K
Категория: Базы данныхБазы данных

Проектирование базы данных "Аптечный склад"

1. Министерство науки и высшего образования Российской Федерации ФГБОУ ВО «Кубанский государственный технологический университет»

(ФГБОУ ВО «КубГТУ»)
КУРСОВАЯ РАБОТА
по дисциплине база данных
на тему: «Проектирование базы данных "Аптечный склад"»
Выполнил студент 2 курса группы 20-КБ-ИВ2
Шестаков Дмитрий Дмитриевич
Руководитель (нормоконтролер) проекта:
доцент Безнос Ольга Сергеевна

2.

• Цель работы – разработка программного
продукта, представляющего собой базу
данных для организации работы аптечного
склада с использованием СУБД MSAccess.
• Методы разработки – проектирование базы
данных на основе ER-подхода, составление
графической модели базы данных,
реализация базы данных в СУБД Microsoft
Access.

3.

• Аптечный склад — помещение для приема,
размещения и хранения лекарственных
препаратов и медицинского оборудования,
изолированное от других помещений и
имеющее собственный вход, подъездную
площадку и зону для разгрузки товара. Для
правильного функционирования данного
склада требуется база данных, хранящая
сведения о покупателях, имеющихся товарах, а
также информацию о заказах и доставках
клиенту.

4.

Сущность – это объект, о котором в системе будут накапливаться данные. Для сущности
указывается название и тип (сильная или слабая). Сильные сущности существуют сами по себе, а
существование слабых сущностей зависит от существования сильных.
Атрибут – свойство сущности. Различают:
• Идентифицирующие и описательные атрибуты. Идентифицирующие позволяют
отличить один экземпляр сущности от другого. Описательные атрибуты заключают в себе
интересующие нас свойства сущности;
• составные и простые атрибуты. Простой атрибут имеет неделимое значение. Составной
атрибут является комбинацией нескольких элементов, возможно, принадлежащих разным
типам данных (Ф. И. О., адрес и др.);
• однозначные и многозначные атрибуты (могут иметь соответственно одно или много
значений для каждого экземпляра сущности). Например, дата рождения – это однозначный
атрибут, а номер телефона – многозначный;
• основные и производные атрибуты. Значение основного атрибута не зависит от других
атрибутов; значение производного атрибута вычисляется на основе значений других
атрибутов. Например, возраст вычисляется на основе даты рождения и текущей даты;
• обязательные и необязательные (первые должны быть указаны при размещении данных в
БД, вторые могут не указываться).
• Для каждого атрибута необходимо определить название, указать тип данных и описать
ограничения целостности – множество значений, которые может принимать данный атрибут.
Связь – это осмысленная ассоциация между сущностями. Для связи указывается название, тип
(факультативная или обязательная), кардинальность (1:1, 1:n или m:n) и степень (унарная,
бинарная, тернарная или n-арная).

5.

ER-диаграмма «Аптечный склад»

6. Анализ информационных задач и круга пользователей системы

• 1. Клиенты:
- создание заказа товара;
- управление своими заказами товара;
- отмена заказа товара;
- оплата заказа.
• 2. Сотрудник отдела продаж:
- проверка заказа товара;
- доставка товаров сотрудников
• 3. Администратор осуществляет полный доступ к системе – контролирует
правильность работы базы данных.
На основе результатов анализа предметной области можно приблизительно
оценить объём памяти, требуемой для хранения данных. Примем
ориентировочно, что:
– в день клиенты осуществляют около 1000 заказов;
– каждый день регистрируется 100 новых клиентов;
– в компании работают 100 курьеров (по 0,5 К на каждого сотрудника);

7. Преобразование ER-диаграммы в схему базы данных

8. Реляционная модель базы данных, полученная из ER-модели

9. Составление реляционных отношений

1.Товары.
Атрибуты:
ID товара (счетчик, первичный ключ),
название товара (строка),
описание товара (строка),
цена товара (денежный тип),
ID производителя (целый тип, внешний ключ),
наименование производителя (строка),
2. Покупатель.
Атрибуты:
код покупателя (счетчик, первичный ключ),
ФИО (строка),
адрес покупателя (строка)
номер телефона (строка).
3. Заказ.
Атрибуты:
ID заказа (счетчик, первичный ключ),
товары (целый тип, внешний ключ к
таблице «Товары»),
количество (целое число)
сумма (денежный формат).
4. Доставка.
Атрибуты:
ID доставки (счетчик, первичный
ключ),
ID заказа (счетчик),
адрес доставки (строка),
доставлен (булевое),
ID курьера (целый тип),
ФИО курьера (строка)

10. Нормализация полученных отношений


Приведение к первой нормальной
Отношения «Покупатель» и «Доставка» не находятся в первой нормальной форме, т.к. содержат
составные атрибуты («ФИО» и «ФИО курьера» соответственно). Атрибут «ФИО» разобьём на атрибуты
«фамилия», «имя» и «отчество», так же атрибут «ФИО курьера» – на «фамилия курьера», «имя
курьера», «отчество курьера».
Приведение ко второй нормальной
Отношения находятся во второй нормальной форме тогда, когда оно находится в первой нормальной
форме и каждый не ключевой атрибут полностью зависит от каждого ключа.
Приведение к третьей нормальной форме
Отношения находятся в третьей нормальной форме тогда, когда оно находится во второй нормальной
форме и каждый не ключевой атрибут полностью зависит только от первичного ключа. Проверим
выполнение условий.
В отношении «Доставка» поле «ФИО курьера» не зависит от первичного ключа «ID доставки», а зависит
от поля «ID курьера». В отношении «Товар» поле «Производитель» зависит также от не ключевого поля
«ID производителя».
Для нормализаций, в отношении «Доставка» поля «ID курьера» и «ФИО курьера» вынесем в отдельное
отношение «Курьеры» с первичным ключом «ID курьера», а в отношении «Товары» поля
«Производитель» и «ID производителя» вынесем в отдельное отношение «Производитель» с
первичным ключом «ID производителя».

11. Итоговые отношения

1. Товар.
Атрибуты:
-ID товара (счетчик, первичный ключ),
-название товара (строка),
-описание товара (строка),
-цена товара (денежный тип),
-производитель (целое число, внешний ключ
к таблице «Производители»).
2. Покупатель.
Атрибуты:
-ID покупателя (счетчик, первичный ключ),
-фамилия (строка)
-имя (строка)
-отчество (строка)
-адрес покупателя (строка)
-номер телефона (строка).
3. Производитель.
Атрибуты:
-ID производителя(счетчик)
-наименование производитель(строка)
4. Заказ.
Атрибуты:
-ID заказа (счетчик, первичный ключ),
-товары (целый тип, внешний ключ к таблице «Товары»),
-количество (целое число)
-сумма (денежный формат).
5. Доставки.
Атрибуты:
-ID доставки (счетчик, первичный ключ),
-ID заказа (целый тип),
-адрес доставки (строка),
-доставлен (булевое),
-курьеры (целый тип, внешний ключ к
таблице «Курьеры»).
6. Курьеры.
Атрибуты:
-ID курьера (счетчик, первичный ключ),
-фамилия курьера(строка),
-имя курьера (строка),
-отчество курьера (строка).

12.

ER-диаграмма после нормализации

13. Описание групп пользователей и прав доступа

• Права доступа для группы «Покупатель»:
- просмотр таблиц «Товар», «Производитель»;
- просмотр, добавление и редактирование записей в таблицы «Заказы»;
• Права доступа для сотрудника логистики:
- просмотр таблиц «Товар», «Производитель», «Курьеры»;
- просмотр, добавление, редактирование записей в таблице
«Покупатель», «Заказ» и «Доставка».
• Права доступа для группы «Приемщик товара»: просмотр,
добавление, редактирование записей в таблице «Товар» и
«Производитель».
• Права доступа для группы «Курьеры»: просмотр таблиц «Товар»,
«Заказ», «Доставка» и «Покупатель».
• Права назначает администратор БД. Также имеет полный доступ ко
всем таблицам.

14. Создание таблиц

1) Создание таблицы «Товар»:
create table Товар (
ID_товара numeric primary key,
ID_заказа numeric references Заказ,
Название_товара char(50) not null,
Описание_товара char(200) not null,
Цена_товара money,
ID_производителя numeric references Производитель);
2) Создание таблицы «Покупатель»:
create table Покупатель(
ID_покупателя numeric primary key,
ID_заказа numeric references Заказ,
Фамилия char(100),
Имя char(100),
Отчество char(100),
Адрес_покупателя char(100),
Номер_телефона char(100) not null);
3) Создание таблицы «Производитель»:
create table Производитель(
ID_производителя numeric primary key,
Наименование_производителя char(50));
4) Создание таблицы «Заказ»:
create table Заказ(
ID_заказа numeric primary key,
ID_доставка numeric references Доставка,
Количество numeric,
Сумма money);
5) Создание таблицы «Доставка»:
create table Доставка(
ID_доставка numeric primary key,
Адрес_доставки char(50),
Доставлен bit,
ID_курьера numeric REFERENCES Курьеры);
6) Создание таблицы «Курьеры»:
create table Курьеры(
ID_курьера numeric primary key,
Фамилия_курьера char(50),
Имя_курьера char(50),
Отчество_курьера char(50));

15. Запросы

1. Название товара, который является таблетками
SELECT Товар.Название_товара
FROM Товар
WHERE Описание_товара ='Таблетки';
6. Фамилии покупателей заканчивающиеся на ОВА
SELECT *
FROM Покупатель
WHERE Покупатель.Фамилия Like "*ова*";
2. Адрес доставки, в которое был уже доставлен товар
7. Товар, который стоит меньше 200 рублей
SELECT Доставка.Адрес_доставки
FROM Доставка
WHERE Доставка.Доставлен =true;
SELECT *
FROM Товар
WHERE Товар.Цена_товара <200;
3. Сумма всех заказов
SELECT Sum(Заказ.Сумма)
FROM Заказ
WHERE Заказ.Сумма;
4. Вывести информацию Курьера, чье имя начинается на “М”
SELECT *
FROM Курьеры
WHERE Курьеры.Имя_курьера Like "М*";
5. Запрос с параметром. Сколько будет стоить покупка 100
товара на выбор
SELECT Товар.Цена_товара *100
FROM Товар
WHERE Товар.Название_товара = [Введите название товара];
8. Заказ количество которого больше 50 и общая сумма
меньше 8 500 рублей
SELECT *
FROM Заказ
WHERE Заказ.Количество >50 and Заказ.Сумма <8500;
9. Максимальная Сумма заказа
SELECT MAX(Заказ.Сумма)
FROM Заказ;
10. ФИО курьера, который не доставил свой товар
SELECT Курьеры.Имя_курьера,
Курьеры.Фамилия_курьера,
Курьеры.Отчество_курьера, Доставка.Доставлен
FROM Курьеры INNER JOIN Доставка ON
Курьеры.ID_курьера = Доставка.ID_курьера
WHERE Доставка.Доставлен =false;

16. Разработка форм

Для удобства выполнения задач в базе данных были разработаны формы.
При помощи формы «Список Курьеров» можно определить
доставил ли курьер заказ или нет.
Форма «Производитель» показывает всю информацию о производителе и его товарах.
В форме «Наименование производителей» можно просматривать и редактировать данные о производителях и их ID.
Внешний вид формы «Курьеры»
Внешний вид формы «Производитель»

17. Разработка отчетов

18. Разработка макросов

Макрос который выводит надпись ”ПОТОРОПИСЬ!” у курьеров, которые не доставили еще товар.

19. Макрос вызывающий несколько запросов

Макрос закрывающий Базу Данных
Макрос закрывающий Форму

20. Разработка кнопочной формы

21. Заключение

Результатом выполнения курсовой работы является база данных для аптечного
склада. Были достигнуты следующие результаты:
-разработаны на языке SQL запросы на создание таблиц;
-нормализация базы данных;
-получение концептуальной схемы БД.
-разработаны запросы, по получению оперативной информаций о заказах и
доставках;
-обеспечено удобство ввода информаций в базу данных при помощи форм;
С помощью физического проектирования, полученные отношения были
описаны с помощью языка определения данных SQL. Созданы запросы на
создание таблиц полученных отношений, приведены реализации готовых
запросов.
English     Русский Правила