Uploaded by solodchenko02

Магазин продуктовый

advertisement
Оглавление
Введение ................................................................................................................... 3
1
Спецификация требований ............................................................................ 13
2 Концептуальное проектирование. Создание ER-модели предметной
области.................................................................................................................... 14
3 Логическое проектирование. Построение и проверка реляционной модели
данных .................................................................................................................... 18
3.1 Исключение из концептуальной модели особенностей несовместимых
с реляционной моделью. ................................................................................... 18
4
3.2
Формирование набора отношений .......................................................... 19
3.3
Определение ограничений целостности ................................................ 21
Физическое проектирование и реализация базы данных в MS SQL Server
22
4.1
Определение состава и структуры таблиц ............................................. 22
4.2
Реализация ограничений целостности ................................................... 25
4.3
Проектирование и разработка пользовательских представлений ....... 26
Заключение ............................................................................................................ 29
2
Введение
Информационная система (ИС) – это любая система, связанная с хранением,
накоплением, поиском и выдачей информации по запросу пользователей.
В настоящее время информационные системы применяются на всех
предприятиях. Это происходит потому, что они позволяют ускорить работу
сотрудников за счет автоматического выполнения рутинных операций,
производить расчеты, предоставлять быстрый и удобный доступ к данным.
Предприятия могут использовать уже готовые программные продукты или
разработать программу на заказ.
В крупном продуктовом магазине целесообразно использовать
информационную систему, т. к. для нормальной работы магазина
необходимо иметь быстрый доступ к данным и возможность их
корректировки. Поиск информации в документах занимает большое
количество времени. Хранение информации в базе данных позволит ускорить
ее поиск, а значит увеличить производительность труда сотрудников.
Я считаю, что ускорить и улучшить работу продуктового магазина сможет
программа, разработанная с использованием Borland Delphi, позволяющая
осуществлять доступ к базе данных, добавление и удаление записей.
Актуальность информационных средств
Улучшение производительности различных предприятий за счет
«Информационных технологий» осуществляется путем оснащения
различных структурных подразделений с различными профессиональными
программными продуктами.
Использование современных информационных технологий в сфере
управления обеспечивает повышение качества экономической информации,
ее точности, объективности и как следствие этого, возможности принятия
своевременных управленческих решений.
3
1 Описание предметной области
Продуктовый магазин является самостоятельной организацией. Организация
и ликвидация продуктового магазина осуществляется с соблюдением
трудового законодательства, коллективного договора и с уведомлением
профсоюзного комитета. Продуктовый магазин подчиняется
непосредственно владельцу магазина согласно утвержденной структурной
схеме управления организацией. Продуктовый магазин возглавляется
управляющим, который назначается на должность и освобождается от
занимаемой должности приказом владельца. Управляющий продуктовым
магазином осуществляет непосредственное руководство деятельностью
магазина и контролирует работу всех сотрудников, устанавливает цены на
товар, заключает договоры на поставки. Поставщик поставляет партию
товаров, товаровед принимает эти товары. Затем грузчики разгружают
продукты. Продавцы выкладывают продукты на полки и вешают ценники.
Покупатель имеет возможность ознакомиться с товаром, взять нужный ему и
пройти на кассу, где кассир считывает штрих-код и выдает покупателю чек.
Также кассир оформляет возврат товара и возвращает деньги.
В продуктовом магазине существуют следующие группы сотрудников:
бухгалтеры
товароведы
кассиры
грузчики
продавцы
Список объектов:
стратегия продаж
запросы потребителя
информация о поставщиках
договоры
план по заказам
4
информация о поставках
цены
спрос
информация о сотрудниках
товар
Список функций:
обеспечение успешной коммерческой деятельности продуктового магазина;
удовлетворение спроса покупателей;
Список вопросов:
Как обеспечить успешную коммерческую деятельность?
Как выбрать надежного поставщика?
Как правильно распределить товар?
Какой товар продавать?
Цель: Создать модель информационной системы для продуктового магазина
для повышения эффективности работы, благодаря правильному выбору
поставщиков, определению товара повышенного спроса, равномерному
распределению товара.
Точка зрения:
владелец магазина
управляющий магазином
кассир
1.1 Функциональная IDEF0 модель с точки зрения управляющего
продуктовым магазином
IDEF0—методология функционального моделирования и графическая
нотация, предназначенная для формализации и описания бизнес-процессов,
представляет организацию как набор модулей [1].
Контекстная диаграмма
5
А0. Декомпозиция контекстной диаграммы
Глоссарий
Прибыль – деньги, которые остаются в магазине после выплаты всех
издержек.
Устав – свод правил, прав и обязательств сотрудников и руководителей.
Санитарно-эпидемиологические нормы – нормы по особенностям хранения
и продажи продовольственных товаров.
Товар – продукты, которые можно продаются в магазине.
Запросы покупателей, спрос – предпочтение покупателем того
или иного товара из соображений соотношения цены и качества.
Сотрудниками являются продавцы, кассиры, товароведы.
Выручка – все деньги, полученные от продажи.
Договор – документ, регулирующий права и обязанности сторон,
заключивших его.
Поставщик – компания, закупающая
товар у производителя и перепродающая его.
Поставка – осуществление доставки товаров поставщиком покупателю.
Транспорт может быть поставщика, магазина, посреднической организации.
Ценовая политика – установка цен, скидок на товары.
2 Разработка информационной модели
6
2.1 ER: диаграмма сущность-связь
ER: диаграмма сущность-связь предназначена для отображения сущностей
предметной области, их атрибутов и связей между ними [2].
Данная ER диаграмма состоит из сущностей: сотрудники, продажа,
поставщик, поставка, продуктовые товары, покупатель.
Рис 1. ER диаграмма
2.1 Диаграмма классов
Диаграмма классов позволяет отобразить статическую структуру
системы продуктового магазина. В ней отображаются классы и их
отношения [3].
В данной диаграмме выделены классы: магазин, сотрудники, продажа,
покупатель, документы, товар, поставка, поставщик.
Рис 2. Диаграмма классов
2.2 Разработка физической модели данных
Разработка физической модели данных подразумевает создание базы данных
с использованием Microsoft Office Access [4].
Была создана база данных «магазин», содержащая следующие таблицы:
Рис3. Таблица сотрудники_торгового_зала
Рис 4. Таблица продажа
Рис 5. Таблица документ
Рис 6. Таблица товары
7
Рис 7. Таблица поставка
Рис 8. Таблица поставщик
Рис 9. Таблица магазины
Рис 10. Таблица Login
Рис 11. Схема данных
3 Разработка программного обеспечения
3.1.Функциональные требования к ПО
Программа должна предоставлять разграниченный доступ сотрудников
к данным и возможность:
8
Управляющему: просматривать все данные по магазину;
Кассиру: вносить изменения в таблицы продажа, товары;
Продавцу: вносить изменения в таблицу товары;
Гостю: просматривать информацию о магазинах и товарах.
3.1.1 Диаграмма прецедентов
Требования
Управляющий продуктовым магазином оформляет документы на поставку
продуктов и на возврат испорченных продуктов, устанавливает цены на
продукты. Сотрудники выставляют товары на витрину
и оформляют продажу. Покупатель имеет возможность ознакомиться с
товаром и сделать покупку, а также вернуть некачественный продукт.
Действующие лица: управляющий магазином, продавец, покупатель.
Представим вышесказанное в виде таблицы.
Таблица 1. Прецеденты и действующие лица.
Прецедент
Действующие лица
Оформление документов на поставку товара Управляющий магазином
Оформление документов на возврат товара Управляющий магазином, кассир
Установка цен на продукты
Управляющий магазином
Выставить товар на витрину
Продавец
Разместить ценники
Продавец
Считывание штрих-кода
Кассир
Выдача кассового чека
Кассир
Оформление покупки
Кассир
На основании данной таблицы можно создать диаграмму:
Рис 12. Диаграмма прецедентов
9
3.2 Нефункциональные требования к ПО
Разработка информационной системы не должна занимать более 6 месяцев;
Информационная система должна быть совместима с ОС WINDOWS 2000,
ME, XP, Vista, 7;
Приложение должно занимать место не жестком диске не более 50 Мб.
Разработка архитектуры ИС
Данная ИС имеет архитектуру «Клиент-сервер», база данных и СУБД
находятся на сервере, а на рабочих станциях находятся клиентские
приложения.
Представим архитектуру в виде диаграммы
10
Рис 13. Архитектура ИС
3.4 Описание пользовательского интерфейса. Диаграмма состояний.
Запуск программы осуществляется двойным щелчком по значку . После
запуска приложения пользователь должен пройти авторизацию.
Пользователь должен заполнить поля «Логин» и «Пароль» и нажать кнопку
«Вход», после этого он получит доступ к БД. При неверном вводе логина и
пароля приложение выдаст соответствующее предупреждение. Нажатие на
кнопку «Гость» позволит любому пользователю просмотреть список
магазинов и товаров. Кнопка «Отмена» закрывает приложение.
Пользовательский интерфейс представлен с использованием
диаграммы последовательностей:
Рис14. Модуль «Авторизация»
Рис 15. Модуль гостя
Рис 16. Модуль управляющего
Рис 17. Модуль кассира
Рис 18. Модуль продавца
11
Интерфейс окна авторизации
Рис 19. Окно авторизации
Представим процесс авторизации в виде диаграммы состояний
Рис 20. Диаграмма состояний процесса авторизации
Затем пользователь получает доступ к информации согласно своей
учетной записи. В зависимости от ограничений по доступу к информации
пользователь может добавлять, обновлять, удалять данные в БД,
осуществлять поиск необходимой информации. Для выполнения какого-либо
действия над БД пользователю необходимо выбрать соответствующий пункт
в главном меню в верхней части окна. В ИС «Продуктовый магазин»
предусмотрены отдельные окна для гостя, управляющего магазина, кассиров
и продавцов.
Рис 21. Интерфейс программы для гостя
Отобразим работу гостя с приложением при помощи диаграммы состояний:
Рис 22. Диаграмма состояний при работе гостя с приложением
Рис 23. Интерфейс программы для управляющего магазином
Рис 24. Выполнение запроса на поиск названия магазина по адресу
Отобразим работу гостя с приложением при помощи диаграммы состояний:
Рис 25. Диаграмма состояний при работе управляющего магазина с
приложением
Рис 26. Интерфейс программы для кассира
Рис 27. Добавление нового документа
12
Диаграмма состояний аналогична диаграмме состояний при работе
управляющего магазина с приложением.
Рис 28. Интерфейс программы для продавца
Рис 29. Удаление записи
Диаграмма состояний аналогична диаграмме состояний при работе
управляющего магазина с приложением.
1 Спецификация требований
Предметной областью базы данных является деятельность магазина
хозтоваров. Описан один основной вид деятельности: Продажа
хозяйственных товаров.
Сформулированы следующие задачи:
1.
2.
3.
4.
5.
Возможность добавления, удаления данных
Учет поставок и сбыта товара
Счет выручки
Определение наиболее успешного менеджера
Хранение всех сведений о товаре
Требования к данным
Информация о поставщике должна содержать следующие атрибуты:
 Наименование фирмы;
 Номер телефона представителя фирмы поставщика;
 Имя и фамилия представителя;
