МестаХранения |
* Id_склада - Наименование - Расположение - МОЛ |
Товары |
* Id_товара - Артикул - Наименование - ЕдИзмерения - Цена |
Контрагенты |
* Id_контрагента - Наименование - ВидКонтрагента - Адрес - Телефон - ФИО_КонтЛица |
Поставки |
* №Накладной - Дата - Склад - Товар - Контрагент - Цена - Количество |
Продажи |
* №Накладной - Дата - Склад - Товар - Контрагент - Цена - Количество |
Остатки |
* Склад * Товар - Количество |
N |
N |
N |
N |
N |
N |
N |
Рис. 1. Логическая схема базы данных
Практическая часть
Создание таблиц
Заполнение таблиц осуществляется так же двумя способами:
1. В списке объектов базы данных выбрать пункт «Таблицы», где появится список созданных таблиц.
2. С помощью использования средств DDL.
В этом проекте Заполнение таблиц осуществлялось с помощью средств DDL.
1. Создание таблици «Контрагенты»
Название атрибутов | Тип полей |
ID контрагенты | Int |
ВидКонтрагента | nChar |
Адрес | nChar |
Наименование | nChar |
Телефон | nChar |
ФИО | nChar |
(Таблица 1. Атрибуты таблицы «Контрагенты»)
create table Контрагенты(
idконтрагента
char(50),
ВидКонтрагента char(50),
Адрес char int primary key,
Наименование (50),
Телефон char(30),
ФИОконтактнЛица char(30));
(Программный код создания таблицы «Контрагенты»)
2. Создание таблицы «Места хранения»
Название атрибутов | Тип полей |
ID Склада | int |
Наименование | nchar |
Расположение | nchar |
Материально ответственно лицо | nchar |
(Таблица 2. Атрибуты таблицы «Места хранения»
create table МестаХранения(
idсклада int primary key,
Наименование char(30),
Расположение char(50),
МОЛ char(30));
GO
(Программный код создания таблицы «Места хранения»)
3. Создание таблицы «Поставки»
Название атрибутов | Тип полей |
Номер докладной | int |
Дата | int |
Склад | int |
Товар | int |
Контрагент | int |
Цена | int |
Количество | int |
(Таблица 3. Атрибуты таблицы «Поставки»)
create table Поставки(
НомерНакладной int primary key,
Дата datetime,
Склад int references МестаХранения(idсклада),
Товар int references Товары(idтовара),
Контрагент int references Контрагенты(idконтрагента),
Цена decimal(10,2),
Количество int check(Количество>0));
(Программный код создания таблицы «Поставки»)
4. Создание таблицы «Продажи»
Название атрибутов | Тип полей |
Номер докладной | int |
Дата | Int |
Склад | Int |
Товар | Int |
Контрагент | Int |
Цена | Int |
Количество | int |
(Таблица 4. Атрибуты таблицы «Продажи»)
create table Продажи(
НомерНакладной int primary key,
Дата datetime,
Склад int references МестаХранения(idсклада
Товар int references Товары(idтовара),
Контрагент int references Контрагенты(idконтрагента),
Цена decimal(10,2), Количество int check(Количество>0));
(Программный код создания таблицы «Продажи»)
5. Создание таблицы «Товар»
Название атрибутов | Тип полей |
ID Товара | int |
Артикул | nchar |
Наименование | nchar |
ЕдИзмерения | nchar |
Цена | int |
(Таблица 5. Атрибут таблицы «Товар»)
create table Товары(
idтовара int primary key,
Артикул char(20),
Наименование char(50),
ЕдИзмерения char(20),
Цена decimal(10,2))
(Программный код создания таблицы «Товар»)
2.2 Триггеры
Триггеры являются особой разновидностью хранимых процедур, выполняемых автоматически (срабатывающих) при модификации данных таблицы. Триггеры находят разное применение – от проверки данных до обеспечения сложных деловых правил. Особенно полезным свойством триггеров является то, что они имеют доступ к образам записи до и после модификации; таким образом, можно сравнить две записи и принять соответствующее решение.
1.
CREATE TRIGGER [dbo].[Not_null_date] ON [dbo].[Товары]
AFTER INSERT NOT FOR REPLICATION AS
BEGIN
SET NOCOUNT ON;
DECLARE @new_Tovar_code int
DECLARE @new_Art nchar(20)
DECLARE @new_Edizm nchar(20)
DECLARE @new_Cena decimal(10,2)
SELECT @new_Tovar_code=[idтовара],@new_Art=Артикул,@new_Edizm=[ЕдИзмерения],@new_Cena=[Цена] from inserted
IF EXISTS (SELECT *
FROM [Товары]
WHERE Артикул='')
BEGIN
UPDATE [Товары] SET Артикул=('Заполнить!') WHERE [idтовара] =@new_Tovar_code
END
IF EXISTS (SELECT *
FROM [Товары]
WHERE [ЕдИзмерения]='')
BEGIN
UPDATE [Товары] SET [ЕдИзмерения]=('Заполнить!') WHERE [idтовара] =@new_Tovar_code
END
IF EXISTS (SELECT *
FROM [Товары]
WHERE Цена='')
BEGIN
UPDATE [Товары] SET Цена=('Заполнить!') WHERE [idтовара] =@new_Tovar_code
END
END
(Прог.код 7, Создание триггера «Проверка записи»)
2. Для заперта на ввод отрицательного или нулевого значения для столбца
«Места хранения»
Create TRIGGER [dbo].[Check_Double_MOL] ON [dbo].[МестаХранения]
FOR INSERT
AS
IF EXISTS (SELECT *
FROM [МестаХранения], inserted
WHERE [МестаХранения].[idсклада]=inserted.[idсклада] and [МестаХранения].[Наименование]=inserted.[Наименование] and [МестаХранения].[Расположение]=inserted.[Расположение]
and [МестаХранения].[МОЛ]=inserted.[МОЛ])
BEGIN
raiserror ('Невозможно вставить повторяющуюся запись, проверьте правильность написания!',16,1)
ROLLBACK tran
END
(Прог.код 8, Создание триггера «Проверка двойных значений»)
3. Проверка двойных значений в таблице «Поставки»
Create TRIGGER [dbo].[Check_Double_Post] ON [dbo].[Поставки]
FOR INSERT
AS
IF EXISTS (SELECT *
FROM [Поставки], inserted
WHERE [Поставки].[НомерНакладной]=inserted.[НомерНакладной] and [Поставки].[Дата]=inserted.[Дата] and [Поставки].[Склад]=inserted.[Склад]
and [Поставки].[Товар]=inserted.[Товар] and [Поставки].[Контрагент]=inserted.[Контрагент] and [Поставки].[Цена]=inserted.[Цена] and [Поставки].[Количество]=inserted.[Количество])
BEGIN
raiserror ('Невозможно вставить повторяющуюся запись, проверьте правильность написания!',16,1)
ROLLBACK tran
END
(Прог.код 9, Создание триггера «Проверка двойных значений»)
4. Проверка двойных значений в таблице «Продажи»
CREATE TRIGGER [dbo].[Check_Double_prodaj] ON [dbo].[Продажи]
FOR INSERT
AS
IF EXISTS (SELECT *
FROM [Продажи], inserted
WHERE [Продажи].[НомерНакладной]=inserted.[НомерНакладной] and [Продажи].[Дата]=inserted.[Дата] and [Продажи].[Склад]=inserted.[Склад]
and [Продажи].[Товар]=inserted.[Товар] and [Продажи].[Контрагент]=inserted.[Контрагент] and [Продажи].[Цена]=inserted.[Цена] and [Продажи].[Количество]=inserted.[Количество])
BEGIN
raiserror ('Невозможно вставить повторяющуюся запись, проверьте правильность написания!',16,1)
ROLLBACK tran
END
GO
(Прог.код 10, Создание триггера «Проверка двойных значений»)
5. Проверка двойных значений в таблице «Товары»
CREATE TRIGGER [dbo].[Check_Double_Key] ON [dbo].[Товары]
FOR INSERT
AS
IF EXISTS (SELECT *
FROM [Товары], inserted
WHERE [Товары].Артикул=inserted.Артикул and [Товары].[Наименование]=inserted.[Наименование] and [Товары].[ЕдИзмерения]=inserted.[ЕдИзмерения]
and [Товары].[Цена]=inserted.[Цена])
BEGIN
raiserror ('Невозможно вставить повторяющуюся запись, проверьте правильность написания!',16,1)
ROLLBACK tran
END
(Прог.код 11, Создание триггера «Проверка двойных значений»)
2.3 Реализация хранимых процедур
При разработке приложений, основанных на платформе «клиент – сервер», для облегчения выполнения каких-либо операций с данными используются механизмы, при помощи которых можно создавать подпрограммы, работающие на сервере и управляющие процессами обработки информации. Эти механизмы носят название хранимых процедур.
1.Формирование выборки по отчетам «Остатки»
use Kurs_1
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[sp_sum_ostatk]
@SkladNumber int,
@TovarNumber int,
@Sklad_name char(30) output,
@Tovar_name char(50) output
AS
BEGIN
SET NOCOUNT ON;
SELECT @Sklad_name=(Наименование)
FROM dbo.МестаХранения
WHERE idсклада=@SkladNumber
SELECT @Tovar_name=(Наименование)
FROM dbo.Товары
WHERE idтовара=@TovarNumber
END
(Прог.код 12, Создание хранимой процедуры «Остатки»)
2.Формирование выборки по отчетам «Поставки»
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[sp_sum_postoav]
@SkladNumber int,
@TovarNumber int,
@KontrNumber int,
@Sklad_name char(30) output,
@Tovar_name char(50) output,
@Kontr_name char(50) output
AS
BEGIN
SET NOCOUNT ON;
SELECT @Sklad_name=(Наименование)
FROM dbo.МестаХранения
WHERE idсклада=@SkladNumber
SELECT @Tovar_name=(Наименование)
FROM dbo.Товары
WHERE idтовара=@TovarNumber
SELECT @Kontr_name=(Наименование)
FROM dbo.Контрагенты
WHERE idконтрагента=@KontrNumber
END
(Прог.код 13, Создание хранимой процедуры «Поставки»)
3. Формирование выборки по отчетам «Продажи»
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_sum_prodaj]
@SkladNumber int,
@TovarNumber int,
@KontrNumber int,
@Sklad_name char(30) output,
@Tovar_name char(50) output,
@Kontr_name char(50) output
AS
BEGIN
SET NOCOUNT ON;
SELECT @Sklad_name=(Наименование)
FROM dbo.МестаХранения
WHERE idсклада=@SkladNumber
SELECT @Tovar_name=(Наименование)
FROM dbo.Товары
WHERE idтовара=@TovarNumber
SELECT @Kontr_name=(Наименование)
FROM dbo.Контрагенты
WHERE idконтрагента=@KontrNumber
END
(Прог.код 14, Создание хранимой процедуры «Продажи»)
4. Формирование выборки по отчетам «Отчет по складу»
CREATE PROCEDURE [dbo].[Otch_sklad]
AS
BEGIN
SET NOCOUNT ON;
SELECT МестаХранения.[idсклада] as ID, Наименование,Расположение,МОЛ
FROM МестаХранения
GROUP BY МестаХранения.[idсклада], Наименование,Расположение,МОЛ
END
GO
(Прог.код 15, Создание хранимой процедуры «Отчет по складу»)
5.Формирование выборки по отчетам «Отчет по товару»
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Otch_Tovar]
AS
BEGIN
SET NOCOUNT ON;
SELECT Товары.[idтовара] as idтовара, Артикул,Наименование,ЕдИзмерения,Цена
FROM Товары
GROUP BY Товары.[idтовара], idтовара,Артикул,Наименование,ЕдИзмерения,Цена
END
GO
(Прог.код 16, Создание хранимой процедуры «Отчет товара»)
6.Формирование выборки по отчетам «Отчет по Контрогентам»
Create PROCEDURE [dbo].[Otch_Kontr]
AS
BEGIN
SET NOCOUNT ON;
SELECT Контрагенты.[idконтрагента] as idконтрагента, Наименование,ВидКонтрагента,Адрес,Телефон,ФИОконтактнЛица
FROM Контрагенты
GROUP BY Контрагенты.[idконтрагента], Наименование,ВидКонтрагента,Адрес,Телефон,ФИОконтактнЛица
END
(Прог.код 17, Создание хранимой процедуры «Отчет по Контрогентам»)
Заключение
Во время прохождения производственной практики, закрепил навыки работы с Visual Studio C# и Sql Server. Научился работать с базой данных.
В проекте были рассмотрены следующие вопросы:
· Разработана логическая схема работы базы данных
· Создана физическая база данных
· Написана программа, пригодная для доступа к таблицам базы данных, изменению и удалению записей, вызову хранимых процедур и оформления отчётов.
Задачей проекта являлась разработка программного продукта «База данных “Склад”».
Для достижения данной цели в первом разделе проекта были сформулированы логическая и физическая схемы базы данных. Во второй части курсового проекта сначала была создана и настроенная серверная часть проекта, с использованием таблиц SQL Server. Позже была создана и настроенная клиентская часть проекта, с использованием хранимых процедур и триггеров SQL Server и компонентов формы Visual Studio.
Полученную программу можно использовать для контроля работы склада, управления поставками, списком контрагентов и товаров.
Узнал структуру и род деятельности предприятия, ознакомился с распорядком. Дисциплинарных замечаний не имел, соблюдал все установленные правила. Серьезно относился к своей работе и нес за нее полную ответственность.
В процессе прохождения практики занимался сборкой компьютеров, починкой аппаратуры и установкой программного обеспечения. Вел наблюдения за работой машин, принимал участие в основной работе. Занимался обеспечением информационной безопасности. Беспрекословно выполнял все задачи данные руководителем. Занимался созданием базы данных для удобной и быстрой работы с занесением очередников в таблицу и созданием отчётов.