Автор работы: Пользователь скрыл имя, 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
FROM Сотрудник
WHERE ФИО_Сотрудника = @ФИО_Сотрудника)
SELECT *
FROM Сотрудник
WHERE ФИО_Сотрудника = @ФИО_Сотрудника
ELSE
BEGIN
RAISERROR ('Не найдена запись,
соответствующая ФИО сотрудника
WITH NOWAIT
END
6. GetEmplByPass.sql – для поиска сотрудника по его номеру паспорта в таблице «Сотрудник»;
CREATE PROCEDURE GetEmplByPass
@Номер_паспорта_сотрудника nvarchar(15)
AS
IF EXISTS (SELECT Номер_паспорта_сотрудника
FROM Сотрудник
WHERE Номер_паспорта_сотрудника = @Номер_паспорта_сотрудника)
SELECT *
FROM Сотрудник
WHERE Номер_паспорта_сотрудника = @Номер_паспорта_сотрудника
ELSE
BEGIN
RAISERROR ('Не найдена запись,
соответствующая номеру
WITH NOWAIT
END
7. GetGoodsByCode.sql – для поиска товара по его штрихкоду в таблице «Товар»;
CREATE PROCEDURE GetGoodsByCode
@Штрихкод_товара varchar(20)
AS
IF NOT EXISTS (SELECT Штрихкод_товара
FROM Товар
WHERE Штрихкод_товара = @Штрихкод_товара)
BEGIN
RAISERROR ('Не найдена запись, соответствующая штрихкоду товара.', 16, 1)
RETURN 1
END
DECLARE @Код_сервисного_центра int
SET @Код_сервисного_центра = (SELECT Код_сервисного_центра
FROM Товар
WHERE Штрихкод_товара = @Штрихкод_товара)
IF EXISTS (SELECT Код_сервисного_центра
FROM Сервисный_центр
WHERE Код_сервисного_центра = @Код_сервисного_центра)
SELECT Штрихкод_товара,
Название_товара,
Категория,
Описание,
Количество_склад,
Количество_магазин,
Цена,
Срок_гарантии,
Товар.Код_сервисного_центра,
Название_сервисного_центра
FROM Товар INNER JOIN Сервисный_центр
ON Товар.Код_сервисного_центра
= Сервисный_центр.Код_
WHERE Штрихкод_товара = @Штрихкод_товара
ELSE
SELECT *
FROM Товар
WHERE Штрихкод_товара = @Штрихкод_товара
8. GetGoodsByName.sql – для поиска товара по его названию в таблице «Товар»;
CREATE PROCEDURE GetGoodsByName
@Название_товара nvarchar(50)
AS
IF NOT EXISTS (SELECT Название_товара
FROM Товар
WHERE Название_товара = @Название_товара)
BEGIN
RAISERROR ('Не найдена запись, соответствующая названию товара.', 16, 1)
RETURN 1
END
DECLARE @Код_сервисного_центра int
SET @Код_сервисного_центра = (SELECT Код_сервисного_центра
FROM Товар
WHERE Название_товара = @Название_товара)
IF EXISTS (SELECT Код_сервисного_центра
FROM Сервисный_центр
WHERE Код_сервисного_центра = @Код_сервисного_центра)
SELECT Штрихкод_товара,
Название_товара,
Категория,
Описание,
Количество_склад,
Количество_магазин,
Цена,
Срок_гарантии,
Товар.Код_сервисного_центра,
Название_сервисного_центра
FROM Товар INNER JOIN Сервисный_центр
ON Товар.Код_сервисного_центра
= Сервисный_центр.Код_
WHERE Название_товара = @Название_товара
ELSE
SELECT *
FROM Товар
WHERE Название_товара = @Название_товара
9. GetVendorAssort.sql – для поиска поставщиков, предлагающий данный товар, в таблице «Поставщик_Товар»;
CREATE PROCEDURE GetVendorAssort
@Штрихкод_товара varchar(20) = '0'
AS
SELECT Название_поставщика AS Поставщик, Оптовая_цена AS [Цена опт], Количество_в_наличии AS Количество
FROM Поставщик INNER JOIN Поставщик_Товар
ON (Поставщик.Код_поставщика
= Поставщик_Товар.Код_
WHERE Штрихкод_товара = @Штрихкод_товара
10. GetVendorByCode.sql – для поиска поставщика по его коду в таблице «Поставщик»;
CREATE PROCEDURE GetVendorByCode
@Код_поставщика int
AS
IF EXISTS (SELECT Код_поставщика
FROM Поставщик
WHERE Код_поставщика = @Код_поставщика)
SELECT *
FROM Поставщик
WHERE Код_поставщика = @Код_поставщика
ELSE
BEGIN
RAISERROR ('Не найдена запись, соответствующая коду поставщика.', 16, 1)
WITH NOWAIT
END
11. GetVendorByName.sql – для поиска поставщика по его названию в таблице «Поставщик»;
CREATE PROCEDURE GetVendorByName
@Название_поставщика nvarchar(50)
AS
IF EXISTS (SELECT @Название_поставщика
FROM Поставщик
WHERE Название_поставщика = @Название_поставщика)
SELECT *
FROM Поставщик
WHERE Название_поставщика = @Название_поставщика
ELSE
BEGIN
RAISERROR ('Не найдена запись,
соответствующая названию
WITH NOWAIT
END
12. InsertEmpl.sql – для вставки данных в таблицу «Сотрудник»;
CREATE PROCEDURE InsertEmpl
@Номер_паспорта_сотрудника [nvarchar](15),
@ФИО_сотрудника [nvarchar](50),
@Должность [nvarchar](50),
@Дата_рождения [nvarchar](
@Адрес_сотрудника [nvarchar](100),
@Телефон_домашний [varchar](20),
@Телефон_мобильный [varchar](20)
AS
IF ISDATE(@Дата_рождения) = 0
BEGIN
RAISERROR ('Неверное значение даты рождения сотрудника.', 16, 1)
WITH NOWAIT
RETURN 1
END
INSERT INTO [ComputerFirm].[dbo].[Сотрудни
([Номер_паспорта_сотрудника],
[ФИО_сотрудника],
[Должность],
[Дата_рождения],
[Адрес_сотрудника],
[Телефон_домашний],
[Телефон_мобильный])
VALUES
(@Номер_паспорта_сотрудника,
@ФИО_сотрудника,
@Должность,
CONVERT(datetime, @Дата_рождения),
@Адрес_сотрудника,
@Телефон_домашний,
@Телефон_мобильный)
13. InsertGoods.sql – для вставки данных в таблицу «Товар»;
CREATE PROCEDURE InsertGoods
@Штрихкод_товара [nvarchar](50),
@Название_товара [nvarchar](50),
@Категория [varchar](20),
@Описание ntext,
@Количество_склад int,
@Количество_магазин int,
@Цена money,
@Срок_гарантии int,
@Название_сервисного_центра [varchar](50)
AS
IF @Название_сервисного_центра <> '' AND
NOT EXISTS (SELECT Код_сервисного_центра
FROM Сервисный_центр
WHERE Название_сервисного_центра = @Название_сервисного_центра)
BEGIN
RAISERROR ('Не найден Код сервисного центра по переданному названию.', 16, 1)
RETURN 1
END
DECLARE @Код_сервисного_центра int
SET @Код_сервисного_центра = (SELECT Код_сервисного_центра
FROM Сервисный_центр
WHERE Название_сервисного_центра = @Название_сервисного_центра)
INSERT INTO [ComputerFirm].[dbo].[Товар]
(Штрихкод_товара,
Название_товара,
Категория,
Описание,
Количество_склад,
Количество_магазин,
Цена,
Срок_гарантии,
Код_сервисного_центра)
VALUES
(@Штрихкод_товара,
@Название_товара,
@Категория,
@Описание,
@Количество_склад,
@Количество_магазин,
@Цена,
@Срок_гарантии,
@Код_сервисного_центра)
14. InsertVendor.sql – для вставки данных в таблицу «Поставщик»;
CREATE PROCEDURE InsertVendor
@Название_поставщика [nvarchar](50),
@Адрес_поставщика [nvarchar](100),
@Телефон_поставщика [varchar](20)
AS
INSERT INTO [ComputerFirm].[dbo].[Поставщи
([Название_поставщика],
[Адрес_поставщика],
[Телефон_поставщика])
VALUES
(@Название_поставщика,
@Адрес_поставщика,
@Телефон_поставщика)
15. InsertVendorAssort.sql – для вставки данных в таблицу «Поставщик_Товар»;
CREATE PROCEDURE InsertVendorAssort
@Штрихкод_товара [nvarchar](50),
@Название_поставщика [nvarchar](50),
@Оптовая_цена money = 0,
@Количество_в_наличии int = 0
AS
IF NOT EXISTS (SELECT Штрихкод_товара
FROM Товар
WHERE Штрихкод_товара = @Штрихкод_товара)
BEGIN
RAISERROR ('Не найден товар по переданному штрихкоду.', 16, 1)
RETURN 1
END
IF NOT EXISTS (SELECT Код_поставщика
FROM Поставщик
WHERE Название_поставщика = @Название_поставщика)
BEGIN
RAISERROR ('Не найден поставщик по переданному названию.', 16, 1)
RETURN 1
END
DECLARE @Код_поставщика int
SET @Код_поставщика = (SELECT Код_поставщика
FROM Поставщик
WHERE Название_поставщика = @Название_поставщика)
INSERT INTO [ComputerFirm].[dbo].[
(Штрихкод_товара,
Код_поставщика,
Оптовая_цена,
Количество_в_наличии)
VALUES
(@Штрихкод_товара,
@Код_поставщика,
@Оптовая_цена,
@Количество_в_наличии)
16. test.sql – для проверки соединения с базой данных;
CREATE PROCEDURE Test
@param int OUTPUT
AS
SET @param = 1234
17. UpdateEmpl.sql – для обновления данных в таблице «Сотрудник»;
CREATE PROCEDURE UpdateEmpl
(@Номер_паспорта_сотрудника [nvarchar](15),
@ФИО_сотрудника [nvarchar](50),
@Должность [nvarchar](50),
@Дата_рождения [nvarchar](30),
@Адрес_сотрудника [nvarchar](100),
@Телефон_домашний [varchar](20),
@Телефон_мобильный [varchar](20))
AS
BEGIN
IF ISDATE(@Дата_рождения) = 0
BEGIN
RAISERROR ('Неверное значение даты рождения сотрудника.', 16, 1)
WITH NOWAIT
RETURN 1
END
UPDATE [ComputerFirm].[dbo].[Сотрудни
SET [Номер_паспорта_сотрудника] = @Номер_паспорта_сотрудника,
[ФИО_сотрудника] = @ФИО_сотрудника,
[Должность] = @Должность,
[Дата_рождения] = CONVERT(datetime, @Дата_рождения),
[Адрес_сотрудника] = @Адрес_сотрудника,
[Телефон_домашний] = @Телефон_домашний,
[Телефон_мобильный] = @Телефон_мобильный
WHERE
( [Номер_паспорта_сотрудника] = @Номер_паспорта_сотрудника)
END
18. UpdateGoods.sql – для обновления данных в таблице «Товар»;
CREATE PROCEDURE UpdateGoods
(@Штрихкод_товара [nvarchar](50),
@Название_товара [nvarchar](50),
@Категория [varchar](20),
@Описание ntext,
@Количество_склад int,
@Количество_магазин int,
@Цена money,
@Срок_гарантии int,
@Название_сервисного_центра [varchar](50))
AS
BEGIN
IF @Название_сервисного_центра <> '' AND NOT EXISTS (SELECT Код_сервисного_центра
FROM Сервисный_центр
WHERE Название_сервисного_центра = @Название_сервисного_центра)
BEGIN
RAISERROR ('Не найден Код
сервисного центра по переданно
RETURN 1
END
IF (@Штрихкод_товара = NULL)
BEGIN
RAISERROR ('Нельзя изменить еще не существующую запись', 16, 10)
Информация о работе Разработка информационной системы "Компьютерная фирма"