Данная база данных предполагает учет продаж товара, следовательно,
должны фиксироваться следующие данные:
 Дата продажи;
 количество;
 описание товара;
 скидка на товар;
 стоимость продажи;
 менеджер продавший товар.
13
2 Концептуальное проектирование. Создание ER-модели
предметной области
Типы сущностей
Имя типа сущности
manager
sale
saleitem
wares
discount
period
provider
order
orderitem
Ожидаемое
количество
экземпляров
Описание
Содержит список менеджеров
магазина
Учет продаж
Полные сведения о продаже
Описание товаров
Список скидок
Сроки поставок
Список поставщиков и их
представителей
Заказы на поставку товаров
Описание заказов
-
Типы связей
Имя типа связи
Продажа
Продано
Реализовано
Уценено
Доставлено
Установлено
Имена типов
сущностей
manager
sale
sale
saleitem
saleitem
wares
wares
discount
wares
period
period
Кратность
Описание
1:*
1:1
Учет продаж каждого менеджера
1:*
1:1
1:*
1:*
1:1
1:*
1:1
1:1
1:1
Информация о продажах
Информация о реализации товаров
Скидки покупателям
Сроки поставки товаров
Доставки поставщиками
14
Заказано
Поставлено
Приход
provider
1:*
provider
order
order
orderitem
wares
orderitem
1:*
1:1
1:*
1:1
1:*
1:*
Заказы товаров
Информация о заказах
Заказанные товары
15
Выделенные сущности и связи обладают следующими атрибутами:
Атрибуты типов сущностей и типов связей:
Имя типа
сущности\типа
связи
manager
sale
saleitem
wares
discount
period
provider
order
orderitem
Атрибуты
Тип данных
Разрешить
значение Null
Idmanager
целочисленный
Нет
name
phone
Текст
Текст
Нет
Да
Idsale
целочисленный
Нет
Idmanager
целочисленный
Нет
saledate
дата
Да
Idsale
целочисленный
Нет
Idwares
quantity
целочисленный
целочисленный
Нет
Нет
Idwares
целочисленный
Нет
name
description
orderprice
saleprice
текст
текст
целочисленный
целочисленный
Нет
Нет
Нет
Да
Iddiscount
целочисленный
Нет
Iddiscount
целочисленный
Нет
percent
целочисленный
Нет
Номер товара
Количество проданного товара
Уникальный идентификационный
номер товара
Название товара
Полное описание товара
Цена закупки
Цена продажи
Процент скидки на продажу
товара
Уникальный идентификационный
номер скидки
Уровень скидок
Idprovider
целочисленный
Нет
Номер поставщика
Idwares
целочисленный
Нет
day
целочисленный
Нет
Idprovider
целочисленный
Нет
name
agentname
phone
текст
текст
текст
Нет
Нет
Нет
idorder
целочисленный
Нет
Idprovider
целочисленный
Нет
orddate
idorder
Idwares
warescount
дата
целочисленный
целочисленный
целочисленный
Нет
Нет
Нет
Нет
Номер товара
Количество дней за которые товар
доставят
Уникальный идентификационный
номер поставщика
Наименование фирмы поставщика
Имя представителя поставщика
Номер телефона представителя
Уникальный идентификационный
номер заказа
Номер поставщика у которого
сделали заказ
Дата заказа
Номер заказа
Номер заказанного товара
Количество заказанного товара
Описание
Уникальный идентификационный
номер менеджера
Имя менеджера
Телефон заказчика
Уникальный идентификационный
номер продажи
Номер менеджера продавшего
товары
Дата продажи
Уникальный идентификационный
номер продажи
16
Домен атрибута – это набор допустимых значений одного или нескольких
атрибутов. Были определены следующие допустимые значения:
 Для атрибутов quantity, orderprice, day, warescount допустимы только
