Заполнение базы данных тестовыми данными — КиберПедия 

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Заполнение базы данных тестовыми данными

2017-06-29 391
Заполнение базы данных тестовыми данными 0.00 из 5.00 0 оценок
Заказать работу

 

Для корректной работы базы данных необходимо заполнить её тестовыми данными.

1. Заполнение таблицы «Сотрудники» тестовыми данными.

INSERT СОТРУДНИКИ

(ОтделID, Фамилия, Имя, Отчество, Должность, Зарплата, Премия, Датаприеманаработу, Семейноеположение, Датарождения, Адрес, Телефон)

VALUES

(1,'Перминов', 'Алексей', 'Владимирович', 'Менеджер по продажам', 20000, 5000, GETDATE(),'Женат', '01/10/1990','Зянкина 9', '(953)1416433'),

(2,'Туманов', 'Георгий', 'Викторович', 'Менеджер по продажам', 20000, 5000, GETDATE(),'Женат', '04/10/1990','Воровского 29', '(912)4533554'),

(1,'Кочуров', 'Дмитрий', 'Николаевич', 'Системный администратор', 26000, 7000, GETDATE(),'Женат', '04/10/1990','Пугачева 29', '(951)7433545')GO

 

2. Заполнение таблицы «Покупатели» тестовыми данными.

INSERT ПОКУПАТЕЛИ

(Фамилия, Имя, Отчество, Адрес, Город, Телефон, Дата_регистрации)

VALUES

('Савиных','Викторович','Павлович','Труда 21а, 137','Киров','(912)3569385',DATEADD(DAY, -85, GETDATE())),

('Васильева','Алефтина','Генадьевна','Мопра 3а, 12','Пермь','(922)4622225',DATEADD(DAY, -35, GETDATE()))

GO

 

3. Заполнение таблицы «Товары» тестовыми данными.

INSERT ТОВАРЫ

(Название)

VALUES

('Коптильня дымка'), ('Коптильня ханхи'), ('Пивоварня Золингер'), ('Шампура столичные'), ('Дымогенератор дымка')

GO

 

4. Заполнение таблицы «Детали товара» тестовыми данными.

INSERT ДЕТАЛИТОВАРА

(ID, Цвет, материал, текстовоеописание)

VALUES

(1, 'Серый', 'Нержавеющая сталь','Коптильня преднозначена для горячего копчения'),

(2, 'Черный', 'Черная сталь','Коптильня преднозначена для горячего копчения'),

(3, 'Белый', 'Черная сталь','Пивоварня преднозначена для изготовления пивного сусла'),

(4, 'Стальной', 'Черная сталь','Шампура преднозначены для любителей отдыха на природе'),

(5, 'Стальной', 'Черная сталь','Дымогенератор преднозначен для производства дыма при холодном копчении для ')

GO

 

5. Заполнение таблицы «Склад» тестовыми данными.

INSERT СКЛАД

(ТоварID, Количество)

VALUES

(1, 20), (2, 10), (3, 7), (4, 8), (5, 9)

GO

 

6. Заполнение таблицы «Заказы» тестовыми данными.

INSERT ЗАКАЗЫ

(СотрудникID, ПокупательID, Датаоформления)

VALUES

(22,2, DATEADD(DAY, -85, GETDATE())), (24,1, DATEADD(DAY, -85, GETDATE()))

GO

 

7. Заполнение таблицы «Детали заказа» тестовыми данными.

INSERT ДЕТАЛИЗАКАЗА

(ЗаказID, Количествопозиций, ТоварID, Количествопродонного, Цена)

VALUES

(4,2,1,1,295), (5,1,2,1,445)

GO

 

8. Заполнение таблицы «Отдел» тестовыми данными.

INSERT ОТДЕЛ

(ID, Названиеотдела)

VALUES

(1, 'ОТДЕЛ ПРОДАЖ'), (2, 'ОТДЕЛ ПОДДЕРЖКИ')

GO

 

После выполнение вышеуказанных команд, сформируется готовая к работе база данных интернет-магазина. Чтобы просмотреть внесенные данные, необходимо выполнить следующие команду:

 

