Разработка информационной системы "Компьютерная фирма"

Автор работы: Пользователь скрыл имя, 11 Марта 2013 в 10:04, курсовая работа

Описание

Целью данного курсового проекта является спроектировать и реализовать на основе клиент/серверных технологий базу данных компьютерной фирмы, а также реализовать все необходимые для поиска и работы с компьютерными комплектующими запросы и отчеты.

Содержание

Введение
4
1 Техническое задание
5
1.1 Анализ предметной области
5
1.2 Постановка задачи
13
2 Технический проект информационной системы
14
2.1 Функциональная модель
14
2.1.1 Контекстная диаграмма и диаграммы детализации процессов
14
2.1.2 Диаграмма дерева узлов
20
2.2 Информационная модель
21
2.2.1 Идентификация сущностей и связей. ER-диаграмма логического уровня
21
2.2.2 ER-диаграмма физического уровня. Ограничения ссылочной целостности. Определение триггеров
24
2.2.3 Определение представлений, хранимых процедур серверной компоненты
28
2.3 Верификация спроектированной логической модели
30
3 Реализация системы
38
3.1 T-SQL-определения регламентированных запросов
38
3.2 T-SQL-определения триггеров
40
3.3 T-SQL-определения хранимых процедур
44
3.4 T-SQL-определения курсоров
58
3.5 Описание клиентских приложений
59
4 Результат тестирования информационной системы
90
Заключение
91
Список использованных источников
92

Работа состоит из  1 файл

3Пример-Компьютерная фирма.doc

— 1.27 Мб (Скачать документ)

 

2.3 Верификация спроектированной логической модели

После разработки информационной модели ее следует связать  с функциональной моделью. Такая связь гарантирует завершенность анализа, гарантирует, что есть источники данных (сущности) для всех работ. Связывание моделей способствует согласованности, корректности и завершенности анализа. Стрелки в функциональной модели обозначают некоторую информацию, использующуюся в моделируемой системе. В информационной модели на логическом уровне информация изображается в виде сущностей. Сущности состоят из совокупностей экземпляров сущностей (кортежи отношений). К информационной модели предъявляется требование нормализации, что должно обеспечить компактность и непротиворечивость хранения данных. Информация, которая моделируется одной стрелкой в функциональной модели, может содержаться в нескольких сущностях и атрибутах информационной модели. На функциональной модели могут присутствовать различные стрелки, изображающие одни и те же данные. Информация о таких стрелках находится в одних и тех же сущностях. Следовательно, одной и той же стрелке в функциональной модели могут соответствовать несколько сущностей в информационной модели и, наоборот, одной сущности может соответствовать несколько стрелок.

Работы в  функциональной модели могут создавать или изменять данные, которые соответствуют входящим и выходящим стрелкам. Они могут воздействовать как целиком на сущности (создавая и модифицируя экземпляры сущности), так и на отдельные атрибуты сущности.

 

Таблица 1 – Отчет о верификации модели

Arrow Name

Entity Name

Attribute Name

Ассортимент товаров  у поставщиков

Поставщик_Товар

Код_поставщика

   

Количество_в_наличии

   

Количество_заказано

   

Оптовая_цена

   

Штрихкод_товара

Гарантийный талон

Гарантийный_талон

Дата_время

   

Код_гарантийного_талона

   

Код_сотрудника

 

Серийный_номер

Код_гарантийного_талона

   

Серийный_номер_экземпляра

   

Штрихкод_товара

 

Сотрудник

Код_сотрудника

   

ФИО_сотрудника

 

Товар

Название_товара

   

Срок_гарантии

   

Штрихкод_товара

График работы сервисных центров

Сервисный_центр

График_работы

   

Код_сервисного_центра

Договор о покупке  товара в кредит

Клиент

Адрес_клиента

   

Дата_рождения

   

Код_клиента

   

Номер_паспорта

   

Телефон_домашний

   

Телефон_мобильный

   

ФИО_клиента

 

Кредитный_договор

Ежемесячная_выплата

   

Код_договора

   

Код_клиента

   

Первоначальный_взнос

   

Срок_оплаты

 

Продажа

Код_гарантийного_талона

   

Код_договора

   

Количество

   

Тип_оплаты

   

Цена

   

Штрихкод_товара

 

Товар

Категория

   

Название_товара

   

Срок_гарантии

   

Штрихкод_товара

Журнал гарантийного обслуживания

Гарантийный_журнал

Дата_время

   