положительные значения отличные от нуля.
 Для атрибута percent допустимы только значения от 0 до 20
включительно (чтобы скидка не оказалась в убыток магазину).
 Атрибут salecount является вычисляемым столбцом и считается по
формуле: ([orderprice]*(1.3)) (накрутка магазина 30% от закупа)
Определяем первичные ключи для типов сущностей:
Первичный ключ
idmanager
idsale
idwares
iddiscount
idprovider
idorder
Сущность
manager
sale
wares
discount
provider
order
Концептуальная схема
saleitem
quantity
period
1..*
sale
*
Idsale {PK}
saledate
*
day
wares
Idwares {PK}
name
description {Ak}
orderprice
saleprise
Продажа
Idprovider {PK}
name {AK}
agentname
phone {AK}
*
1..1
provider
*
*
1..1
1..1
em nt
u
rit
de sco
or
re
wa
manager
Idmanager {PK}
name
phone {AK}
Iddiscount {PK}
percent {AK}
*
Уценено
discount
Заказано
order
1..*
1..*
-Idorder {PK}
-orddate
17
3 Логическое проектирование. Построение и проверка
реляционной модели данных
3.1 Исключение из концептуальной модели особенностей
несовместимых с реляционной моделью.
В ходе проектирования концептуальной модели были выявлены связи
«многие ко многим». Устранение из концептуальной модели этих связей
можно путем добавления новой сущности saleitem (содержание продаж),
orderitem(содержание заказов), period (сроки доставки)
Имя типа
сущности
Ожидаемое
количество
экземпляров
-
Описание
orderitem
Содержание заказов
saleitem
Содержание продаж
-
period
Сроки доставки
-
period
1..*
sale
Idsale {PK}
saledate
Продажа
day
wares
1..1
Реализовано
1..*
Продано
Idwares {PK}
name
description {Ak}
orderprice
saleprise
1..1
Доставлено
1..1
1..*
Установлено
1..1
1..1
1..1
Приход
Idmanager {PK}
name
phone {AK}
quantity
1..*
1..1
1..1
saleitem
manager
1..*
1..*
provider
Idprovider {PK}
name {AK}
agentname
phone {AK}
orderitem
warescount
1..*
Заказано
Поставлено
Уценено
discount
Iddiscount {PK}
percent {AK}
1..*
order
1..1
1..*
-Idorder {PK}
-orddate
18
3.2 Формирование набора отношений
В процессе концептуального моделирования выявила следующий набор
отношений, необходимого для представления сущностей, связей и атрибутов:
Описание реляционной схемы
manager (idmanager,name,phone)
Первичный ключ idmanager
Альтернативный ключ phone
On INSERT no action
On UPDATE cascade
sale (idsale, idmanager,saledate)
Первичный ключ idsale
On INSERT no action
On UPDATE cascade
saleitem(idsale, idwares, quantity)
Первичный ключ составной idsale, idwares
Внешний ключ idsale ссылается на sale (idsale)
Внешний ключ idwares ссылается на wares (idwares)
wares (idwares, name, description, orderprice, saleprice ,iddiscount)
Первичный ключ idwares
Альтернативный ключ description
Внешний ключ iddiscount ссылается на discount (iddiscount)
On INSERT cascade
On UPDATE cascade
discount (iddiscount, percent)
Первичный ключ iddiscount
Альтернативный ключ percent
On UPDATE cascade
period (idwares, idprovider, day)
Первичный ключ составной idwares, idprovider
Внешний ключ idwares ссылается на wares (idwares)
Внешний ключ idprovider ссылается на provider (idprovider)
provider(idprovider, name, agentname, phone)
Первичный ключ idprovider
Альтернативный ключ name, phone
On INSERT cascade
On UPDATE cascade
19
order (idorder, idprovider, orddate)
Первичный ключ idorder
Внешний ключ idprovider ссылается на provider (idprovider)
orderitem(idorder,idwares,warescount)
Первичный ключ составной idorder, idwares
Внешний ключ idwares ссылается на wares (idwares)
Нормализация - это процесс, позволяющий гарантировать эффективность
структур данных в реляционной базе данных.
Отношения находятся во второй нормальной форме, и соответствуют
требованиям пользовательских транзакций.
Вторая нормальная форма обязана столбцу saleprice, так как он является
вычисляемым столбцом и зависит от другого, неключевого, столбца.
provider
PK
Idprovider
U1
name
agentname
phone
U2
manager
discount
PK
Iddiscount
U1
percent
PK
Idmanager
U1
name
phone
order
PK
Idorder
FK1
Idprovider
orddate
sale
wares
PK
U1
orderitem
PK,FK1
PK,FK2
FK1
PK
Idsale
FK1
Idmanager
saledate
Idwares
name
description
orderprice
saleprice
Iddiscount
Idorder
Idwares
saleitem
PK,FK1
PK,FK2
warescount
Idsale
Idwares
quantity
period
PK,FK1
PK,FK2
Idprovider
Idwares
day
20
3.3 Определение ограничений целостности
Использование несколько проверочных ограничений.
Для таблицы saleitem :
 [quantity]>(0)