Выполнение команды на вывод таблиц: «СОТРУДНИКИ» «Покупатели», «Склад», «Отдел», «Заказы», «Детализаказа», «Товары», «Деталитовара».

 

SELECT * FROM СОТРУДНИКИ

SELECT * FROM ПОКУПАТЕЛИ

SELECT * FROM СКЛАД

SELECT * FROM ОТДЕЛ

SELECT * FROM ЗАКАЗЫ

SELECT * FROM ДЕТАЛИЗАКАЗА

SELECT * FROM ТОВАРЫ

SELECT * FROM ДЕТАЛИТОВАРА

Эта команда позволит вывести на экран пользователя все созданные таблицы с заполненными данными (см. рис. 3).

Рис.3. Таблицы с заполненными данными

 

 

Создание логических триггеров

 

С помощью триггеров можно проводить “каскадное” изменение данных в связанных таблицах, что обеспечит ссылочную целостность данных в базе.

Создадим триггер, который позволит удалять товар из таблицы товары, только при условии, что его нет в заказах и остаток на складе нулевой.

 

Создание триггера, с помощью которого можно удалить товар с условиями.

 

CREATE TRIGGER УДАЛЕНИЯПРОДУКТА

ON ТОВАРЫ

INSTEAD OF DELETE

AS

IF @@ROWCOUNT = 0

RETURN

 

SET NOCOUNT ON

 

IF EXISTS (SELECT 1 FROM ДЕТАЛИЗАКАЗА od

JOIN deleted d

ON od.ТоварID = d.ID)

RAISERROR('Товар не может быть удален т.к. стоит в заказах', 10, 1)

ELSE IF EXISTS (SELECT 1 FROM СКЛАД s

JOIN deleted d

ON s.ТоварID = d.ID

WHERE s.Количество <> 0)

RAISERROR('Товар не может быть удален т.к. есть остаток на складе', 10, 2)

ELSE

DELETE ТОВАР WHERE ID IN (SELECT ID FROM deleted)

GO

Эта команда создаст триггер, который удаляет товары из таблицы товары, с условиями:

· удаляемый товар отсутствует в заказах;

· остаток товара на складе нулевой.

 

Создание запросов

 

Запросы − это объект базы данных, который служит для извлечения данных из таблиц и предоставления их пользователю в удобном виде. Особенность запросов состоит в том, что они черпают данные из базовых таблиц и создают на их основе временную таблицу. Применение запросов позволяет избежать дублирования данных в таблицах и обеспечивает максимальную гибкость при поиске и отображении данных в базе данных [10].

1. Создание запроса, с помощью которого можно вывести информацию о заказах.

 

SELECT c.Фамилия +' '+ c.Имя +' '+c.Отчество AS 'Заказы',

o.СотрудникID Сотрудники, Датаоформления, p.НАЗВАНИЕ, pd.Текстовоеописание, od.Цена

FROM Покупатели c INNER JOIN Заказы o

ON c.ID = o.ПокупательID

INNER JOIN Детализаказа od

ON o.ID = od.ЗаказID

INNER JOIN ТОВАРЫ p

ON od.ТоварID = p.ID

INNER JOIN Деталитовара pd

ON p.ID = pd.ID

WHERE o.СотрудникID is NULL;

 

Эта команда создаст запрос, который выводит информацию о заказах, в которых клиенты, сделали заказ без помощи консультанта.

 

2. Создание запроса, с помощью которого можно вывести все продажи за последние два месяца в хронологическом порядке.

 

SELECT Датаоформления, c.Имя +' '+ c.Фамилия +' '+ c.Отчество AS Покупатели,

p.Название, pd.ТоварID, od.Количествопродонного, od.Цена

FROM Покупатели c

INNER JOIN ЗАКАЗЫ o

ON c.ID = o.ПокупательID

INNER JOIN Детализаказа od

ON o.ID = od.ЗаказID

INNER JOIN ТОВАРЫ p

ON od.ТоварID = p.ID

INNER JOIN ДЕТАЛИЗАКАЗА pd

ON p.ID = pd.ЗаказID

WHERE Датаоформления BETWEEN DATEADD(month, -2, GETDATE()) AND GETDATE()