Код_направления_на_замену

   

Примечание

   

Серийный_номер_экземпляра

   

Статус_обслуживания

   

Штрихкод_товара

Журнал продаж

Гарантийный_талон

Дата_время

   

Код_гарантийного_талона

 

Продажа

Код_гарантийного_талона

   

Код_договора

   

Количество

   

Тип_оплаты

   

Цена

   

Штрихкод_товара

Завозимые товары

Товар

Количество_требуется_в_магазине

   

Штрихкод_товара

Заказанная конфигурация

Поставщик_Товар

Код_поставщика

   

Количество_заказано

   

Штрихкод_товара

Закон РБ "О ЦЕНООБРАЗОВАНИИ"

Поставщик_Товар

Оптовая_цена

 

Товар

Цена

Имеющиеся товары

Товар

Категория

   

Код_сервисного_центра

   

Количество_магазин

   

Количество_склад

   

Название_товара

   

Описание

   

Срок_гарантии

   

Цена

   

Штрихкод_товара

Информация о гарантийном талоне

Гарантийный_талон

Дата_время

   

Код_гарантийного_талона

   

Код_сотрудника

Информация о доступных  товарах

Товар

Количество_магазин

   

Название_товара

   

Штрихкод_товара

Информация о доступных  товарах и их местонахождении

Товар

Категория

   

Код_сервисного_центра

   

Количество_магазин

   

Количество_склад

   

Название_товара

   

Описание

   

Срок_гарантии

   

Цена

   

Штрихкод_товара

Информация о клиентах

Клиент

Адрес_клиента

   

Дата_рождения

   

Код_клиента

   

Номер_паспорта

   

Телефон_домашний

   

Телефон_мобильный

   

ФИО_клиента

Информация о клиенте

Клиент

Адрес_клиента

   

Дата_рождения

   

Код_клиента

   

Номер_паспорта

   

Телефон_домашний

   

Телефон_мобильный

   

ФИО_клиента

Информация о количестве завозимых товаров

Товар

Количество_магазин

   

Количество_склад

   

Количество_требуется_в_магазине

   

Название_товара

   

Штрихкод_товара

Информация о местонахождении товаров

Товар

Категория

   

Код_сервисного_центра

   

Количество_магазин

   

Количество_склад

   

Количество_требуется_в_магазине

   

Название_товара

   

Описание

   

Срок_гарантии

   

Цена

   

Штрихкод_товара

Информация о наценках на товары

Товар

Цена

   

Штрихкод_товара

Информация о покупке

Продажа

Количество

   

Тип_оплаты

   

Цена

   

Штрихкод_товара

Информация о поставщиках

Поставщик

Адрес_поставщика

   

Код_поставщика

   

Название_поставщика

   

Телефон_поставщика

Информация о сервисных  центрах

Сервисный_центр

Адрес

   

График_работы

   

Код_сервисного_центра

   

Название_сервисного_центра

   

Телефон

Информация о собранной  конфигурации

Товар

Категория

   

Количество_магазин

   

Количество_склад

   

Название_товара

   

Штрихкод_товара

Информация о сотрудниках

Сотрудник

Адрес_сотрудника

   

Дата_рождения

   

Код_сотрудника

   

Телефон_домашний

   

Телефон_мобильный

   

ФИО_сотрудника

Информация о сотруднике, выдавшем товар

Сотрудник

Код_сотрудника

   

ФИО_сотрудника

Информация о товаре, выданном на замену по гарантии

Продажа

Код_гарантийного_талона

   

Количество

   

Тип_оплаты

   

Цена

   

Штрихкод_товара

Информация по проданных товарах за период

Гарантийный_талон

Дата_время

   

Код_гарантийного_талона

 

Кредитный_договор

Ежемесячная_выплата

   

Код_договора

   

Первоначальный_взнос

   

Срок_оплаты

 

Продажа

Код_гарантийного_талона

   

Код_договора

   

Количество

   

Тип_оплаты

   

Цена

   

Штрихкод_товара

Клиентские заказы

Поставщик_Товар

Код_поставщика

   

Количество_заказано

   

Штрихкод_товара

Навый заказ

Поставщик_Товар

Код_поставщика

   

Количество_заказано

   

Штрихкод_товара

Направление на замену товара по гарантии

Гарантийный_журнал

Дата_время

   

Код_направления_на_замену

   

Примечание

   

Серийный_номер_экземпляра

   

Статус_обслуживания

   

