Логическая модель базы данных

МестаХранения
* 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.

Полученную программу можно использовать для контроля работы склада, управления поставками, списком контрагентов и товаров.

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

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