Описание предметной области

MySQL

Это самая распространенная полноценная серверная СУБД. MySQL очень функциональная, свободно распространяемая СУБД, которая успешно работает с различными сайтами и веб приложениями.

Преимущества MySQL

· Простота в работе - установить MySQL довольно просто;

 

· Богатый функционал - MySQL поддерживает большинство функционала SQL;

· Безопасность - большое количество функций обеспечивающих безопасность;

· Скорость - упрощение некоторых стандартов позволяет MySQL значительно увеличить производительность;

 

Недостатки MySQL

· Ограничение функционала, которые иногда необходимы в особо требовательных приложениях;

· Проблемы с надежностью ;

· Медленная разработка ;

 

SQL

SQL - язык управления базами данных для реляционных баз данных.

Преимущества SQL

Независимость от конкретной СУБД

· Наличие стандартов

Декларативность – с помощью SQL программист описывает только то, какие данные нужно извлечь или модифицировать.

Недостатки SQL

Сложность

Отступление от стандартов

Сложность работы с иерархическими структурами

 

Описание предметной области

 

Выбранной предметной областью базы данных является управление Складом. В базу данных заносятся атрибуты Контрагентов (Физические и Юридические лица), Товаров (с отдельными описаниями), Места хранения, Поставки (Приходной документ товаров).

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

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

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

 

 

МестаХранения
* Id_склада - Наименование - Расположение - МОЛ
Товары
* Id_товара - Артикул - Наименование - ЕдИзмерения - Цена
Контрагенты
* Id_контрагента - Наименование - ВидКонтрагента - Адрес - Телефон - ФИО_КонтЛица
Поставки
* №Накладной - Дата - Склад - Товар - Контрагент - Цена - Количество
Продажи
* №Накладной - Дата - Склад - Товар - Контрагент - Цена - Количество
Остатки
* Склад * Товар - Количество
N
N
N
N
N
N
N

 

 

 

ЗАПОЛНЕНИЕ ТАБЛИЦ:

Заполнение таблиц осуществляется так же двумя способами:

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))

(Программный код создания таблицы «Товар»)

 

РЕАЛИЗАЦИЯ ТРИГГЕРОВ:

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

 

 

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, Создание триггера « Not_null_date »)

 

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, Создание триггера «Check_Double_MOL»)

 

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, Создание триггера «Check_Double_Post»)

 

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, Создание триггера «Not_null_date_Prodaj»)

 

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, Создание триггера «Check_Double_Key»)

 

 

РЕАЛИЗАЦИЯ ХРАНИМЫХ ПРОЦЕДУР:

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

 

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, Создание хранимой процедуры «sp_sum_ostatk»)

 

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, Создание хранимой процедуры «sp_sum_postoav»)

 

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, Создание хранимой процедуры «sp_sum_prodaj»)

 

 

CREATE PROCEDURE [dbo].[Otch_sklad]

AS

BEGIN

SET NOCOUNT ON;

SELECT МестаХранения.[idсклада] as ID, Наименование,Расположение,МОЛ

FROM МестаХранения

GROUP BY МестаХранения.[idсклада], Наименование,Расположение,МОЛ

END

GO

(Прог.код 15, Создание хранимой процедуры «Отчет по складу»)

 

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, Создание хранимой процедуры «Отчет товара»)

 

 

Create PROCEDURE [dbo].[Otch_Kontr]

AS

BEGIN

SET NOCOUNT ON;

SELECT Контрагенты.[idконтрагента] as idконтрагента, Наименование,ВидКонтрагента,Адрес,Телефон,ФИОконтактнЛица

FROM Контрагенты

GROUP BY Контрагенты.[idконтрагента], Наименование,ВидКонтрагента,Адрес,Телефон,ФИОконтактнЛица

END

(Прог.код 17, Создание хранимой процедуры «Otch_Kontr»)

 

Заключение

 

Во время прохождения производственной практики, закрепил навыки работы с Visual Studio C# и Sql Server. Научился работать с базой данных.

В курсовом проекте были рассмотрены следующие вопросы:

· Разработана логическая схема работы базы данных

· Создана физическая база данных

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

Задачей проекта являлась разработка программного продукта «База данных “Склад”».

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

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

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

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