ORDER BY Датаоформления;

Эта команда создаст запрос, который выводит информацию о продажах за последние два месяца в хронологическом порядке.

 

Создание представлений

 

Представление – это виртуальная (логическая) таблица, представляющая собой поименованный запрос (синоним к запросу), который будет подставлен как подзапрос при использовании представления [11].

 

1. Создание представления, с помощью которого можно вывести данные о товаре.

CREATE VIEW Представлениеописаниетотовара

AS

SELECT p.ID, НАЗВАНИЕ, Цвет, Материал, Текстовоеописание

FROM ТОВАРЫ p

LEFT JOIN ДЕТАЛИТОВАРА pd

ON p.ID = pd.ID

GO

 

SELECT * FROM Представление_описание_тотовара

GO

 

Эта команда создаст представление, которое выводит информацию об атрибутах сущности «Товары»: ID, название, цвет, описание товара.

 

2. Создание представления, с помощью которого можно вывести данные о количестве проданного товара и остатках на складе.

CREATE VIEW представление_остатки

AS

SELECT p.ID, p.НАЗВАНИЕ, s.Количество Остаток,

(SELECT SUM(od.Количествопродонного) FROM ДЕТАЛИЗАКАЗА od

WHERE od.ТоварID = p.ID) Продано

FROM ТОВАРЫ p

LEFT JOIN СКЛАД s

ON p.ID = s.ТоварID

GO

SELECT * FROM представление_остатки

GO

 

Эта команда создаст представление, которое выводит информацию о продажах и остатках товара: ID, название, остаток товара на складе.

 

4.8 Создание процедур

 

Хранимая процедура − объект базы данных, представляющий собой набор SQL-инструкций, который компилируется один раз и хранится на сервере. Хранимые процедуры очень похожи на обыкновенные процедуры языков высокого уровня, у них могут быть входные и выходные параметры и локальные переменные, в них могут производиться числовые вычисления и операции над символьными данными, результаты которых могут присваиваться переменным и параметрам [12].

 

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

 

CREATE PROC процедурапоиска_покупателя

@Фамилия nvarchar(20) = '%',

@Город nvarchar(20) = '%'

AS

SET NOCOUNT ON

 

SELECT c.Фамилия + ' ' + c.Имя + ' ' + c.Отчество Покупатели,

o.Датаоформления,

p.НАЗВАНИЕ, od.Количествопродонного, od.Цена

FROM ПОКУПАТЕЛИ c

JOIN ЗАКАЗЫ o

ON c.ID = o.ПокупательID AND c.Город LIKE @Город

JOIN ДЕТАЛИЗАКАЗА od

ON o.ID = od.ЗаказID

JOIN ТОВАРЫ p

ON od.ТоварID = p.ID

WHERE c.Фамилия LIKE @Фамилия

GO

 

EXEC процедурапоиска_покупателя 'Кр%'

EXEC процедурапоиска_покупателя @Город = 'Л%'

GO

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

 

 

В практической части работы было произведено создание базы данных и ее объектов средствами программной среды SQL Server. Приведены примеры запросов для создания таблиц, их связей, хранимых процедур, триггеров и представлений. Таблицы были наполнены необходимыми начальными данными. Кроме того, здесь показаны запросы для работы с базой.

В результате получена база данных интернет-магазина для ООО «Приволжской Механический Завод», позволяющая реализовать все необходимые функции информационной системы.


ЗАКЛЮЧЕНИЕ

 

Темой данной курсовой работы являлось создание базы данных интернет-магазина для ООО «Приволжской Механический Завод».

В процессе выполнения работы были рассмотрены вопросы концептуального, логического и физического проектирования базы данных, а также ее программной реализации средствами SQL Server.

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

Практическая реализация спроектированной базы данных была произведена средствами интегрированной среды SQL Server Management Studio, которая сочетает в себе обширную группу графических инструментов с рядом отличных редакторов сценариев для обеспечения доступа, настройки, администрирования, разработки всех компонентов SQL Server и управления ими.

Для обеспечения взаимодействия (обмена данными) между пользователем и базой данных были созданы специальные объекты: запросы, хранимые процедуры и триггеры.