Штрихкод_товара

Новая заявка

Гарантийный_журнал

Дата_время

   

Код_направления_на_замену

   

Примечание

   

Серийный_номер_экземпляра

   

Статус_обслуживания

   

Штрихкод_товара

Новые товары

Товар

Категория

   

Код_сервисного_центра

   

Количество_магазин

   

Количество_склад

   

Количество_требуется_в_магазине

   

Название_товара

   

Описание

   

Срок_гарантии

   

Цена

   

Штрихкод_товара

Новые цены/наценки

Товар

Цена

   

Штрихкод_товара

Номер гарантийного талона

Продажа

Код_гарантийного_талона

Номер договора

Продажа

Код_договора

Оптовые заказы

Поставщик_Товар

Код_поставщика

   

Количество_заказано

   

Штрихкод_товара

Оптовые цены поставщиков

Поставщик_Товар

Оптовая_цена

   

Штрихкод_товара

Отчет по продажам за указанный  период

Гарантийный_талон

Дата_время

   

Код_гарантийного_талона

 

Кредитный_договор

Ежемесячная_выплата

   

Код_договора

   

Первоначальный_взнос

   

Срок_оплаты

 

Продажа

Код_гарантийного_талона

   

Код_договора

   

Количество

   

Тип_оплаты

   

Цена

   

Штрихкод_товара

Плановые оптовые заказы товаров

Поставщик_Товар

Код_поставщика

   

Количество_заказано

   

Штрихкод_товара

Прайс-лист

Товар

Категория

   

Код_сервисного_центра

   

Количество_магазин

   

Количество_склад

   

Название_товара

   

Описание

   

Срок_гарантии

   

Цена

   

Штрихкод_товара

Серийные номера купленных товаров

Серийный_номер

Код_гарантийного_талона

   

Серийный_номер_экземпляра

   

Штрихкод_товара

Список завозимых в  магазин товаров

Товар

Количество_требуется_в_магазине

   

Штрихкод_товара

Статистическая диаграмма спроса на товары

Гарантийный_талон

Дата_время

   

Код_гарантийного_талона

 

Продажа

Код_гарантийного_талона

   

Количество

   

Цена

   

Штрихкод_товара

Статус заявки

Гарантийный_журнал

Дата_время

   

Код_направления_на_замену

   

Примечание

   

Серийный_номер_экземпляра

   

Статус_обслуживания

   

Штрихкод_товара

Требования, пожелания  клиентов при формировании заказа

Товар

Категория

   

Название_товара

   

Описание

   

Срок_гарантии

Шаблоны конфигураций компьютера

Готовое_решение

Код_конфигурации

   

Название_конфигурации


 

3 Реализация системы

3.1 T-SQL-определения регламентированных запросов

1. Информация обо всех номерах паспортов клиентов.

CREATE VIEW GetAllClientPass

AS

SELECT Номер_паспорта_клиента

FROM Клиент

ORDER BY Номер_паспорта_клиента  ASC

2. Информация обо всех полных именах сотрудников (ФИО).

CREATE VIEW GetAllEmplFIO

AS

SELECT ФИО_сотрудника

FROM Сотрудник

ORDER BY ФИО_сотрудника ASC

3. Информация обо всех номерах паспортов сотрудников.

CREATE VIEW GetAllEmplPass

AS

SELECT Номер_паспорта_сотрудника

FROM Сотрудник

ORDER BY Номер_паспорта_сотрудника ASC

4. Информация обо всех различных должностях сотрудников.

CREATE VIEW GetAllEmplPost

AS

SELECT DISTINCT Должность

FROM Сотрудник

ORDER BY Должность ASC

5. Информация обо всех категориях товаров, имеющихся на данный момент в базе.

CREATE VIEW GetAllGoodsCategories

AS

SELECT DISTINCT Категория

FROM Товар

ORDER BY Категория ASC

6. Информация обо всех штрихкодах товаров имеющихся на данный момент в базе.

CREATE VIEW GetAllGoodsCodes

AS

SELECT Штрихкод_товара

FROM Товар

ORDER BY Штрихкод_товара ASC

7. Информация обо всех названиях товаров имеющихся на данный момент в базе.

CREATE VIEW GetAllGoodsCodes

AS

SELECT Штрихкод_товара

FROM Товар

ORDER BY Штрихкод_товара ASC

8. Информация обо всех типах оплаты товара при продаже.

CREATE VIEW GetAllGoodsCategories

