Автор работы: Пользователь скрыл имя, 17 Сентября 2012 в 21:25, курсовая работа
Базы данных - совокупность данных, организованная по определенным правилам, предусматривающая общие принципы описания, хранения, манипулирования данными, независимыми от прикладных программ.
СУБД – система управления базами данных – совокупность программ, предназначенных для управления БД и возможности получения пользователями необходимой информации из базы.
I. Введение ........................................................................................................5
II. 1.Создание базы данных ..............................................................................6
1.1 Этапы проектирования базы данных ..................................................6
1.Определение цели создания базы данных.............................................6
2.Определение таблиц, которые должна содержать база данных.......6
3.Присвоение ключевых полей .................................................................7
4.Редактирование структуры базы данных.............................................7
5.Добавление данных и создание других объектов базы данных........7
1.2 Инфологическая модель.......................................................................8
2. Даталогическая модель.............................................................................10
2.1 Структура моей базы данных. Таблицы ...........................................10
2.2 Нормализация .....................................................................................13
2.3 Схема данных ......................................................................................14
3. Создание пользовательского интерфейса ..............................................16
3.1 Запросы ................................................................................................16
3.2 Формы ..................................................................................................25
3.3 Отчеты ..................................................................................................29
3.4 Макросы ...............................................................................................31
4.Основной интерфейс базы данных ...........................................................32
III. Заключение.................................................................................................33
Характеристическая сущность (характеристика) – это связь вида "многие-к-одному" или "одна-к-одной" между двумя сущностями (частный случай ассоциации). Цель характеристики состоит в описании или уточнении некоторой другой сущности предметной области.
Ассоциативная сущность (ассоциация) – это связь вида "многие-ко-многим" между двумя или более сущностями или экземплярами сущности.
Это теория. Для наглядности покажу на примере торговой организации:
Стержневая сущность
«Заказ», «Заказчик», «Поставщик»
Заказ (Заказ, код_заказа, количество, цена, характеристика)
Заказчик (Заказчик, телефон, адрес, название_фирмы)
Поставщик (ФИО, телефон, адрес, страна)
Характеристическая сущность
«Выполненные_заказы», «Заказанные_товары»
Выполненные_заказы (код_заказа, заказчик, дата_заказа, цена, дата_выполнения, количество)
Заказанные_товары (код_товара, количество)
Таблицы
Моя База Данных содержит 7 таблиц:
-Товар
- Производитель_товара
- Описание_товара
- Клиенты
- Заказы
- Заказанные_товары
- Выполненные заказы
Во всех таблицах в режиме конструктора указываются первичные или внешние ключи.
Таблица Товар: предназначена для хранения всех товаров с полным их описанием. Например, кем произведены, по какой цене и в каком количестве.
Номер – номер товара. Поле является счетчиком.
Тип - тип товара. Он берется из таблицы Описание_товара
Производитель – производитель товара. Берется из таблицы производитель_товаров.
Характеристика – поле, где котором содержится описание товара. Данные вводятся вручную в режиме конструктора.
Цена – цена товара за одну единицу. Значение вводится вручную.
Количество – количество товаров. Если значение равно нулю, то товара нет в наличие. Цена вводится от руки. Чтобы систематизировать столбец, надо указать формат поля.
Дата поставки – день, месяц и год поставки товара. Вводится вручную.
Количество проданных товаров – от руки вводится количество товара. Поле заполняется с помощью запроса (заказанные_товары и клиенты)
Таблица Производитель_товара: содержит 4 поля:
Производитель – Поставщик фирма-производитель товара.
Адрес, страна и телефон – более подробная информация. Все поля таблицы заполняются пользователем.
Таблица Описание_товара: состоит из двух полей:
Тип – тип товара (например: шубы, шорты и т.п.)
Описание типа – поле предоставляет более полную информацию о товаре.
Таблица Клиенты: дает описание всех клиентов данной организации.
В таблице указывается ФИО, адрес и телефон клиента.
Таблица Заказы: состоит из четырех полей :
Код заказа – код текущего заказа (тип поля – счетчик)
Фирма – заказчики (представители фирм). Данные берутся из таблицы Клиенты.
Дата заказа – дата поступления заказа, данное поле заполняется автоматически.
Выполнен – Да / Нет. Если в этом поле стоит «галочка», то данный заказ уже выполнен (значение true).
Таблица Заказанные_товары: содержит три поля :
Номер - код заказа.
КодТовара – код данного товара. Берется из таблицы Товар и вводится автоматически.
Количество – количество заказанного товара, которое не должно превышать количество товаров данного типа в таблице Товар.
Таблица Выполненные заказы: содержит шесть полей, заполняется с помощью запроса и дает информацию про выполненные товары.
Код – код выполненного заказа
Фирма – название фирмы-заказчика.
Дата заказа – дата поступления заказа.
Дата выполнения – дата выполнения заказа.
Количество – общее количество заказанных товаров любого типа.
Сумма заказа – стоимость всех товаров в заказе.
2.2 Нормализация
Нормализация — процесс уменьшения избыточности информации в таблицах реляционной БД и, как следствие, построения оптимальной структуры таблиц и связей.
Можно выделить 4 основных правила, которыми следует руководствоваться при проектировании и последующей нормализации таблиц базы данных:
1. Каждое поле любой таблицы должно быть уникальным.
2. Каждая таблица должна иметь уникальный первичный ключ, который может состоять из одного или нескольких полей таблицы.
3. Для каждого значения первичного ключа должно быть одно и только одно значение любого из столбцов данных, и это значение должно относиться к объекту таблицы.
4. Должна иметься возможность изменять значения любого поля (не входящего в первичный ключ), и это не должно повлечь за собой изменение другого поля.
Созданная мною таблица удовлетворяет вышеизложенным требованиям:
1 НФ (Нормальная Форма):
Название таблицы | Ключевое поле |
Товар Производитель_товара Описание_товара Клиенты Заказы Заказанные_товары Выполненные заказы | Номер, Производитель, Характеристика Производитель Тип Фирма Код заказа Id Код заказа |
2 НФ:
выполняются ограничения 1НФ, и каждый не ключевой атрибут функционально полно зависит от составного первичного ключа.
3 НФ:
все неключевые атрибуты отношения взаимно независимы и полностью зависят от первичного ключа.
Таким образом, база данных удовлетворяет всем требованиям нормализации таблиц и Третья нормальная форма – окончательный результат нормализации моей Базы данных.
2.3 Схема данных
Отношения – это правила, поддерживаемые на уровне механизма реализации СУБД. Различают три типа отношений:
- Отношение «один-к-одному»: для каждой строки в одной таблице существует не более одной строки связанной таблицы.
- Отношение «один-ко-многим»: одна таблица не содержит вообще или имеет набор связанных «дочерних» записей из другой таблицы.
- Отношение «многие-ко-многим»: для каждой строки первой таблицы может существовать набор строк в другой таблице и наоборот. Такая связь организуется, как правило, при помощи третьей, связующей таблицы, содержащей значения первичных ключей обеих таблиц в качестве внешних ключей.
При разработке БД необходимо принимать во внимание правила обеспечения целостности данных (обеспечивает каскадное обновление
записей в связанных таблицах)
В моей схеме данных таблицы связаны следующим образом. При добавлении нового товара, продавец выбирает тип (товара), который с помощью мастера подстановки берется из таблицы Описание_товара.
Также продавец выбирает производителя (из таблицы Производитель_товара). Далее он от руки вводит характеристику товара, его цену и количество в таблицу Товар.
При поступлении нового заказа, продавец в таблицу Заказы вводит заказанные товары, нажав на «галочку» в графе «выполнен», а затем выбирает Фирму – заказчика.
Таблица Заказанные товары заполняется автоматически и хранит информацию, которая необходима для таблицы Заказы.
Ниже представлена моя схема данных:
Таблица Выполненные заказы заполняется с помощью запроса, которому не требуются никакие связи, поэтому в данной схеме данных этой таблицы нет.
3. Создание пользовательского интерфейса
3.1 Запросы
В моей БД содержатся 14 запросов всех типов:
запрос на обновление
запрос на удаление
запрос на создание
запрос на выборку.
Ниже я опишу каждый из запросов.
Запрос «Все клиенты»
Данный запрос при выполнении дает информацию обо всех клиентах организации – название фирмы, адрес, телефон и e-mail.
Данные для этого запроса берутся из таблицы Клиенты.
В режиме SQL запрос выглядит так:
SELECT Клиенты.Фирма, Клиенты.Адрес, Клиенты.Телефон, Клиенты.[E-mail]
FROM Клиенты;
Запрос «Выборка по ценам типа товаров»
Данный запрос группирует все записи в таблице Товар по типу товаров и выводит :
максимальную цену товара
минимальную цену товара
общее количество товаров в таблице Товар
При выполнении запрос выглядит так:
Данные для создания запроса берутся из таблицы Товар, а для подсчета максимальной и минимальных цен в режиме SQL вводим данные и с помощью Sum выводятся нужные нам цены.
В режиме SQL запрос выглядит так:
SELECT Товар.Тип, Min(Товар.Цена) AS [Минимальная Цена], Max(Товар.Цена) AS [Максимальная Цена], Sum(Товар.Количество) AS [Общее Кол-во]
FROM Товар
GROUP BY Товар.Тип;
Запрос «Добавление заказа»
Данный запрос добавляет заказы в таблицу Выполненные заказы невыполненные в таблице Заказы. Запрос вносит в эту таблицу следующие данные ФИО клиента, Код заказа и Дату заказа, которые он берет из таблицы Заказы. Этот запрос проверяет, является поле Выполнен (в таблице Заказы) ложным или нет. Если да, то он берет эти данные, и подставляет в таблицу Выполненные заказы. Также в эту таблицу
вставляются данные о том, когда был выполнен заказ, количество товаров, заказанное данным клиентом и сумму покупки.
В режиме SQL запрос выглядит так:
INSERT INTO [Выполненные заказы] ( [Код заказа], Фирма, [Дата заказа], [Дата выполнения], Количество, [Сумма заказа] )
SELECT Заказы.[Код заказа], Заказы.Фирма, Заказы.[Дата заказа], Date() AS [Дата выполнения], Sum(Товар.Количество) AS Количество, Sum(Заказанные_товары!
FROM Заказы INNER JOIN (Товар INNER JOIN Заказанные_товары ON Товар.Номер = Заказанные_товары.[Код товара]) ON Заказы.[Код заказа] = Заказанные_товары.Номер
GROUP BY Заказы.[Код заказа], Заказы.Фирма, Заказы.[Дата заказа], Date(), Заказы.Выполнен
HAVING (((Заказы.Выполнен)=False));
Запрос «Заказанные_товары и клиенты»
Данный запрос при выполнении выводит все заказанные товары, название фирмы – клиента, которая заказала товар, требуемое количество товара и его цену, а также дату поступления заказа на данный товар. Выборка осуществляется только по тем товарам, которые были заказаны хотя бы один раз. А данные для этого запроса находятся в таблицах Заказанные_товары, Клиенты и Товар.
В режиме SQL запрос выглядит так:
SELECT Заказы.Фирма, Товар.Тип, Товар.Производитель, Товар.Характеристика, Товар.Цена, Заказы.[Дата заказа], Товар.Количество
FROM (Клиенты INNER JOIN Заказы ON Клиенты.Фирма=Заказы.Фирма) INNER JOIN (Товар INNER JOIN Заказанные_товары ON Товар.Номер=Заказанные_товары.
«Запрос на Выборку всех клиентов с введенной буквы».
При запуске этого запроса он требует ввести букву или несколько букв, с которых начинается название фирмы – клиента (данные из таблицы Клиенты). Данный запрос довольно прост, но необходим. Например если продавец помнит первую букву или несколько букв, то он запускает данный запрос и вводит, ту букву, которую помнит, а в ответ на введенную букву запрос выводит название всех фирм на указанную букву.
В режиме SQL данный запрос выглядит так :
SELECT Клиенты.Фирма, Клиенты.Адрес, Клиенты.Телефон
FROM Клиенты
WHERE (((Клиенты.Фирма) Like [Введите] & "*"));
«Запрос по типу товара»
Простой запрос, который позволяет выводить товары (из таблицы Товар) по определенному типу. При этом дается описание товара – производитель, характеристика, цена, количество.
Ниже представлен результат выполнения данного запроса при введении товара «Шубы» :
В режиме SQL запрос выглядит так:
SELECT Товар.Тип, Товар.Производитель, Товар.Характеристика, Товар.Цена, Товар.Количество
FROM Товар
WHERE (((Товар.Тип) Like [Введите тип] & "*"));
Запрос на обновление «Обновление заказа».
Запрос, который обновляет количество товаров (в том числе и проданных) в таблице Товар, а также он обновляет поле Выполнен в таблице Заказы. Запрос работает следующим образом: если в таблице Заказы в поле Выполнен есть заказы с ложным значением (False), то данный запрос обновляет все товары, которые содержатся в данном заказе в таблице Товар.
Например : В таблице Заказы есть заказ, состоящий из 5 товаров «Шорты, мини», содержащий название фирмы-заказчика и дату заказа. Данный заказ не выполнен, т.е. в поле Выполнен стоит значение ложь. Запустив запрос «Обновление заказа», происходит следующее: значение выполнен в таблице становится истиной (True), количество имеющихся на складе товаров «Шорты, мини» уменьшается на 5, в то время как количество проданных на столько же увеличивается.
В режиме SQL запрос выглядит так:
UPDATE Заказы INNER JOIN (Товар INNER JOIN Заказанные_товары ON (Товар.Номер = Заказанные_товары.[Код товара]) AND (Товар.Номер = Заказанные_товары.[Код товара])) ON Заказы.[Код заказа] = Заказанные_товары.Номер SET Товар.Количество = Товар.Количество-Заказанные_
WHERE (((Заказы.Выполнен)=False));
Запрос на «Создание таблицы уцененных товаров».
Этот запрос создает новую таблицу с уцененными товарами. Он работает следующим образом :
При запуске запроса необходимо ввести процент уценения товаров, а затем дату. Запрос выбирает все товары, дата поставки которых соответствует введенной дате, и копирует их в новую таблицу Уцененные товары.
Например :
Я запускаю запрос и ввожу процент = 15
и дату 07.01.05. В итоге у меня получается таблица, содержащая 2 записи:
По сравнению с таблицей Товар цены действительно снизились на 15%.
В режиме SQL запрос выглядит так:
Информация о работе Разработка базы данных торговой организации