Итогом выполненной работы является созданная и апробированная база данных интернет-магазина для ООО «Приволжской Механический Завод.

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

Таким образом, поставленная цель курсовой работы достигнута. Все задачи, необходимые для достижения цели, решены.


БИБЛИОГРАФИЧЕСКИЙ СПИСОК

 

1. Грофф, Д.Р. Энциклопедия SQL / Д.Р. Грофф, П.Н. Вайнберг. – СПб.: Изд-во «Питер», 2003. – 896 с.

2. Дейт, К.Д. Введение в системы баз данных / К.Д. Дейт. – М.: Изд-во «Вильямс», 2003. – 1328 с.

3. Кириллов В.В. Введение в реляционные базы данных / В.В. Кириллов, Г.Ю. Громов. – СПб.: Изд-во «БХВ–Петербург», 2009. – 464 с.

4. Когаловский, М.Р. Энциклопедия технологий баз данных / М.Р. Когаловский. – М.: Финансы и статистика, 2002. – 800 с.

5. Корнеев, В.В. Базы данных. Интеллектуальная обработка информации / В.В. Корнеев, А. Гареев, С. Васютин, В. Райх. – М.: Изд-во «Нолидж», 2001. – 496 с.

6. Крёнке, Д.М. Теория и практика построения баз данных / Д.М. Крёнке. – СПб.: Изд-во «Питер», 2003. – 800 с.

7. Хомоненко, А.Д. Базы данных: Учебник для высших учебных заведений / А.Д. Хомоненко, В. Цыганков, В. Мальцев. – СПб.: Изд-во «Корона», 2002. – 672 с.

8. Сеть разработчиков Microsoft [Электронный ресурс]. – Альбукерке: Майкрософт, 1975-. – Режим доступа: http://msdn.microsoft.com, свободный. – Загл. с экрана.

9. ЦИТ Форум [Электронный ресурс]. – М.: Центр информационных технологий, 1992 -. – Режим доступа: http://citforum.ru, свободный. – Загл. с экрана.

10. Википедия [Электронный ресурс]. – Ашбурн: Википедия, 2001 -. – Режим доступа: https://wikipedia.org, свободный. – Загл. с экрана.

11. Elibrary.ru: научная электронная библиотека [Электронный ресурс]. – М.: Интра- Плюс, 1997 -. – Режим доступа: http://www.elibrary.ru, свободный. – Загл. с экрана.


ПРИЛОЖЕНИЕ

Листинг кода базы данных

 

-- Создание базы

CREATE DATABASE интернет_магазин5

COLLATE Cyrillic_General_CI_AS

GO

 

-- Код создания таблиц

CREATE TABLE ПОКУПАТЕЛИ

(ID int NOT NULL IDENTITY,

Фамилия nvarchar(20) NULL,

Имя nvarchar(20) NULL,

Отчество nvarchar(20) NULL,

Адрес nvarchar(50) NULL,

Город nvarchar(20) NULL,

Телефон char(12) NULL,

Дата_регистрации date DEFAULT GETDATE(),)

GO

CREATE TABLE СОТРУДНИКИ

(ID int NOT NULL IDENTITY,

ОтделID int NOT NULL,

Фамилия nvarchar(20) NOT NULL,

Имя nvarchar(20) NULL,

Отчество nvarchar(20) NOT NULL,

Должность nvarchar(25) NOT NULL,

Зарплата money NOT NULL,

Премия money NULL,

Датаприеманаработу date NOT NULL,

Семейноеположение varchar(10) NOT NULL,

Датарождения date NOT NULL,

Адрес nvarchar(50) NOT NULL,

Телефон char(12) NOT NULL)

GO

CREATE TABLE ОТДЕЛ

(

ID int NOT NULL,

Названиеотдела nvarchar(20) NOT NULL,

 

)

GO

CREATE TABLE ТОВАРЫ

(

ID int NOT NULL IDENTITY,

НАЗВАНИЕ nvarchar(50) NOT NULL

)

GO

CREATE TABLE ДЕТАЛИТОВАРА

(

ID int NOT NULL,

Цвет nchar(20) NULL,

Материал nchar(20) NULL,

Текстовоеописание nvarchar(max) NULL

)