AS

SELECT DISTINCT Категория

FROM Товар

ORDER BY Категория ASC

9. Информация обо всех кодах направлений на замену товара по гарантии.

CREATE VIEW GetAllReplacementCodes

AS

SELECT DISTINCT Код_направления_на_замену

FROM Гарантийный журнал

WHERE Код_направления_на_замену <> NULL

ORDER BY Код_направления_на_замену ASC

10. Информация обо всех названиях сервисных центров.

CREATE VIEW GetAllServiceNames

AS

SELECT Название_сервисного_центра

FROM Сервисный_центр

ORDER BY Название_сервисного_центра ASC

11. Информация обо всех названиях поставщиков.

CREATE VIEW GetAllVendorNames

AS

SELECT Название_поставщика

FROM Поставщик

ORDER BY Название_поставщика ASC

 

 

3.2 T-SQL-определения триггеров

1. tIU_Empl срабатывает при вставке или обновлении записи в таблице «Сотрудник». Он проверяет на корректность вставленные поля таблицы. В случае ошибки записи изменены не будут.

CREATE TRIGGER tIU_Empl

ON Сотрудник

FOR INSERT, UPDATE

AS

BEGIN

IF EXISTS (SELECT Номер_паспорта_сотрудника FROM inserted WHERE Номер_паспорта_сотрудника = '')

BEGIN 

RAISERROR ('Введите номер паспорта сотрудника', 16, 10)

ROLLBACK TRANSACTION

END

ELSE

IF EXISTS (SELECT ФИО_сотрудника FROM inserted WHERE ФИО_сотрудника = '')

BEGIN 

RAISERROR ('Введите ФИО сотрудника', 16, 10)

ROLLBACK TRANSACTION

END

ELSE

IF EXISTS (SELECT Должность FROM inserted WHERE Должность  = '')

BEGIN 

RAISERROR ('Введите дожность сотрудника', 16, 10)

ROLLBACK TRANSACTION

END

ELSE

IF EXISTS (SELECT Дата_рождения FROM inserted WHERE Дата_рождения IS NULL)

BEGIN 

RAISERROR ('Введите дату рождения сотрудника', 16, 10)

ROLLBACK TRANSACTION

END

END

2. tIU_Service срабатывает при вставке или обновлении записи в таблице «Сервисный_центр». Он проверяет на корректность вставленные поля таблицы . В случае ошибки записи изменены не будут.

CREATE TRIGGER tIU_Service

ON Поставщик

FOR INSERT, UPDATE

AS

BEGIN

IF EXISTS (SELECT Код_сервисного_центра FROM inserted WHERE Код_сервисного_центра = NULL)

BEGIN 

RAISERROR ('Код сервисного центра не может быть нулевым', 16, 10)

ROLLBACK TRANSACTION

END

ELSE

IF EXISTS (SELECT Название_сервисного_центра FROM inserted WHERE Название_сервисного_центра = '')

BEGIN 