Для таблицы wares
 [orderprice]>(0)
Для таблицы discount
 [percent]>=(0)
 [percent]<=(20)
Для таблицы period
 [day]>(0)
Для таблицы orderitem
 [warescount]>(0)
Ограничение уникальности:
Ограничение на уникальность следует использовать в тех случаях, когда
нужно гарантировать, что дублирующие значения будут исключены:
Сущность
Атрибут с
ограничением
уникальности
provider
name
Нет поставщиков с одинаковым
брендом
provider
phone
У представителей не может быть
одинаковых номеров телефона
discount
percent
Бессмысленно вводить одинаковые
скидки
wares
description
manager
phone
Описание
Описания товаров не должны совпадать
У менеджеров не может быть
совпадающих номеров телефона
21
4 Физическое проектирование и реализация базы данных в
MS SQL Server
4.1 Определение состава и структуры таблиц
Информационная система " Магазин электроники и бытовой техники "
была сделана на MS SQL Server.
Создание таблицы discount
CREATE TABLE [dbo].[discount](
[Iddiscount] [int] IDENTITY(1,1) NOT NULL,
[percent] [int] NOT NULL,
CONSTRAINT [PK_discount] PRIMARY KEY CLUSTERED
(
[Iddiscount] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
CONSTRAINT [IX_discount] UNIQUE NONCLUSTERED
(
[percent] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
) ON [PRIMARY]
= OFF, IGNORE_DUP_KEY =
ON [PRIMARY],
= OFF, IGNORE_DUP_KEY =
ON [PRIMARY]
Создание таблицы manager
CREATE TABLE [dbo].[manager](
[Idmanager] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) NOT NULL,
[phone] [nvarchar](16) NULL,
CONSTRAINT [PK_manager] PRIMARY KEY CLUSTERED
(
[Idmanager] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
CONSTRAINT [IX_manager] UNIQUE NONCLUSTERED
(
[phone] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
) ON [PRIMARY]
= OFF, IGNORE_DUP_KEY =
ON [PRIMARY],
= OFF, IGNORE_DUP_KEY =
ON [PRIMARY]
Создание таблицы order
CREATE TABLE [dbo].[order](
[Idorder] [int] IDENTITY(1,1) NOT NULL,
[Idprovider] [int] NOT NULL,
[orddate] [smalldatetime] NOT NULL CONSTRAINT [DF_order_orddate]
DEFAULT (getdate()),
CONSTRAINT [PK_order] PRIMARY KEY CLUSTERED
(
[Idorder] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY =
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
22
Создание таблицы orderitem
CREATE TABLE [dbo].[orderitem](
[Idorder] [int] NOT NULL,
[Idwares] [int] NOT NULL,
[warescount] [int] NOT NULL,
CONSTRAINT [PK_orderitem] PRIMARY KEY CLUSTERED
(
[Idorder] ASC,
[Idwares] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY =
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Создание таблицы period
CREATE TABLE [dbo].[period](
[Idprovider] [int] NOT NULL,
[Idwares] [int] NOT NULL,
[day] [int] NOT NULL,
CONSTRAINT [PK_period] PRIMARY KEY CLUSTERED
(
[Idprovider] ASC,
[Idwares] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY =
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Создание таблицы provider
CREATE TABLE [dbo].[provider](
[Idprovider] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) NOT NULL,
[agentname] [nvarchar](50) NOT NULL,
[phone] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_provider] PRIMARY KEY CLUSTERED
(
[Idprovider] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
CONSTRAINT [IX_provider] UNIQUE NONCLUSTERED
(
[name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
CONSTRAINT [IX_provider_1] UNIQUE NONCLUSTERED
(
[phone] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
) ON [PRIMARY]
= OFF, IGNORE_DUP_KEY =
ON [PRIMARY],
= OFF, IGNORE_DUP_KEY =
ON [PRIMARY],
= OFF, IGNORE_DUP_KEY =
ON [PRIMARY]
23
Создание таблицы sale
REATE TABLE [dbo].[sale](
[Idsale] [int] IDENTITY(1,1) NOT NULL,
[Idmanager] [int] NULL,
[saledate] [smalldatetime] NOT NULL CONSTRAINT [DF_sale_saledate]
DEFAULT (getdate()),
CONSTRAINT [PK_sale] PRIMARY KEY CLUSTERED
(
[Idsale] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY =
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Создание таблицы saleitem
CREATE TABLE [dbo].[saleitem](
[Idsale] [int] NOT NULL,
[Idwares] [int] NOT NULL,
[quantity] [int] NOT NULL,
CONSTRAINT [PK_saleitem] PRIMARY KEY CLUSTERED
(
[Idsale] ASC,
[Idwares] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY =
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Создание таблицы wares
CREATE TABLE [dbo].[wares](
[Idwares] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) NOT NULL,
[description] [nvarchar](100) NOT NULL,
[orderprice] [int] NOT NULL,
[saleprice] AS ([orderprice]*(1.3)),
[Iddiscount] [int] NOT NULL,
CONSTRAINT [PK_wares] PRIMARY KEY CLUSTERED
(
[Idwares] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
CONSTRAINT [IX_wares] UNIQUE NONCLUSTERED
(
[description] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE
OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
) ON [PRIMARY]
= OFF, IGNORE_DUP_KEY =
ON [PRIMARY],
= OFF, IGNORE_DUP_KEY =
ON [PRIMARY]
24
4.2 Реализация ограничений целостности
Обеспечение доменной целостности. Основными инструментами
обеспечения доменной целостности являются ограничения проверки и
значения по умолчанию.
 Использование проверочных ограничений.
Для атрибутов quantity, orderprice, day, warescount допустимы только
положительные значения отличные от нуля. Для атрибута percent допустимы
только значения от 0 до 20 включительно (чтобы скидка не оказалась в
убыток магазину и не была отрицательной).
 Использование значений по умолчанию.
В столбцах saledate в таблице sale и orderdate в таблице order по
умолчанию значение поля date определяется в виде текущей даты.
 Использование вычисляемых столбцов
Столбец salecount является вычисляемым и считается по формуле:
([orderprice]*(1.3)) (накрутка магазина 30% от закупа)
Обеспечение сущностной целостности. Основными инструментами
обеспечения целостности сущностей являются первичные ключи и
ограничения уникальности.
Первичные ключи
Таблица
manager
sale
wares
discount
provider
order
Первичный
ключ
idmanager
idsale
idwares
iddiscount
idprovider
idorder
Ограничения уникальности. Создаем ограничение уникальности для
столбцов:
Таблица
provider
Ограничение
уникальности
name
provider
phone
discount
wares
manager
percent
description
phone
25
4.3 Проектирование и разработка пользовательских представлений
Добавление клиента
Процедура spr_addmanager
create PROCEDURE [dbo].[spr_addmanager]
@Idmanager int OUT,
@name nvarchar(30),
@phone nvarchar(16)
AS
IF EXISTS(SELECT * FROM manager WHERE phone=@phone)
RETURN -100
INSERT manager([name], phone)
VALUES (@name, @phone)
SET @Idmanager = @@IDENTITY
RETURN 0
Вызов процедуры
DECLARE @return_value int,
@Idmanager int
EXEC @return_value = spr_addmanager
@name='Саудов Геннадий',
@phone= '8-960-124-11-11',
@Idmanager = @Idmanager OUTPUT
IF @return_value = 0
BEGIN
PRINT 'Менеджер успешно добавлен'
SELECT @Idmanager as 'Номер менеджера'
END
ELSE
BEGIN
PRINT 'При добавлении произошла ошибка'
END
Удаление менеджера
Процедура spr_delmanager
Create procedure [dbo].[spr_delmanager]
@idmanager int
AS
if not exists (select * from manager where idmanager=@idmanager)
return -100
delete from manager
where idmanager=@idmanager
RETURN 0
Вызов процедуры
DECLARE @return int
EXEC @return = spr_delmanager
@idmanager=5
IF @return = 0
BEGIN
PRINT 'Менеджер успешно удален'
END
ELSE
BEGIN
PRINT 'Во время удаления произошла ошибка'
END
26
Вся информация о товаре
Представление dbo.ALL_info_wares
SELECT
dbo.wares.name AS Наименование, dbo.wares.description AS
Описание, dbo.provider.name AS Поставщик, dbo.wares.orderprice AS [Цена
закупа], dbo.wares.saleprice AS [Цена продажи], dbo.discount.[percent] AS
[Скидка (%)]
FROM dbo.discount INNER JOIN
dbo.wares ON dbo.discount.Iddiscount = dbo.wares.Iddiscount INNER JOIN
dbo.period ON dbo.wares.Idwares = dbo.period.Idwares INNER JOIN
dbo.provider ON dbo.period.Idprovider = dbo.provider.Idprovider
Вызов представления
SELECT *
FROM All_info_wares
Список всех заказов
Представление dbo.orders_info
SELECT TOP (100) PERCENT dbo.wares.name AS Наименовани,
dbo.wares.description AS Описание, dbo.orderitem.warescount AS [Колво],dbo.wares.orderprice AS Цена, dbo.[order].orddate AS Дата
FROM dbo.[order] INNER JOIN
dbo.orderitem ON dbo.[order].Idorder = dbo.orderitem.Idorder INNER JOIN
dbo.wares ON dbo.orderitem.Idwares = dbo.wares.Idwares
ORDER BY dbo.wares.name
Вызов представления
SELECT *
FROM orders_info
Просмотр сроков поставки товаров всех фирм с указание
контактной информации и стоимости товаров
Представление dbo.firms_periods
SELECT
dbo.provider.name AS Фирма, dbo.provider.agentname AS
Представитель, dbo.provider.phone AS Телефон,dbo.wares.name AS [Наименование
товара], dbo.wares.description AS [Описание товара], dbo.wares.orderprice AS
[Цена закупки], dbo.period.day AS [Срок ожидания]
FROM
dbo.provider INNER JOIN
dbo.period ON dbo.provider.Idprovider = dbo.period.Idprovider INNER JOIN
dbo.wares ON dbo.period.Idwares = dbo.wares.Idwares
Вызов представления
SELECT *
FROM firms_periods
27
Поиск продаж по промежутку даты
create procedure [dbo].[spr_salesearch]
@date1 datetime,
@date2 datetime
AS
SELECT w.[name], w.description, s.saledate
FROM wares w, sale s,saleitem si
where s.idsale=si.idsale and si.idwares=w.idwares and saledate BETWEEN
@date1 AND @date2
RETURN
Вызов процедуры
EXEC spr_salesearch
@date1 = '10.06.2011',
@date2 = '01.10.2011'
Сумма выручки за заданный период
Create FUNCTION [dbo].[sum] (@date1 smalldatetime, @date2 smalldatetime)
RETURNS TABLE
AS
return
(
select sum(w.saleprice-(w.saleprice*(d.[percent]*0.01))-w.orderprice)as
'сумма'
from wares w inner join
discount d on w.iddiscount=d.iddiscount inner join
saleitem si on w.idwares=si.idwares inner join
sale s on si.idsale=s.idsale
where (s.saledate >= @date1) and (s.saledate <= @date2)
)
Вызов
select *
from dbo.[sum] ('10.06.2011', '16.10.2011')
Определить лучшего менеджера
create FUNCTION [dbo].[bestmanager]()
returns table
as
return(
select m.[name], count(s.idsale) 'Продажи'
from manager m inner join sale s
on m.idmanager=s.idmanager
group by m.[name]
)
Вызов
select *
from dbo.bestmanager()
order by 'Продажи' desc
28
Заключение
В ходе проекта изучила предметную область информационной системы
магазина электроники и бытовой техники, в ходе проекта решила
следующие задачи:
1. Изучила предметную область информационной системы “ Магазин
хозтоваров ”
 Описала актуальность выполняемого проекта
 Рассмотрела вид деятельности
 Определила требования к данным
2. Создание концептуальной модели, построение ER-модели:
 Определила типы сущностей и типы связей, а также их атрибуты;
 Выявляла потенциальные ключи и выбрала первичный ключ для
каждой сильной сущности.




3. Логическое проектирование. Построение и проверка реляционной
модели данных:
Исключила из концептуальной модели особенностей несовместимых с
реляционной моделью;
Определила набор отношений, необходимого для представления
сущностей, связей и атрибутов, выявленных в процессе
концептуального моделирования;
Проверила отношения с помощью правил нормализации;
Определила ограничение целостности.
4. Физическое проектирование и реализация базы данных в MS SQL
Server :
 Определение состава и структуры таблиц;
 Реализация ограничений целостности;
 Проектирование и разработка пользовательских представлений.
29
Download