GO

CREATE TABLE СКЛАД

(

ТоварID int NOT NULL,

Количество int DEFAULT 0

)

GO

CREATE TABLE ЗАКАЗЫ

(

ID int NOT NULL IDENTITY,

ПокупательID int NULL,

СотрудникID int NULL,

Датаоформления date DEFAULT GETDATE()

)

GO

CREATE TABLE ДЕТАЛИЗАКАЗА

(

ЗаказID int NOT NULL,

Количествопозиций int NOT NULL,

ТоварID int NULL,

Количествопродонного int NOT NULL,

Цена money NOT NULL,

Стоимостьзаказа AS CONVERT(money, Количествопродонного*Цена)

)

GO

 

-- Код установки связи между таблицами

ALTER TABLE ПОКУПАТЕЛИ ADD

CONSTRAINT Первичный_ключ_покупатели PRIMARY KEY(ID)

GO

ALTER TABLE СОТРУДНИКИ ADD

CONSTRAINT Первичный_ключ_сотрудники PRIMARY KEY(ID)

GO

ALTER TABLE ОТДЕЛ ADD

CONSTRAINT Уникальный_ключ_отдел UNIQUE(ID)

GO

ALTER TABLE СОТРУДНИКИ ADD

CONSTRAINT внешний_ключ_отделы_к_сотрудникам FOREIGN KEY (ОтделID)

REFERENCES ОТДЕЛ(ID)

ON DELETE CASCADE

GO

ALTER TABLE ТОВАРЫ ADD

CONSTRAINT первичный_ключ_товары PRIMARY KEY (ID)

GO

ALTER TABLE ДЕТАЛИТОВАРА ADD

CONSTRAINT Уникальный_ключ_деталитовара UNIQUE(ID)

GO

ALTER TABLE ДЕТАЛИТОВАРА ADD

CONSTRAINT внешнийключ_деталитовара_к_Товарам FOREIGN KEY (ID)

REFERENCES ТОВАРЫ(ID)

ON DELETE CASCADE

GO

ALTER TABLE СКЛАД ADD

CONSTRAINT Уникальный_ключ_склад UNIQUE(ТоварID)

GO

ALTER TABLE СКЛАД ADD

CONSTRAINT внешний_ключ_склад_к_товарам FOREIGN KEY (ТоварID)

REFERENCES ТОВАРЫ(ID)

ON DELETE CASCADE

GO

ALTER TABLE ЗАКАЗЫ ADD

CONSTRAINT первичный_ключ_заказы PRIMARY KEY (ID)

GO

ALTER TABLE ЗАКАЗЫ ADD CONSTRAINT

внешнийключ_заказы_к_покупателям FOREIGN KEY(ПокупательID)

REFERENCES ПОКУПАТЕЛИ(ID)

ON DELETE SET NULL

GO

ALTER TABLE ЗАКАЗЫ ADD CONSTRAINT

внешний_ключ_заказы_к_сотрудники FOREIGN KEY(СотрудникID)

REFERENCES СОТРУДНИКИ(ID)

ON DELETE SET NULL

GO

ALTER TABLE ДЕТАЛИЗАКАЗА ADD CONSTRAINT

первичныйключ_детализаказа PRIMARY KEY

(ЗаказID,Количествопозиций)

GO

ALTER TABLE ДЕТАЛИЗАКАЗА ADD CONSTRAINT

внешнийключ_детализаказа_к_заказам FOREIGN KEY(ЗаказID)

REFERENCES ЗАКАЗЫ(ID)

ON DELETE CASCADE

GO

ALTER TABLE ДЕТАЛИЗАКАЗА ADD CONSTRAINT

внешний_ключ_детализаказа_к_товары FOREIGN KEY(ТоварID)

REFERENCES ТОВАРЫ(ID)

ON DELETE SET NULL

GO

 

--. Код создания пользовательских ограничений

ALTER TABLE СОТРУДНИКИ

ADD CONSTRAINT ограничение_сотрудники_телефон

CHECK (ТЕЛЕФОН LIKE '([0-9][0-9][0-9])[0-9][0-9][0-9][0-9][0-9][0-9][0-9]') GO

