Название таблицы
|
Ключевое поле
|
Товар Производитель_товара
Описание_товара Клиенты Заказы Заказанные_товары Выполненные заказы
|
Номер, Производитель,
Характеристика Производитель Тип Фирма Код заказа Id Код заказа
|
НФ:
выполняются ограничения 1НФ, и каждый не ключевой атрибут функционально
полно зависит от составного первичного ключа.
НФ:
все неключевые атрибуты отношения взаимно независимы и полностью зависят
от первичного ключа.
Таким образом, база данных удовлетворяет всем требованиям нормализации
таблиц и Третья нормальная форма - окончательный результат нормализации моей
Базы данных.
.3 Схема данных
Отношения - это правила, поддерживаемые на уровне механизма реализации
СУБД. Различают три типа отношений:
·
Отношение
«один-к-одному»: для
каждой строки в одной таблице существует не более одной строки связанной
таблицы.
·
Отношение
«один-ко-многим»:
одна таблица не содержит вообще или имеет набор связанных «дочерних» записей из
другой таблицы.
·
Отношение
«многие-ко-многим»:
для каждой строки первой таблицы может существовать набор строк в другой
таблице и наоборот. Такая связь организуется, как правило, при помощи третьей,
связующей таблицы, содержащей значения первичных ключей обеих таблиц в качестве
внешних ключей.
При разработке БД необходимо принимать во внимание правила обеспечения
целостности данных (обеспечивает каскадное обновление
записей в связанных таблицах)
В моей схеме данных таблицы связаны следующим образом. При добавлении
нового товара, продавец выбирает тип (товара), который с помощью мастера
подстановки берется из таблицы Описание_товара.
Также продавец выбирает производителя (из таблицы
Производитель_товара). Далее он от руки вводит характеристику товара,
его цену и количество в таблицу Товар.
При поступлении нового заказа, продавец в таблицу Заказы вводит
заказанные товары, нажав на «галочку» в графе «выполнен», а затем выбирает
Фирму - заказчика.
Таблица Заказанные товары заполняется автоматически и хранит информацию,
которая необходима для таблицы Заказы.
Ниже представлена моя схема данных:
Таблица Выполненные заказы заполняется с помощью запроса, которому не
требуются никакие связи, поэтому в данной схеме данных этой таблицы нет.
Глава III. Создание пользовательского
интерфейса
.1 Запросы
В моей БД содержатся 14 запросов всех типов:
· запрос на обновление
· запрос на удаление
· запрос на создание
· запрос на выборку.
Ниже я опишу каждый из запросов.
Запрос «Все клиенты»
Данный запрос при выполнении дает информацию обо всех клиентах фирмы -
название фирмы, адрес, телефон и e-mail.
Данные для этого запроса берутся из таблицы Клиенты.
В режиме SQL запрос
выглядит так: Клиенты.Фирма, Клиенты.Адрес, Клиенты.Телефон,
Клиенты.[E-mail]Клиенты;
Запрос «Выборка по ценам типа товаров»
Данный запрос группирует все записи в таблице Товар по типу товаров и
выводит :
· максимальную цену товара
· минимальную цену товара
· общее количество товаров в таблице Товар
При выполнении запрос выглядит так:
Данные для создания запроса берутся из таблицы Товар, а для подсчета
максимальной и минимальных цен в режиме SQL вводим данные и с помощью Sum выводятся нужные нам цены.
В режиме SQL запрос
выглядит так: Товар.Тип, Min(Товар.Цена) AS [Минимальная Цена], Max(Товар.Цена)
AS [Максимальная Цена], Sum(Товар.Количество) AS [Общее Кол-во]
FROM ТоварBY Товар.Тип;
Запрос «Добавление заказа»
Данный запрос добавляет заказы в таблицу Выполненные заказы невыполненные
в таблице Заказы. Запрос вносит в эту таблицу следующие данные ФИО клиента, Код
заказа и Дату заказа, которые он берет из таблицы Заказы. Этот запрос
проверяет, является поле Выполнен (в таблице Заказы) ложным или нет.
Если да, то он берет эти данные, и подставляет в таблицу Выполненные заказы.
Также в эту таблицу
вставляются данные о том, когда был выполнен заказ, количество товаров,
заказанное данным клиентом и сумму покупки.
В режиме SQL запрос
выглядит так: INTO [Выполненные заказы] ( [Код заказа], Фирма, [Дата заказа],
[Дата выполнения], Количество, [Сумма заказа] )Заказы.[Код заказа],
Заказы.Фирма, Заказы.[Дата заказа], Date() AS [Дата выполнения],
Sum(Товар.Количество) AS Количество,
Sum(Заказанные_товары!Количество*Товар!Цена) AS СуммаЗаказы INNER JOIN (Товар
INNER JOIN Заказанные_товары ON Товар.Номер = Заказанные_товары.[Код товара])
ON Заказы.[Код заказа] = Заказанные_товары.НомерBY Заказы.[Код заказа],
Заказы.Фирма, Заказы.[Дата заказа], Date(),
Заказы.Выполнен(((Заказы.Выполнен)=False));
Запрос «Заказанные_товары и клиенты»
Данный запрос при выполнении выводит все заказанные товары, название
фирмы - клиента, которая заказала товар, требуемое количество товара и его
цену, а также дату поступления заказа на данный товар. Выборка осуществляется
только по тем товарам, которые были заказаны хотя бы один раз. А данные для этого
запроса находятся в таблицах Заказанные_товары, Клиенты и Товар.
В режиме SQL запрос
выглядит так: Заказы.Фирма, Товар.Тип, Товар.Производитель,
Товар.Характеристика, Товар.Цена, Заказы.[Дата заказа], Товар.Количество(Клиенты
INNER JOIN Заказы ON Клиенты.Фирма=Заказы.Фирма) INNER JOIN (Товар INNER JOIN
Заказанные_товары ON Товар.Номер=Заказанные_товары.id) ON Заказы.[Код
заказа]=Заказанные_товары.Номер;
«Запрос на Выборку всех клиентов с введенной буквы»
При запуске этого запроса он требует ввести букву или несколько букв, с
которых начинается название фирмы - клиента (данные из таблицы Клиенты). Данный
запрос довольно прост, но необходим. Например, если продавец помнит первую
букву или несколько букв, то он запускает данный запрос и вводит, ту букву,
которую помнит, а в ответ на введенную букву запрос выводит название всех фирм
на указанную букву.
В режиме SQL данный запрос
выглядит так :Клиенты.Фирма, Клиенты.Адрес,
Клиенты.ТелефонКлиенты(((Клиенты.Фирма) Like [Введите] & "*"));
«Запрос по типу товара»
Простой запрос, который позволяет выводить товары (из таблицы Товар) по
определенному типу. При этом дается описание товара - производитель,
характеристика, цена, количество.
Ниже представлен результат выполнения данного запроса при введении товара
«Шубы»
В режиме SQL запрос
выглядит так: Товар.Тип, Товар.Производитель, Товар.Характеристика, Товар.Цена,
Товар.КоличествоТовар(((Товар.Тип) Like [Введите тип] & "*"));
Запрос на обновление «Обновление заказа».
Запрос, который обновляет количество товаров (в том числе и проданных) в
таблице Товар, а также он обновляет поле Выполнен в таблице Заказы. Запрос
работает следующим образом: если в таблице Заказы в поле Выполнен есть заказы с
ложным значением (False), то данный
запрос обновляет все товары, которые содержатся в данном заказе в таблице
Товар.
Например : В таблице Заказы есть заказ, состоящий из 5 товаров «Шорты,
мини», содержащий название фирмы-заказчика и дату заказа. Данный заказ не
выполнен, т.е. в поле Выполнен стоит значение ложь. Запустив запрос «Обновление
заказа», происходит следующее: значение выполнен в таблице становится истиной (True), количество имеющихся на складе
товаров «Шорты, мини» уменьшается на 5, в то время как количество проданных на
столько же увеличивается.
В режиме SQL запрос
выглядит так: Заказы INNER JOIN (Товар INNER JOIN Заказанные_товары ON
(Товар.Номер = Заказанные_товары.[Код товара]) AND (Товар.Номер =
Заказанные_товары.[Код товара])) ON Заказы.[Код заказа] =
Заказанные_товары.Номер SET Товар.Количество =
Товар.Количество-Заказанные_товары.[Количество], Заказы.Выполнен = True,
Товар.[Количество проданных] = Товар.[Количество
проданных]+Заказанные_товары.[Количество](((Заказы.Выполнен)=False));
Запрос на «Создание таблицы уцененных товаров».
Этот запрос создает новую таблицу с уцененными товарами. Он работает
следующим образом :
При запуске запроса необходимо ввести процент уценения товаров, а затем
дату. Запрос выбирает все товары, дата поставки которых соответствует введенной
дате, и копирует их в новую таблицу Уцененные товары.
Например :
Я запускаю запрос и ввожу процент = 15
и дату 07.01.05. В итоге у меня получается таблица, содержащая 2 записи:
По сравнению с таблицей Товар цены действительно снизились на 15%.
В режиме SQL запрос
выглядит так: Товар.Тип, Товар.Производитель, Товар.Характеристика,
Товар.Цена*(1-[Введите процент уценения]/100) AS Выражение2, Товар.[Дата
поставки] INTO [Уцененные товары]Товар(((Товар.[Дата поставки])=[Введите
дату]));
Запрос «Сумма всех товаров»
Этот запрос позволяет определить, сколько на складе товара каждого типа и
его цену, а также общую стоимость всей партии каждого товара. Все данные для
запроса из таблицы Товар. Я считаю этот запрос полезным, так как с его помощью
можно определить общую стоимость всех имеющихся товаров. Чтобы посчитать сумму
всех товаров, надо в режиме SQL
умножить цену всех товаров на их количество.
(сортировка по типу)
В режиме SQL запрос
выглядит так: Товар.Тип, Товар.Производитель, Товар.Характеристика, Товар.Цена,
Товар.Количество, Товар.Цена*Товар.Количество AS [Общая стоимость]Товар;Запрос
на добавление;
Запрос «Сумма покупок клиентов»
Запрос выбирает всех клиентов, совершивших заказ, и выдает информацию о
сумме заказа, о количестве заказанных товаров и о выполнении заказа.
Данный запрос необходим для определения частых клиентов и для
рассмотрения возможности предоставления льгот и скидок постоянным заказчикам.
Для построения запроса данные берутся из таблиц Заказы, Заказанные товары,
Клиенты, Товар.
В режиме SQL запрос
выглядит так: Заказы.Фирма, Заказы.[Дата заказа],
Sum(Заказанные_товары.Количество) AS [Кол-во],
Sum(Заказанные_товары!Количество*Товар!Цена) AS Сумма, Заказы.Выполнен(Клиенты
INNER JOIN Заказы ON Клиенты.Фирма=Заказы.Фирма) INNER JOIN (Товар INNER JOIN
Заказанные_товары ON Товар.Номер=Заказанные_товары.id) ON Заказы.[Код
заказа]=Заказанные_товары.НомерBY Заказы.Фирма, Заказы.[Дата заказа],
Заказы.Выполнен;
«Товар, цена которого больше заданной»
Запрос, позволяющий выбирать товары с наибольшей стоимостью. В запросе
выводятся товары (таблица Товар), у которых цена выше заданной суммы.
Я ввела сумму 14200 и получила результат:
В режиме SQL запрос
выглядит так: Товар.Тип, Товар.Производитель, Товар.Характеристика,
Товар.ЦенаТовар(((Товар.Цена)=[введите цену] Or (Товар.Цена)>[введите
цену]));
Запрос на «Товары с высокой стоимостью»
Запрос делает выборку из таблицы Товар по стоимости товаров и выдает
информацию о 10 наиболее дорогостоящих.
При построении запроса я использовала в режиме SQL предикат TOP10 - вывод на экран первые 10 товаров (без повторения). Помимо цен и
самих товаров, прилагается еще характеристика товара и его фирма-
производитель.
В режиме SQL запрос
выглядит так: TOP 10 Товар.Тип, Товар.Производитель, Товар.Характеристика,
Товар.Цена
FROM ТоварBY Товар.Цена DESC;
Запрос на «Удаление Поставщика»
Данный запрос очень прост, но полезен. Он позволяет удалять из базы
производителя, с которым мы больше не работаем, не открывая таблицы
Производитель_товара.
В режиме SQL запрос
выглядит так: Поставщик_товара.Поставщик,
Поставщик_товара.ПоставщикПоставщик_товара(((Поставщик_товара.Поставщик)=[введите
поставщика]));
Формы создавать достаточно просто. Для этого в режиме «мастер форм»
выбираются значения из таблиц и формируются по усмотрению разработчика базы.
Моя База Данных содержит 11 форм:
Форма «Все заказы».
Простая форма, выводящая все заказы, как выполненные, так и
невыполненные.
Форма «Выборка всех клиентов с введенной буквы»
Это простая форма, которая выводит всех клиентов с введенной буквы и :
· позволяет вносить изменения о клиентах
· позволяет добавлять новых клиентов
Форма «Выполненные заказы товаров»
Тоже достаточно простая форма, предназначенная только для просмотра
выполненных заказов.
Форма «Добавление товаров»
Эта форма позволяет добавлять товары в таблицу Товар. Форма имеет простое
и удобное оформление и предназначена для работников склада. Данная форма
позволяет добавлять новый товар и изменять существующий.
Форма «Заказанные товары и клиенты»
Форма предназначена для просмотра и исправления заказанных товаров и
фирм-клиентов.
Форма «Клиенты и их заказы»
Эта форма позволяет просмотреть и изменить информацию о клиенте и его
заказах.
Форма «Клиенты фирмы».
В этой форме предоставляется информация о клиентах фирмы.
Данные берутся из таблицы Клиенты.
Форма «Общая форма»
В общей форме приведены все свойства товара - тип, производитель и т.п.
Форма «Отчет по производителям товара»
В данной форме при запуске появляется вся информация по производителям
товаров - название фирмы, страна, адрес, телефон.
Форма «Производители товаров»
По содержанию такая же, как и предыдущая, но различается по виду.
.3 Отчеты
Отчеты создаются после построения всех таблиц, форм и запросов. Отчеты
чаще всего являются подведением итогов или обобщением данных. Создавать отчеты
достаточно просто в мастере создания отчетов. Потом вручную (в режиме
конструктора) вводятся выражения (например, Sum), настраивается интерфейс (цвет шрифта, фона и т.п.
).
Отчет по выполненным заказам.
Этот отчет создается в конструкторе и очень удобен в использовании. С его
помощью можно просмотреть заказчика, дату заказа и исполнения заказа,
количество товара и сумму заказа. Также отчет выводит итог по сумме и
количеству всех заказов. Данные будут меняться автоматически в зависимости от
выполнения новых заказов (будут добавляться).
Отчет по заказам.
Этот отчет выдает характеристики заказанных товаров - тип, описание,
производителя, а также условия заказа - кем, в каком количестве и на какую
сумму был произведен заказ. Также подсчитывается общая сумма заказов. Данные
будут меняться автоматически в зависимости от поступления новых заказов (будут
добавляться).
Отчет по клиентам фирмы.
Этот отчет нужен руководителям с целью ознакомления со всеми клиентами
фирмы. Данные будут меняться автоматически в зависимости от появления новых
клиентов (будут добавляться).
.4 Макросы
Для создания макроса надо зайти в режим конструктора макроса и выбрать
макрокоманду (например, «открыть запрос») и внизу, в аргументах макрокоманды,
ввести данные :
Имя таблицы
Режим
Режим данных
Проверяется работа макроса при нажатии ! («запуск»).
ß макросы моей базы данных
Эти макросы служат для:
1. Пометки о выполнении готовых, но еще не вписанных заказов
2. Выхода из базы данных
. Для открытия всех заказов
. Развертывания страницы в полный экран.
Глава IV. Основной интерфейс базы данных
Основным интерфейсом для СУБД MS Access служит
главная кнопочная форма. Для ее открытия надо зайти так:
Сервис à Служебные программы à Диспетчер кнопочных форм.
При загрузке базы данных открывается Кнопочная Форма.
В ней можно:
· Просмотреть список всех имеющихся товаров
· Добавить заказ и обновить список выполненных заказов
· Получить информацию обо всех клиентах фирмы
· Просмотреть список об уже выполненных заказах
· И просмотреть все заказы.
Заключение
Я разработал базы данных торговой фирмы по поставке одежды.
С помощью моей базы можно без затруднений и специальных знаний вести базу
данных, которая позволяет делать все операции с клиентами, заказами,
производителями. То есть добавлять, изменять, обновлять, удалять и
просматривать все имеющиеся и вводимые данные.
Кнопочная форма позволяет просматривать отчеты о клиентах и товарах,
делать заказы и обновлять данные.
На примере моей базы данных для торговой фирмы, я предоставил к
рассмотрению и анализу практически все функции и возможности Microsoft Accsess. Эта программа достаточно проста и удобна в
обращении. Построение таблиц, отчетов, запросов, форм упрощается при
использовании мастеров (форм, таблиц и т.п.).
Я считаю, что база данных в среде СУБД MS Access практическом применении удобна и достаточно
эффективна. Все зависит от пользователя, объема располагаемых им знаний и
умения ими воспользоваться. Говоря о себе, могу сказать, что эта программа
имеет много полезных функций и в дальнейшем мне очень пригодится.