Оглавление Введение ................................................................................................................... 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