ALTER TABLE ПОКУПАТЕЛИ

ADD CONSTRAINT ограничение_покупатели_телефон

CHECK (ТЕЛЕФОН LIKE '([0-9][0-9][0-9])[0-9][0-9][0-9][0-9][0-9][0-9][0-9]') GO

ALTER TABLE СОТРУДНИКИ

ADD CONSTRAINT ограничение_сотрудники_деньрождение

CHECK (Датарождения BETWEEN DATEADD(YEAR, -50, GETDATE()) AND DATEADD(YEAR, -18, GETDATE()))

ALTER TABLE СОТРУДНИКИ

ADD CONSTRAINT ограничение_сотрудники_Семейноеположение

CHECK (Семейноеположение IN ('Женат','Не женат', 'Замужем','Не замужем'))

GO

ALTER TABLE СОТРУДНИКИ

ADD CONSTRAINT ограничение_сотрудники_Премия

CHECK (Премия < Зарплата)

GO

ALTER TABLE СКЛАД

ADD CONSTRAINT CN_Stocks_Qty

CHECK (Количество>= 0)

GO

 

-- Код наполнения таблиц текстовыми данными

INSERT ОТДЕЛ

(ID, Названиеотдела)

VALUES

(1, 'ОТДЕЛ ПРОДАЖ'),

(2, 'ОТДЕЛ ПОДДЕРЖКИ')

GO

INSERT СОТРУДНИКИ

(ОтделID, Фамилия, Имя, Отчество, Должность, Зарплата, Премия, Датаприеманаработу, Семейноеположение, Датарождения, Адрес, Телефон)

VALUES

(1,'Перминов', 'Алексей', 'Владимирович', 'Менеджер по продажам', 20000, 5000, GETDATE(),'Женат', '01/10/1990','Зянкина 9', '(953)1416433'),

(2,'Туманов', 'Георгий', 'Викторович', 'Менеджер по продажам', 20000, 5000, GETDATE(),'Женат', '04/10/1990','Воровского 29', '(912)4533554'),

(1,'Кочуров', 'Дмитрий', 'Николаевич', 'Системный администратор', 26000, 7000, GETDATE(),'Женат', '04/10/1990','Пугачева 29', '(951)7433545')

GO

INSERT ПОКУПАТЕЛИ

(Фамилия, Имя, Отчество, Адрес, Город, Телефон, Дата_регистрации)

VALUES

('Савиных','Викторович','Павлович','Труда 21а, 137','Киров','(912)3569385',DATEADD(DAY, -85, GETDATE())),

('Васильева','Алефтина','Генадьевна','Мопра 3а, 12','Пермь','(922)4622225',DATEADD(DAY, -35, GETDATE()))

GO

INSERT ТОВАРЫ

(Название)

VALUES

('Коптильня дымка'),

('Коптильня ханхи'),

('Пивоварня Золингер'),

('Шампура столичные'),

('Дымогенератор дымка')

GO

INSERT ДЕТАЛИТОВАРА

(ID, Цвет, материал, текстовоеописание)

VALUES

(1, 'Серый', 'Нержавеющая сталь','Коптильня преднозначена для горячего копчения'),

(2, 'Черный', 'Черная сталь','Коптильня преднозначена для горячего копчения'),

(3, 'Белый', 'Черная сталь','Пивоварня преднозначена для изготовления пивного сусла'),

(4, 'Стальной', 'Черная сталь','Шампура преднозначены для любителей отдыха на природе'),

(5, 'Стальной', 'Черная сталь','Дымогенератор преднозначен для производства дыма при холодном копчении для ')

GO

INSERT СКЛАД

(ТоварID, Количество)

VALUES

(1, 20),

(2, 10),

(3, 7),

(4, 8),

(5, 9)

GO

INSERT ЗАКАЗЫ

(СотрудникID, ПокупательID, Датаоформления)

VALUES

(1,2, DATEADD(DAY, -85, GETDATE())),

(2,1, DATEADD(DAY, -85, GETDATE()))

GO

INSERT ДЕТАЛИЗАКАЗА

(ЗаказID, Количествопозиций, ТоварID, Количествопродонного, Цена)

