ID
|
Наименование
|
Кол-во
|
Цена
|
|
|
|
|
|
|
|
|
Всего: сумма
Сумма
прописью:
Оформлено:
ООО Борис (печать)
С порядком
транспортировки и эксплуатации, правилами и условиями гарантийного
обслуживания, порядком и сроками возврата товара ознакомлен и согласен,
перечень товаров, указанных в товарном чеке, полностью в надлежащей
комплектации, надлежащего качества, оформленный гарантийный талон компании
продавца или компании производителя.
Получил:______________________(Подпись)
2)
Гарантийный талон
Гарантийный
талон
www.boris.ru
Гарантийный
талон №
Дата
ID
|
Наименование
|
Кол-во
|
Гарантия
мес.
|
|
|
|
|
Оформлено:
ООО Борис (печать)
3)
Маркетинговый отчет
Распределение
категория проданных товаров по полу
Дата
Категория
товара
|
Пол
|
Количество
|
|
|
|
4) Отчет о
новинках интернет-магазина
Новинки
Дата
Наименование
товара
|
Средняя
оценка
|
Цена
|
|
|
|
5) Сводка
доходности по категориям товара
Сводка
доходности по категориям
Дата
Всего
6) Отчет по самым
рейтинговым товарам магазина
Товары с
наивысшими оценками
Дата
Наименование
|
Средняя
оценка
|
|
|
7) Отчет по
самым популярным товарам магазина
Хиты продаж
Дата
8) История
заказов
История
заказов
Дата
Логин
№
заказа
|
Дата
заказа
|
Стоимость
заказа
|
|
|
|
9) История
покупок
История
покупок
Дата
№ заказа
Логин
Сумма
10) Отчет по
точкам выдачи (для сайта)
Точки выдачи
Название
точки
|
Адрес
точки
|
Время
работы
|
|
|
|
При
проектировании базы данных интернет-магазина после описания предметной области
необходимо выбрать метод построения инфологической модели (ER-модели) и СУБД, в
которой будет реализован проект.
Для
построения ER-модели была выбрана программа CA ERwin Data Modeler 7.3 (ERwin). Мы выбрали эту программу,
потому что она позволяет наглядно отображать сложные структуры данных. Удобная
в использовании графическая среда упрощает разработку базы данных и
автоматизирует множество трудоемких задач, уменьшая сроки создания
высококачественных и высокопроизводительных транзакционных баз данных. Наиболее
важными для нас являются следующие возможности данного CASE-средства.
·
Поддержка нотации
IDEF1x
·
Возможность
совместной работы группы проектировщиков
·
Описание структуры
БД с помощью визуальных средств
·
Автоматическая генерация
файлов данных для любого типа СУБД
·
Уменьшение числа
рутинных операций, что облегчает и сокращает работу
Существует
большое число СУБД. По функциональным возможностям СУБД бывают настольные
(FoxPro, MS Access, Paradox) и корпоративные (Oracle, MS SQL Server, MySQL). Сравнивая настольные и корпоративные СУБД, можно
отметить следующее: настольные СУБД просты в использовании, стоимость их
эксплуатации дешевле; корпоративные СУБД имеют возможности администрирования,
работы в Интернете, поддерживают большой объем данных и быстродейственны.
Для
построения самой базы данных нами была выбрана СУБД MS Access. Поскольку целью
данной работы не является разработка и внедрение масштабной базы
интернет-магазина и разработка интернет-сайта, а база разрабатывается в учебных
целях – выбирать корпоративную СУБД нецелесообразно. Microsoft Access является
наиболее популярной системой управления базами данных для операционной системы
Windows. Возможности разработчиков программного обеспечения, а также методы и
технологии решения этих задач постоянно изменяются и совершенствуются. И с
каждой новой версией Access такие решения становятся достоянием самого широкого
сообщества разработчиков и пользователей.
Очень важным
для нас является возможность просматривать и редактировать данные не только в
виде таблицы, но и в виде формы. Представление БД в виде таблицы позволяет
наблюдать сразу несколько записей одновременно, однако часто вид Таблица не
позволяет полностью видеть всю информацию на экране. Формы позволяют забыть о
неудобствах, возникающих при работе с таблицами, имеющими большое количество
полей. В режиме Форма можно все внимание уделить одной записи, не пользуясь
прокруткой для поиска нужного поля в длинной череде столбцов таблицы, а имея
перед глазами всю информацию. Также для удобства работы с формой на ней можно
разместить Элементы управления, например кнопки. Хочется отметить, что, так как
мы проектируем базу данных интернет-магазина, то формы хорошо подойдут для
эмуляции работы сайта.
При печати
таблиц и запросов информация выдается практически в том виде, в котором
хранится. Часто возникает необходимость представить данные в виде отчетов,
которые имеют традиционный вид и легко читаются. Подробный отчет включает всю
информацию из таблицы или запроса, но содержит заголовки и разбит на страницы с
указанием верхних и нижних колонтитулов. Их можно создавать как самостоятельно
(в режиме конструктора), так и с помощью мастера.
Мастер баз
данных Microsoft Access автоматически формирует таблицы, запросы, формы и
отчеты из шаблонов стандартных типов. Это полнофункциональные приложения с
оптимизированной структурой данных и полным набором необходимых таблиц, форм,
запросов и отчетов. Мастер запросов отбирает информацию базы данных, включая
данные из нескольких таблиц, и затем определяет, как представить эти данные в
соответствии с требованиями пользователей.
Инфологическая
модель предметной области – это формализованное описание предметной области,
выполненное безотносительно к используемым в дальнейшем программным и
техническим средствам. Инфологическая модель должная быть динамической и позволять
легкую корректировку.
Основным
требованиями, предъявляемыми к инфологической модели, можно отнести следующие:
-
должна содержать
всю необходимую и достаточную информацию для последующего проектирования базы
данных.
-
должна быть
понятна лицам, принимающим участие в создании и использовании.
Описание
объектов ПО и связей между ними оказывает наибольшее влияние на проектирование
структуры базы данных. Представим описание объектов и связей между ними в виде Базовой
ER-модели:
Представим
описание объектов и связей между ними в виде логической ER-модели, основанной
на методологии IDEF1X и созданной в выбранном для проектирования CASE-средстве
CA ERwin Data Modeler.
На этапе логического
проектирования необходимо определить типы и длины полей. После построения
ER-модели в среде CA ERwin Data Modeler следует использовать метод прямого
инжиниринга, позволяющий автоматически сгенерировать описание и структуру
спроектированной базы данных в среде выбранной СУБД. Схема базы данных
Интернет-магазина в среде MS ACCESS будет выглядеть следующим образом:
Товар (id_товара
(счетчик(Длинное целое)), Цена_товара (Денежный), Возврат_разр (Логический),
Вес_товара (Числовой(Одинарное с плавающей точкой)), Длина (Числовой(Одинарное
с плавающей точкой)), Ширина (Числовой(Одинарное с плавающей точкой)), Высота
(Числовой(Одинарное с плавающей точкой)), Изображение_товара (Поле объекта OLE),
Уник_хар-ки (Поле МЕМО), Название_товара (Текстовый(200)), Категория_товара
(Текстовый(100)), Подкатегория_товара (Текстовый(100)), Гарантия_мес
(Числовой(Байт)))
Поставщик
(Назв_поставщика (Текстовый(18)), E-mail (Текстовый(100)), Факс (Текстовый(30)),
Телефон(Текстовый(50)), Прайс_лист (Гиперссылка))
Поставщик/категория
(Категория_товара (Текстовый(100)), Назв_поставщика (Текстовый (18)))
Товар/оценка (id_товара
(Числовой(Длинное целое)), Логин (Текстовый(30)), Оценка(Числовой(байт)))
Покупатель (Логин
(Текстовый(30)), Пароль (Текстовый(30)), E-mail (Текстовый(100)), ФИО (Текстовый(100)), Адрес (Поле
МЕМО), Дата_рождения (Дата/время), Дата_регистрации (Дата/время), Пол
(Текстовый(1)), Образование (Текстовый(30)))
Покупатель/телефон
(Телефон (Текстовый(50)), Логин (Текстовый(30))
Кредитная_карта
(Номер_кред_карты (Текстовый(16)), Имя_владельца (Текстовый(100)),
Проверочный_код (Числовой(Целое)), Срок_истечения (Дата/время), Логин
(Текстовый(30)))
Заказ/товар (№_заказа
(Числовой(Длинное целое)), id_товара (Числовой(Длинное целое))
Заказ (№_заказа
(Числовой(Длинное целое)), Дата_заказа
(Дата/время), Время_заказа (Дата/время), Статус_заказа (Текстовый(50)),
Стоимость_заказа (Числовой(Длинное целое)), Способ_оплаты (Текстовый(30)),
Способ_получения (Текстовый(30)), Логин (Текстовый(30)), Табельный_номер
(Числовой(Длинное целое)), Название_точки(Текстовый(50)))
Доставка (№_заказа
(Числовой(Длинное целое)), Суммарный_вес_заказа (Числовой(целое)),
Суммарный_объем_заказа (Числовой(Длинное целое)), Дата_доставки(Дата/время),
Время_доставки (Текстовый(30)), Удаленность_МКАД_км (Числовой (байт)),
Стоимость_доставки (Денежный), Табельный_номер (Числовой(Длинное целое)),
Статус_доставки (Текстовый(30)), Вид_доставки (Текстовый(40)))
Сотрудник
(Табельный_номер (Счетчик(Длинное целое)), ФИО (Текстовый(100)), E-mail
(Текстовый(100)), Должность (Текстовый(50)), Факс (Текстовый(30)),
Телефон(Текстовый(50)))
Точка_выдачи
(Название_точки (Текстовый(50)), Адрес_точки (Поле МЕМО), Время работы
(Текстовый(15)), Схема_проезда(Поле объекта OLE))
Точка_выдач/Телефон
(Телефон (Текстовый(50), Название_точки (Текстовый(50))
5.
Выявление полного перечня ограничений целостности, присущего данной предметной
области
Обеспечение
целостности данных является важнейшей задачей при проектировании и эксплуатации
систем обработки данных.
Целостность –
это актуальность и непротиворечивость информации, ее защищенность от разрушения
и несанкционированного изменения. Целостность является одним из аспектов
информационной безопасности наряду с доступностью – возможностью с приемлемыми
затратами получить требуемую информационную услугу, и конфиденциальностью – защитой
от несанкционированного прочтения.
Ограничение
целостности – это набор специальных предложений, описывающих допустимые
значения отдельных информационных единиц и связей между ними. Большинство
ограничений целостности вызваны спецификой предметной области. Нарушение
ограничений целостности может происходить по нескольким причинам: ошибки,
преднамеренное нарушение, вирусы, сбои. Поэтому необходимо контролировать
ограничения целостности.
Помимо
упомянутых нами на стадии описания предметной области ограничений целостности,
во время разработки базы данных интернет-магазина нами также были выявлены
многие другие ограничения. Большинство из них контролируются непосредственно в
таблицах. Поскольку ввод всех данных в таблице осуществляется через
разработанные нами вспомогательные формы, также существует достаточно большое
количество ограничений, которые контролируются средствами конструктора форм, а
также при помощи встроенного в среду MS ACCESS визуального
объектно-ориентированного языка Visual Basic. Далее будут перечислены все
ограничения целостности, которые будут контролироваться в данном курсовом
проекте, а также выбранные способы реализации контроля целостности для каждого
из ограничений.
Ограничения,
контролируемые в таблицах:
1. Текстовое поле «E-mail» в таблице «Покупатель» не
может содержать пробелов или кириллических символов
Аналогичным образом
ограничение на данное поле контролируется в таблицах «Сотрудник» и «Поставщик»
2. Текстовое поле «ФИО» в
таблице «Покупатель» не может содержать цифр
Аналогичным образом
ограничение на данное поле контролируется в таблице «Сотрудник»
3. Значения поля
«Дата_рождения» в таблице «Покупатель» не может превышать текущую дату и должно
быть определенного вида, что контролируется маской ввода
4. Поле
«Дата_регистрации» в таблице «Покупатель», как правило, содержит дату
добавления записи в таблицу, не должно превышать текущую дату и должно быть
определенного вида, который контролируется маской ввода
5. Поле «Пол» в таблице
«Покупатель» содержит фиксированный набор значений, контролируемых списком
подстановки
6. Поле «Образование» в
таблице «Покупатель» содержит фиксированный набор значений, контролируемый
списком подстановки
7. Поле «Логин» в таблице
«Покупатель/телефон» содержит фиксированный набор значений, источником которых
является таблица «покупатель»
Аналогичным образом
ограничение на данное поле контролируется в таблицах «заказ», «кредитная карта»
и «товар/оценка»
8. Поле «Телефон» в
таблице «Покупатель/телефон» может содержать только цифры и должно быть
определенного вида, который контролируется маской ввода
Аналогичным образом
ограничение на данное поле контролируется в таблицах «поставщик», «сотрудник» и
«точка выдачи». Ограничение подобного рода установлено и на поле «факс» в
таблицах «сотрудник» и «точка выдачи»
9. Поле «id_товара» в таблице «Товар/оценка»
содержит фиксированный набор значений, источником которых является таблица
«товар»
Аналогичным образом
ограничение на данное поле контролируется в таблице «Заказ товар»
10. Поле «Оценка» в
таблице «Товар/оценка» содержит фиксированный набор значений и позволяет
оценить клиенту выбранный товар в диапазоне от 1 до 10
11. Текстовое поле «Время_работы»
в таблице «Точка выдачи» может содержать только цифры и должно быть
определенного диапазонного вида, который контролируется маской ввода
12.Поле «Название_точки»
в таблице «Точка выдачи/телефон» содержит фиксированный набор значений,
источником которых является таблица «Точка выдачи»
Аналогичным образом
ограничение на данное поле контролируется в таблице «заказ»
13. Поле «Должность» в
таблице «Сотрудник» содержит фиксированный набор значений, контролируемый
списком подстановки
14. Поле «Номер_кред_карты»
в таблице «Кредитная карта» должно содержать только цифры и быть определенного
вида, который контролируется маской ввода
15. Поле «Имя_владельца»
в таблице «Кредитная карта» должно содержать только латинские буквы
16. Поле «Проверочный_код»
в таблице «Кредитная карта» должно быть определенного вида, который
контролируется маской ввода
17. Поле «Срок_истечения»
в таблице «Кредитная карта» должно быть определенного вида, который
контролируется маской ввода. При этом для использования кредитной карты срок её
истечения должен превышать текущую дату или быть равным ей
18. Поле «№_заказа» в
таблице «Заказ» содержит фиксированный набор значений, источником которых
является таблица «Заказ товар»
Аналогичным образом
ограничение на данное поле контролируется в таблице «доставка»
19. Поле «Дата_заказа» в
таблице «Заказ» должно быть определенного вида, который контролируется маской
ввода. По умолчанию выставляется дата добавления заказа и также контролируется
невозможность ввода даты, превышающей текущую
20. Поле «Время_заказа» в
таблице «Заказ» должно быть определенного вида, который контролируется маской
ввода. По умолчанию выставляется время добавления заказа.
21. Поле «Статус_заказа»
в таблице «Заказ» содержит фиксированный набор значений, контролируемый списком
подстановки
22. Поле «Способ_оплаты»
в таблице «Заказ» содержит фиксированный набор значений, контролируемый списком
подстановки
23. Поле «Способ_получения»
в таблице «Заказ» содержит фиксированный набор значений, контролируемый списком
подстановки
24. Поле
«Табельный_номер» в таблице «Заказ» содержит фиксированный набор значений,
источником которых является таблица «Сотрудник»
Аналогичным образом
ограничение на данное поле контролируется в таблице «доставка»
25. Поле «Удаленность_МКАД»
в таблице «Доставка» содержит ограничение на дальность расстояния
осуществляемой доставки. Доставка ограничена радиусом 60-ти км. От МКАД
26. Поле «Статус_доставки»
в таблице «Доставка» содержит фиксированный набор значений, контролируемый
списком подстановки
27. Поле «Вид_доставки» в
таблице «Доставка» содержит фиксированный набор значений, контролируемый
списком подстановки
Ограничения,
контролируемые на формах посредством Visual Basic:
1. Для организации
ограничений на доступ определенных сотрудников к различным таблицам через формы
на них предусмотрен ввод пароля (1111)
Private Sub
Кнопка8_Click()
On Error GoTo
Err_Кнопка8_Click
Dim stDocName
As String
Dim
stLinkCriteria, pas As String
pas = InputBox("Введите пароль",
"Пароль")
If pas =
"1111" Then
stDocName =
ChrW(1055) & ChrW(1086) & ChrW(1089) & ChrW(1090) & ChrW(1072)
& ChrW(1074) & ChrW(1097) & ChrW(1080) & ChrW(1082) &
ChrW(47) & ChrW(1082) & ChrW(1072) & ChrW(1090) & ChrW(1077)
& ChrW(1075) & ChrW(1086) & ChrW(1088) & ChrW(1080) &
ChrW(1103)
DoCmd.OpenForm
stDocName, , , stLinkCriteria
Else
MsgBox
("Пароль неверный")
End If
2. При редактировании
формы «Доставка» осуществляется пересчет всех вычисляемых полей (Стоимость,
Суммарный вес, Суммарный объем) при смене номера заказа, а также определяется
вид доставки в зависимости от влияющих на его выбор факторов (Стоимость,
Суммарный вес, Суммарный объем)
Private Sub
№_заказа_Click()
Суммарный_вес_заказа.Requery
Суммарный_вес_заказа =
Суммарный_вес_заказа.ItemData(0)
Суммарный_объем_заказа.Requery
Суммарный_объем_заказа =
Суммарный_объем_заказа.ItemData(0)
Стоимость_заказа.Requery
Стоимость_заказа =
Стоимость_заказа.ItemData(0)
If
Удаленность_МКАД_км.Value = 0 Then Вид_доставки.Value = "Курьер"
If
(Стоимость_заказа.Value > 30000) Or (Суммарный_вес_заказа.Value >= 2.5)
Or (Суммарный_объем_заказа.Value > 4000) Then Вид_доставки.Value =
"Легковой транспорт"
If
(Суммарный_вес_заказа.Value >= 23) Or (Суммарный_объем_заказа.Value >
25000) Then Вид_доставки.Value = "Грузовой транспорт"
If Вид_доставки.Value =
"Легковой транспорт" Then Стоимость_доставки.Value = 350 +
Удаленность_МКАД_км.Value * 15
If Вид_доставки.Value =
"Грузовой транспорт" Then Стоимость_доставки.Value = 450 +
Удаленность_МКАД_км.Value * 20
3. При редактировании
поля «Удаленность_от_МКАД_км» на форме «Доставка» осуществляется пересчет
стоимости доставки в зависимости от его значения
Private Sub
Удаленность_МКАД_км_LostFocus()
If Вид_доставки.Value =
"Курьер" Then Стоимость_доставки.Value = 250
If Вид_доставки.Value =
"Легковой транспорт" Then Стоимость_доставки.Value = 350 +
Удаленность_МКАД_км.Value * 15
If Вид_доставки.Value =
"Грузовой транспорт" Then Стоимость_доставки.Value = 450 +
Удаленность_МКАД_км.Value * 20
End Sub
4. При обращении к форме
«заказ» на основании номера заказа автоматически пересчитывается стоимость
заказа
Private Sub
№_заказа_Click()
Стоимость_заказа.Requery
End Sub
5. При обращении к форме
«заказ» при определении способа получения заказа контролируется возможность
ввода точки доставки в зависимости от его выбора
Private Sub
Способ_получения_Click()
If Способ_получения.Value
= "Доставка" Then
Название_точки.Value =
" "
Название_точки.Visible =
False
End If
If Способ_получения.Value
= "Самовывоз" Then
Название_точки.Visible =
True
End If
6. При обращении к форме
«Корзина заказов», эмулирующей подобный функционал сайта автоматически
определяется следующий номер заказа
Private Sub
Form_Current()
Me![Список12].SetFocus
Список12.ListIndex = 0
Поле14.Value = Список12.Value
+ 1
End Sub
7. При обращении к форме
«Корзина заказов», эмулирующей подобный функционал сайта контролируется
возможность осуществления оформления заказа только при условии добавления в
корзину хотя бы одной единицы товара, а также невозможность выбора
подкатегории, не принадлежащей выбранной категории
Private Sub
ПолеСоСписком2_Click()
ПолеСоСписком4.Value =
""
ПолеСоСписком6.Value =
""
If ПолеСоСписком2.Value
<> "" And ПолеСоСписком4.Value <> "" And
ПолеСоСписком6.Value <> "" Then
Кнопка18.Visible = True
Else
Кнопка18.Visible = False
End If
End Sub
Private Sub ПолеСоСписком4_Click()
ПолеСоСписком6.Value = ""
If ПолеСоСписком2.Value <> "" And ПолеСоСписком4.Value <> "" And ПолеСоСписком6.Value <> "" Then
Кнопка18.Visible = True
Else
Кнопка18.Visible = False
End If
End Sub
Private Sub ПолеСоСписком4_GotFocus()
Me.Refresh
End Sub
Private Sub ПолеСоСписком6_Click()
If ПолеСоСписком2.Value <> "" And ПолеСоСписком4.Value <> "" And ПолеСоСписком6.Value <> "" Then
Кнопка18.Visible = True
Else
Кнопка18.Visible = False
End If
End Sub
Private Sub ПолеСоСписком6_GotFocus()
Me.Refresh
End Sub
Аналогичным образом
происходит проверка на категории и подкатегории при обращении к форме «Оценка»,
эмулирующей подобный функционал сайта
8. При обращении к форме «Оформление
заказа», эмулирующей подобный функционал сайта, осуществляется пересчет всех
вычисляемых полей (Стоимость, Суммарный вес, Суммарный объем) при смене номера
заказа, а также определяется вид доставки в зависимости от влияющих на его
выбор факторов (Стоимость, Суммарный вес, Суммарный объем)
Список69.Requery
Me![Список69].SetFocus
Список69.ListIndex = 0
№_заказа.Value =
Список69.Value
Суммарный_вес_заказа.Requery
Me![Суммарный_вес_заказа].SetFocus
Суммарный_вес_заказа.ListIndex
= 0
Суммарный_объем_заказа.Requery
Me![Суммарный_объем_заказа].SetFocus
Суммарный_объем_заказа.ListIndex
= 0
Стоимость_заказа.Requery
Me![Стоимость_заказа].SetFocus
Стоимость_заказа.ListIndex
= 0
If
Удаленность_МКАД_км.Value = 0 Then Вид_доставки.Value = "Курьер"
If (Стоимость_заказа.Value
> 30000) Or (Суммарный_вес_заказа.Value >= 2.5) Or
(Суммарный_объем_заказа.Value > 4000) Then Вид_доставки.Value =
"Легковой транспорт"
If
(Суммарный_вес_заказа.Value >= 23) Or (Суммарный_объем_заказа.Value >
25000) Then Вид_доставки.Value = "Грузовой транспорт"
If Вид_доставки.Value =
"Курьер" Then Стоимость_доставки.Value = 250
If Вид_доставки.Value =
"Легковой транспорт" Then Стоимость_доставки.Value = 350 +
Удаленность_МКАД_км.Value * 15
If Вид_доставки.Value =
"Грузовой транспорт" Then Стоимость_доставки.Value = 450 +
Удаленность_МКАД_км.Value * 20
9. При обращении к форме
«Оформление заказа», эмулирующей подобный функционал сайта при редактировании
поля «Удаленность_от_МКАД_км» на форме «Доставка» осуществляется пересчет
стоимости доставки в зависимости от его значения
Private Sub
Удаленность_МКАД_км_LostFocus()
If Вид_доставки.Value =
"Курьер" Then Стоимость_доставки.Value = 250
If Вид_доставки.Value =
"Легковой транспорт" Then Стоимость_доставки.Value = 350 +
Удаленность_МКАД_км.Value * 15
If Вид_доставки.Value =
"Грузовой транспорт" Then Стоимость_доставки.Value = 450 +
Удаленность_МКАД_км.Value * 20
End Sub
10. При обращении к форме
«Оформление заказа», эмулирующей подобный функционал сайта при редактировании
поля «Логин» проверяется условие на его существование в БД для возможности
оформления заказа
Dim i As Long,
f As Boolean
Список144.Requery
Me![Список144].SetFocus
Список144.ListIndex = 0
f = False
For i = 0 To Список144.ListCount - 1
Список144.ListIndex = i
If Список144.Value = Логин.Value Then f = True
Next i
If f = False Then MsgBox
("Сначала зарегистрирутесь")
End Sub
Аналогичным образом
происходит проверка при обращении к форме «Оценка товара клиентом», эмулирующей
подобный функционал сайта
11. При обращении к форме
«Регистрация», эмулирующей подобный функционал сайта при регистрации нового
пользователя проверяются условия на обязательность заполнения определенных
полей
Private Sub
Кнопка70_Click()
On Error GoTo
Err_Кнопка70_Click
Dim stDocName
As String
stDocName =
ChrW(1044) & ChrW(1086) & ChrW(1073) & ChrW(1072) & ChrW(1074)
& ChrW(1080) & ChrW(1090) & ChrW(1100) & ChrW(32) &
ChrW(1088) & ChrW(1077) & ChrW(1075) & ChrW(1080) & ChrW(1089)
& ChrW(1090) & ChrW(1088) & ChrW(1072) & ChrW(1094) &
ChrW(1080) & ChrW(1102)
DoCmd.OpenQuery
stDocName, acNormal, acEdit
stDocName =
ChrW(1044) & ChrW(1086) & ChrW(1073) & ChrW(1072) & ChrW(1074)
& ChrW(1080) & ChrW(1090) & ChrW(1100) & ChrW(32) &
ChrW(1090) & ChrW(1077) & ChrW(1083) & ChrW(1077) & ChrW(1092)
& ChrW(1086) & ChrW(1085) & ChrW(32) & ChrW(49)
DoCmd.OpenQuery
stDocName, acNormal, acEdit
If Поле92
<> "" Then
stDocName =
ChrW(1044) & ChrW(1086) & ChrW(1073) & ChrW(1072) & ChrW(1074)
& ChrW(1080) & ChrW(1090) & ChrW(1100) & ChrW(32) &
ChrW(1090) & ChrW(1077) & ChrW(1083) & ChrW(1077) & ChrW(1092)
& ChrW(1086) & ChrW(1085) & ChrW(32) & ChrW(50)
DoCmd.OpenQuery
stDocName, acNormal, acEdit
End If
If Поле100
<> "" Then
stDocName =
ChrW(1044) & ChrW(1086) & ChrW(1073) & ChrW(1072) & ChrW(1074)
& ChrW(1080) & ChrW(1090) & ChrW(1100) & ChrW(32) &
ChrW(1090) & ChrW(1077) & ChrW(1083) & ChrW(1077) & ChrW(1092)
& ChrW(1086) & ChrW(1085) & ChrW(32) & ChrW(51)
DoCmd.OpenQuery
stDocName, acNormal, acEdit
End If
If
Номер_кред_карты <> "" Then
stDocName =
ChrW(1044) & ChrW(1086) & ChrW(1073) & ChrW(1072) & ChrW(1074)
& ChrW(1080) & ChrW(1090) & ChrW(1100) & ChrW(32) &
ChrW(1082) & ChrW(1088) & ChrW(1077) & ChrW(1076) & ChrW(1080)
& ChrW(1090) & ChrW(1085) & ChrW(1091) & ChrW(1102) &
ChrW(32) & ChrW(1082) & ChrW(1072) & ChrW(1088) & ChrW(1090)
& ChrW(1091)
DoCmd.OpenQuery
stDocName, acNormal, acEdit
End If
DoCmd.SetWarnings
False
If Me.Dirty
Then Me.Dirty = False
DoCmd.Close
Exit_Кнопка70_Click:
Exit Sub
Err_Кнопка70_Click:
MsgBox
Err.Description
Resume
Exit_Кнопка70_Click
End Sub
6.
Проектирование физической структуры базы данных
Физическая модель – это
привязка логической модели к конкретной среде хранения и методам хранения
данных. При проектировании физической модели базы данных необходимо описать
среду и метод хранения информации. Для этого необходимо изучить особенности
организации данных выбранной СУБД.
Для проектирования базы
данных для Интернет-магазина была выбрана СУБД MS Access. Для хранения данных в этой СУБД используются таблицы. В них
хранится вся информация о предметной области. Наша база данных включает
несколько взаимосвязанных таблиц. Объекты, которые были описаны при построении инфологической
модели предметной области, в базе данных являются таблицами.
Представим описание объектов и связей между ними в виде физической ER-модели, сованной на методологии
IDEF1X, созданной в выбранном для проектирования CASE-средстве CA ERwin Data
Modeler.
На рисунках ниже представлены разработанные таблицы:
Таблица «Товар»
Таблица
«Поставщик/категория»
Таблица «Товар/оценка»
Таблица «Покупатель»
Таблица «Кредитная_карта»
Таблица «Заказ/товар»
Таблица «Доставка»
Таблица «Сотрудник»
Таблица «Точка_выдачи»
База данных состоит из
взаимосвязанных таблиц, которые наполняются записями. Ведение базы данных
подразумевает под собой возможность управления записями: их добавление,
изменение, удаление. Реализация данных возможностей возлагается на СУБД.
Существует несколько
способов реализации управления базой данных в MS ACCESS. В частности, любое из указанных действий можно
выполнить тремя способами:
- через раздел СУБД «Таблицы»,
производя действия по изменению, добавлению или удалению непосредственно в
таблице;
- через раздел СУБД «Формы», выполняя
необходимые действия в таблице через интерфейс формы;
- через раздел СУБД «Запросы», выполняя
запросы на обновление, добавление или удаление данных.
Существует 3 способа
ввода данных: ввод с клавиатуры; сохранение данных, сформированных иными
программными средствами; импорт из других источников. В нашей базе данных мы
использовали ввод с клавиатуры. В процессе ввода информации были использованы
следующие приемы: перенос значений полей из предыдущих записей; замена ввода
выбором из списка, вспомогательные запросы для полей, которые необходимо
вычислять (напр. суммарный вес или общая стоимость заказа).
Ввод информации в базу
данных может осуществляться путем ввода данных в таблицу. Но такой способ имеет
многие очевидные недостатки. Поэтому для этих целей обычно используются
экранные формы. Формы – это окна, через которые пользователь взаимодействует с
программным кодом приложения и объектами данных. Ввод данных при помощи форм
очень простой в использовании. С помощью форм также можно осуществлять
полноценную навигацию по таблице.
При проектировании нашей
базы данных ввод информации осуществлялся при помощи форм. Экранные формы создаются
либо в режиме конструктора, либо автоматически по выбранным полям таблицы или
запроса. Корректировка данных возможна в этих же формах.
Учитывая, что наш проект
предполагает осуществление поступления данных в базу через сайт
Интернет-магазина – для удобства работы с нашей базой данных мы реализовали
специальные формы, частично эмулирующие его работу. Эти формы имеют следующий
вид:
Экранная форма «Оформление заказа»
Экранная форма «Регистрация»
Экранная форма «Сайт»
8.
Организация корректировки БД
Корректировка данных в
базе данных может осуществляться путем корректировки данных в форме. В основных
таблицах нашей БД, например «Заказ», «Доставка», «Покупатель» основная
информация чаще всего поступает извне, а именно с сайта интернет-магазина, то
формы, соответствующие этим таблицам созданы прежде всего для корректировки
(заполнения остальными данными, например назначение ответственного сотрудника
на поступивший заказ или доставку) записей. Приведем примеры этих форм:
9. Описание
информационных потребностей пользователей и выбор способов их реализации
Информационные
потребности пользователей выражаются в следующем: пользователям базой данных
необходимо находить нужную им информацию в БД, просматривать ее, выводить на
печать. Для этих целей использую отчеты и запросы. Запросов может быть создано
довольно много, поэтому реализованы лишь самые необходимые. К ним относятся:
Запрос на получение
товарного чека
SELECT Товар.id_товара AS
ID, Товар.Название_товара AS Наименование, Count([Заказ Товар].id_товара) AS
Количество, Sum(Товар.Цена_товара) AS Цена, [Заказ Товар].[№_заказа] AS
[Товарный чек №]
FROM Товар INNER JOIN
[Заказ Товар] ON Товар.id_товара = [Заказ Товар].id_товара
GROUP BY Товар.id_товара,
Товар.Название_товара, [Заказ Товар].[№_заказа]
HAVING [Заказ
Товар].[№_заказа]=[Введите № заказа];
Запрос на получение
гарантийного талона
SELECT Товар.id_товара,
Товар.Название_товара, Count([Заказ Товар].id_товара), Товар.Гарантия_мес,
[Заказ Товар].[№_заказа]
FROM Товар INNER JOIN
[Заказ Товар] ON Товар.id_товара = [Заказ Товар].id_товара
GROUP BY Товар.id_товара,
Товар.Название_товара, Товар.Гарантия_мес, [Заказ Товар].[№_заказа]
HAVING [Заказ
Товар].[№_заказа]=[Введите номер заказа];
Запрос на получение
информации о самой покупаемой продукции
SELECT TOP 5
Товар.Название_товара, Count([Заказ Товар].id_товара)
FROM Товар INNER JOIN
[Заказ Товар] ON Товар.id_товара = [Заказ Товар].id_товара
GROUP BY
Товар.Название_товара
ORDER BY Count([Заказ
Товар].id_товара) DESC;
Запрос на получение
информации о самой рейтинговой продукции
SELECT
Товар.Название_товара, Avg([Товар/Оценка].Оценка) AS [Средняя оценка]
FROM Товар INNER JOIN
[Товар/Оценка] ON Товар.id_товара = [Товар/Оценка].id_товара
GROUP BY
Товар.Название_товара
ORDER BY
Avg([Товар/Оценка].Оценка) DESC;
Запрос на получение
сводки доходности предприятия по различным категориям продукции
SELECT DISTINCT
Товар.Категория_товара, Sum(Товар.Цена_товара)
FROM Товар INNER JOIN
(Заказ INNER JOIN [Заказ Товар] ON Заказ.[№_заказа] = [Заказ Товар].[№_заказа])
ON Товар.id_товара = [Заказ Товар].id_товара
GROUP BY
Товар.Категория_товара, Заказ.Статус_заказа
HAVING Заказ.Статус_заказа="выполнен";
Запрос на вывод новинок
SELECT TOP 5
Товар.Название_товара, Avg([Товар/Оценка].Оценка) AS [Средняя оценка],
Товар.Цена_товара
FROM Товар LEFT JOIN
[Товар/Оценка] ON Товар.id_товара = [Товар/Оценка].id_товара
GROUP BY
Товар.Название_товара, Товар.Цена_товара, Товар.id_товара
ORDER BY Товар.id_товара
DESC;
Запрос на выдачу
информации о распределении проданного товара в зависимости от пола клиентов
SELECT
Товар.Категория_товара, Покупатель.Пол, Count(Покупатель.Пол) AS Количество
FROM Товар INNER JOIN
(Покупатель INNER JOIN (Заказ INNER JOIN [Заказ Товар] ON Заказ.[№_заказа] =
[Заказ Товар].[№_заказа]) ON Покупатель.Логин = Заказ.Логин) ON Товар.id_товара
= [Заказ Товар].id_товара
GROUP BY
Товар.Категория_товара, Покупатель.Пол;
Запрос на историю заказов
SELECT Заказ.[№_заказа],
Заказ.Дата_заказа, Заказ.Стоимость_заказа, Заказ.Логин
FROM Товар INNER JOIN
(Заказ INNER JOIN [Заказ Товар] ON Заказ.[№_заказа] = [Заказ Товар].[№_заказа])
ON Товар.id_товара = [Заказ Товар].id_товара
GROUP BY
Заказ.[№_заказа], Заказ.Дата_заказа, Заказ.Стоимость_заказа, Заказ.Логин
HAVING Заказ.Логин=[Введите
логин];
Запрос на историю покупок
SELECT Заказ.Логин,
Товар.Название_товара, Товар.Цена_товара, [Заказ Товар].[№_заказа]
FROM Товар INNER JOIN
(Заказ INNER JOIN [Заказ Товар] ON Заказ.[№_заказа] = [Заказ Товар].[№_заказа])
ON Товар.id_товара = [Заказ Товар].id_товара
GROUP BY Заказ.Логин,
Товар.Название_товара, Товар.Цена_товара, [Заказ Товар].[№_заказа]
HAVING Заказ.Логин=[Введите
логин] AND [Заказ Товар].[№_заказа]=[Введите № заказа];
Вся информация полученная в ходе выполнения описанных выше запросов может быть выведена как в виде
таблиц для просмотра, так и в виде сформированных отчетов. Отчеты можно
просмотреть и вывести на печать. Отчеты, сформированные в нашем проекте, имеют следующий вид:
Товарный чек
Гарантийный талон
Отчет о
новинках интернет-магазина
Отчет по
самым рейтинговым товарам магазина
Отчет по
самым популярным товарам магазина
История
заказов
История
покупок
10. Разработка
интерфейса
При проектировании и
разработке любой базы данных интерфейс играет важную роль. Он представляет
собой совокупность средств и методов, при помощи которых пользователь взаимодействует
с различными компонентами базы данных.
Работа с нашей базой
данных начинается с заставки.
После просмотра заставки,
пользователь попадает в главное меню, которое предназначено для предоставления пользователю удобной
навигации по всем формам базы данных, которые сгруппированы по функциям.
Главное меню содержит три
раздела:
·
Сайт
·
Администрирование
БД
·
Отчеты
При переходе на раздел
сайт, пользователь попадает на форму, эмулирующую работу сайта. На котором
можно зарегистрироваться, оценить товары, оформить заказ, просмотреть
информацию о компании и услугах.
Раздел «Администрирование
БД» предназначен для сотрудников интернет-магазина. Доступ к каждому из
подразделов защищен паролем и сотрудник имеет доступ только к тем, которые
относятся к его должностным обязанностям.
Раздел отчеты содержит
перечень выходных документов (напр. Сопроводительные документы на заказ или
маркетинговые отчеты), которые можно сгенерировать на основе данных,
содержащихся в базе.
Реализация проекта
разработки базы данных интернет-магазина в среде СУБД MS Access является
многступенчатым трудоемким процессом, основые этапы которого были подробно
рассмотрены выше. На основе ER-модели,
созданной в выбранном нами CASE-средства
(CA ERwin Data Modeler), была осуществлена автоматическая генерация файлов
данных в выбранной нами среде. В процессе создания базы данных было построено 13
взаимосвязанных таблиц. Был также реализован контроль целостности для каждого из ограничений,
выявленных нами ранее. С помощью SQL
были построены все необходимые для удовлетворения информационных потребностей
пользователей БД запросы.
Следующим важнейшим
этапом реализции проекта была разработка пользовательского интерфейса. Были
созданы все необходимые для обеспечения полноценной навигации по базе данных
элементы, включая главное меню и различные подменю. Все экранные формы
создавались нами в режиме конструктора и также редактировались средствами Visual Basic в режиме просмотра кода.
Заключительным этапом
реализации проекта стало создание отчетов при помощи мастера создания отчетов и
впоследствии редактировались в режимах макета и конструктора. В отчетах были
отображены результаты выполнения созданных ранее запросов.
12.
Список использованной литературы и Интернет-ресурсов
1.
Диго С.М. Базы
данных: проектирование и использование: Учебник. – М.: Финансы и статистика,
2005.
2.
Диго С. М.
Создание баз данных в среде СУБД Access: Учебное пособие. – М., 2001.
3.
Хомоненко А.Д.,
Цыганков В.М., Мальцев М.Г. Базы данных. Учебник для вузов. – М.: Корона-принт, 2004.
4.
Кузин А.В.,
Левонисова С.В. Базы данных: Учебник. – М.: Academia, 2010.
5.
Туманов В.Е. Основы
проектирования реляционных баз данных: Учебное пособие. – М.:
Интернет-университет информационных технологий, 2010.
6.
Илюшечкин В. М. Основы
использования и проектирования баз данных: Учебное пособие. – М.: Юрайт, 2010.
7.
Преснякова Г.В. Проектирование
интегрированных реляционных баз данных: Учебник. – М.: КДУ, 2007.
8.
Джон Дей, Крейг
Ван Слайк, Рэймонд Фрост Базы данных. Проектирование и разработка: Учебник. – М.:
НТ Пресс, 2007.
9.
Домбровская Г.Р.,
Новиков Б.А. Настройка приложений баз данных: Учебник – М.: BHV, 2006.
10.
http://www.shop2you.ru/articles/internet_shop.shtml
- статья об устройстве интернет-магазина.