logo
Проектирование базы данных интернет-магазина в СУБД MS ACCESS

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.

На рисунках ниже представлены разработанные таблицы:

Таблица «Товар»

Таблица «Поставщик/категория»

Таблица «Товар/оценка»

Таблица «Покупатель»

Таблица «Кредитная_карта»

Таблица «Заказ/товар»

Таблица «Доставка»

Таблица «Сотрудник»

Таблица «Точка_выдачи»

7. Организация ввода данных в БД

База данных состоит из взаимосвязанных таблиц, которые наполняются записями. Ведение базы данных подразумевает под собой возможность управления записями: их добавление, изменение, удаление. Реализация данных возможностей возлагается на СУБД.

Существует несколько способов реализации управления базой данных в 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 [Средняя оценка]