VALUES

(4,2,1,1,295),

(5,1,2,1,445)

GO

 

-- Код вывода данных из таблиц

SELECT * FROM СОТРУДНИКИ

SELECT * FROM ПОКУПАТЕЛИ

SELECT * FROM СКЛАД

SELECT * FROM ОТДЕЛ

SELECT * FROM ЗАКАЗЫ

SELECT * FROM ДЕТАЛИЗАКАЗА

SELECT * FROM ТОВАРЫ

SELECT * FROM ДЕТАЛИТОВАРА

 

-- Код создания тригера

CREATE TRIGGER УДАЛЕНИЯПРОДУКТА

ON ТОВАРЫ

INSTEAD OF DELETE

AS IF @@ROWCOUNT = 0

RETURN

SET NOCOUNT ON

IF EXISTS (SELECT 1 FROM ДЕТАЛИЗАКАЗА od

JOIN deleted d

ON od.ТоварID = d.ID)

RAISERROR('Товар не может быть удален т.к. стоит в заказах', 10, 1)

ELSE IF EXISTS (SELECT 1 FROM СКЛАД s

JOIN deleted d

ON s.ТоварID = d.ID

WHERE s.Количество <> 0)

RAISERROR('Товар не может быть удален т.к. есть остаток на складе', 10, 2)

ELSE

DELETE ТОВАР WHERE ID IN (SELECT ID FROM deleted)

GO

 

-- Код вывода запроса

SELECT Датаоформления, c.Имя +' '+ c.Фамилия +' '+ c.Отчество AS Покупатели,

p.Название, pd.ТоварID, od.Количествопродонного, od.Цена

FROM Покупатели c

INNER JOIN ЗАКАЗЫ o

ON c.ID = o.ПокупательID

INNER JOIN Детализаказа od

ON o.ID = od.ЗаказID

INNER JOIN ТОВАРЫ p

ON od.ТоварID = p.ID

INNER JOIN ДЕТАЛИЗАКАЗА pd

ON p.ID = pd.ЗаказID

WHERE Датаоформления BETWEEN DATEADD(month, -2, GETDATE()) AND GETDATE()

ORDER BY Датаоформления

 

-- Код создания представлений

CREATE VIEW Представлениеописаниетотовара

AS

SELECT p.ID, НАЗВАНИЕ, Цвет, Материал, Текстовоеописание

FROM ТОВАРЫ p

LEFT JOIN ДЕТАЛИТОВАРА pd

ON p.ID = pd.ID

GO

 

SELECT * FROM Представление_описание_тотовара

GO

 

CREATE VIEW представление_остатки

AS

SELECT p.ID, p.НАЗВАНИЕ, s.Количество Остаток,

(SELECT SUM(od.Количествопродонного) FROM ДЕТАЛИЗАКАЗА od

WHERE od.ТоварID = p.ID) Продано

FROM ТОВАРЫ p

LEFT JOIN СКЛАД s

ON p.ID = s.ТоварID

GO

 

SELECT * FROM представление_остатки

GO

 

-- Код создания процедуры.

CREATE PROC процедурапоиска_покупателя

@Фамилия nvarchar(20) = '%',

@Город nvarchar(20) = '%'

AS

SET NOCOUNT ON

 

SELECT c.Фамилия + ' ' + c.Имя + ' ' + c.Отчество Покупатели,

o.Датаоформления,

p.НАЗВАНИЕ, od.Количествопродонного, od.Цена

FROM ПОКУПАТЕЛИ c

JOIN ЗАКАЗЫ o

ON c.ID = o.ПокупательID AND c.Город LIKE @Город

JOIN ДЕТАЛИЗАКАЗА od

ON o.ID = od.ЗаказID

JOIN ТОВАРЫ p

ON od.ТоварID = p.ID

WHERE c.Фамилия LIKE @Фамилия

GO

 

EXEC процедурапоиска_покупателя

EXEC процедурапоиска_покупателя '%'

EXEC процедурапоиска_покупателя @Город = '%'

EXEC процедурапоиска_покупателя '%', '%'

GO

 

 


Поделиться с друзьями:

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.265 с.