RAISERROR ('Введите название сервисного центра, 16, 10)

ROLLBACK TRANSACTION

END

 

END

3. tIU_Goods срабатывает при вставке или обновлении записи в таблице «Товар». Он проверяет на корректность вставленные поля таблицы . В случае ошибки записи изменены не будут.

CREATE TRIGGER tIU_Goods

ON Товар

FOR INSERT, UPDATE

AS

BEGIN

IF EXISTS (SELECT Штрихкод_товара FROM inserted WHERE Штрихкод_товара = '')

BEGIN 

RAISERROR ('Введите штрихкод  товара', 16, 10)

ROLLBACK TRANSACTION

END

ELSE

IF EXISTS (SELECT Название_товара FROM inserted WHERE Название_товара = '')

BEGIN 

RAISERROR ('Введите название  товара', 16, 10)

ROLLBACK TRANSACTION

END

ELSE

IF EXISTS (SELECT Категория FROM inserted WHERE Категория = '')

BEGIN 

RAISERROR ('Введите категорию товара', 16, 10)

ROLLBACK TRANSACTION

END

END

4. tIU_Vendor срабатывает при вставке или обновлении записи в таблице «Поставщик». Он проверяет на корректность вставленные поля таблицы . В случае ошибки записи изменены не будут.

CREATE TRIGGER tIU_Vendor

ON Поставщик

FOR INSERT, UPDATE

AS

BEGIN

IF EXISTS (SELECT Код_поставщика FROM inserted WHERE Код_поставщика = NULL)

BEGIN 

RAISERROR ('Код поставщика  не может быть нулевым', 16, 10)

ROLLBACK TRANSACTION

END

ELSE

IF EXISTS (SELECT Название_поставщика FROM inserted WHERE Название_поставщика = '')

BEGIN 

RAISERROR ('Введите название  поставщика', 16, 10)

ROLLBACK TRANSACTION

END

 

END

5. tD_GoodsOwner проверяет права на удаление пользователем записи из таблицы «Товар». Если пользователь не является владельцем базы данных, то прав на удаление он не имеет. Запись удалена не будет;

CREATE TRIGGER tD_GoodsOwner 

ON Товар

FOR  DELETE

AS

IF (CURRENT_USER <> 'dbo')

BEGIN 

RAISERROR ('у вас нет прав на удаление этой записи', 16, 1)

ROLLBACK TRANSACTION 

END

 

 

 

3.3 T-SQL-определения хранимых процедур

1. DeleteEmpl.sql  – для удаления данных из таблицы «Сотрудник»;

CREATE PROCEDURE DeleteEmpl

@Номер_паспорта_сотрудника nvarchar(15)

AS

IF EXISTS (SELECT Номер_паспорта_сотрудника 

   FROM   Сотрудник 

   WHERE Номер_паспорта_сотрудника =  @Номер_паспорта_сотрудника) 

DELETE

FROM Сотрудник

WHERE Номер_паспорта_сотрудника =  @Номер_паспорта_сотрудника

ELSE

BEGIN

RAISERROR ('Не найдена запись, соответствующая номеру паспорта.', 16, 1)

WITH NOWAIT

END

2. DeleteGoods.sql  – для удаления данных из таблицы «Товар»;

CREATE PROCEDURE DeleteGoods

@Штрихкод_товара varchar(20)

AS

IF NOT EXISTS (SELECT Штрихкод_товара

   FROM   Товар

   WHERE Штрихкод_товара =  @Штрихкод_товара) 

BEGIN

RAISERROR ('Не найдена запись, соответствующая коду товара.', 16, 1)

RETURN 1

END

 

IF EXISTS (select * from Поставщик_Товар, Товар

where

        Поставщик_Товар.Штрихкод_товара = Товар.Штрихкод_товара) 

BEGIN

RAISERROR ('Нельзя удалить  товар, т.к. ассортимент поставщиков не пуст.', 16, 1)

RETURN 1

END

 

DELETE

FROM Товар

WHERE Штрихкод_товара =  @Штрихкод_товара

3. DeleteVendor.sql  – для удаления данных из таблицы «Поставщик»;

CREATE PROCEDURE DeleteVendor

@Код_поставщика int

AS

IF EXISTS (SELECT Код_поставщика

   FROM   Поставщик

   WHERE Код_поставщика =  @Код_поставщика) 

DELETE

FROM Поставщик

WHERE Код_поставщика =  @Код_поставщика

ELSE

BEGIN

RAISERROR ('Не найдена запись, соответствующая  коду поставщика.', 16, 1)

WITH NOWAIT

END

4. DeleteVendorAssort.sql  – для удаления данных из таблицы «Поставщик_Товар»;

CREATE PROCEDURE DeleteVendorAssort

@Штрихкод_товара [nvarchar](50),

@Название_поставщика [nvarchar](50)

AS

DECLARE @Код_поставщика int

SET @Код_поставщика = (SELECT Код_поставщика

   FROM  Поставщик

   WHERE Название_поставщика =  @Название_поставщика)

IF EXISTS (SELECT Код_поставщика, Штрихкод_товара 

   FROM   Поставщик_Товар 

   WHERE Штрихкод_товара = @Штрихкод_товара AND

Код_поставщика = @Код_поставщика) 

DELETE

FROM Поставщик_Товар

WHERE Штрихкод_товара = @Штрихкод_товара AND

Код_поставщика = @Код_поставщика

ELSE

BEGIN

RAISERROR ('Не найдена запись, соответствующая переданному названиею поставщика и штрихкоду товара.', 16, 1)

WITH NOWAIT

END

5. GetEmplByFIO.sql  – для поиска сотрудника по его полному имени в таблице «Сотрудник»;

CREATE PROCEDURE GetEmplByFIO

@ФИО_Сотрудника nvarchar(50)

AS

IF EXISTS (SELECT ФИО_Сотрудника

Информация о работе Разработка информационной системы "Компьютерная фирма"