В таблице «Warehouse» содержатся реквизиты склада . Структура данных приведена в табл. 4.2.8.
Таблица 4.2.8
Структура таблицы Warehouse
№ | Название поля | Тип поля | Размер | Null | Назначение |
1 | Name | Текстовый | 100 | Not | Наименование склада |
2 | Address | Текстовый | 255 | Not | Адрес склада. |
3 | INN | Числовой | 4 | Not | ИНН склада |
4 | KPP | Числовой | 4 | Not | КПП склада |
5 | Phone | Текстовый | 20 | Not | Телефон |
6 | Account | Текстовый | 25 | Not | Счёт |
7 | Bank | Текстовый | 255 | Not | Банк |
8 | Address_bank | Текстовый | 255 | Not | Адрес банка |
9 | BIK | Числовой | 4 | Not | БИК |
10 | Okpo | Числовой | 4 | Not | ОКПО склада |
11 | Corr_account | Текстовый | 25 | Not | Корреспондентский счёт |
12 | Director | Текстовый | 255 | Not | Директор |
13 | Chief_accountant | Текстовый | 255 | Not | Главный бухгалтер |
4.3. Диаграмма «Сущность-связь» (ER-диаграмма)
Диаграмма “Сущность-связь” (ER-диаграмма) разработана на основе анализа предметной области и представлена на рис. 4, выполненная с помощью CASE-средств MS SQL Server 2000.
Сущность «Поставщик» (Suppliers служит для учета поставщиков партий на склад.
Сущность «Поставщик» связана с сущностью «Поставленная партия товара».
Атрибуты сущности «Поставщик»:
Supplier_address – Адрес поставщика
Supplier_account – Расчетный счёт поставщика
Supplier_inn - ИНН поставщика
Supplier_kpp -КПП поставщика
Supplier_phone -телефон поставщика
Supplier_bank -банк поставщика
Address_bank -адрес банка поставщика
Supplier_bik -БИК банка поставщика
Corr_account -Корреспондентский счёт поставщика
Okpo -код ОКПО
Director -Руководитель предприятия поставщика
Chief_accountant -Главный бухгалтер поставщика
Сущность «Покупатель» (Customer) служит для учета юридических и физических лиц, cделавшие приобретение партий товара.
Сущность «Покупатель» связана с сущностью «Проданная партия товара».
Атрибуты сущности «Покупатель»:
Customer_address – Адрес покупателя
Customer_account – Расчетный счёт покупателя
Customer_inn - ИНН покупателя
Customer_kpp -КПП покупателя
Customer_phone -телефон покупателя
Customer_bank -банк покупателя
Address_bank -адрес банка покупателя
Customer_bik -БИК банка покупателя
Corr_account -Корреспондентский счёт покупателя
Okpo -код ОКПО
Director -Руководитель предприятия покупателя
Chief_accountant -Главный бухгалтер покупателя
Сущность «Товар» (GOODS) служит для учета товаров находящихся в данное время на складе.
Сущность «Товар» связана с сущностями «Поставленные товары» и «Проданные товары».
Атрибуты сущности «Товар»:
Goods_id - Номер_товара, первичный ключ.
Goods_name - Наименование_товара.
Price -Цена.
Manufacturer -Фирма – производитель товара.
Quantity - Количество
Unit - Единица товара (тонна, ящик, мешок, и т п)
Massa - Масса единицы товара
Сущность «Закупаемая партия товара» служит для учёта даты поставки партии товара на склад, поставщика и стоимости партии.
Сущность «Закупаемая партия товара» связана с сущностями «Товар», «Закупленные товары».
Атрибуты сущности «Закупаемая партия товара»:
Party_id – номер партии товара, первичный ключ.
Date - дата поступления партии товара на склад.
Supplier_id - идентификатор поставщика.
Price - стоимость партии.
Сущность «Проданная партия товара» служит для учёта даты продажи партии товара со склада, покупателя и стоимости партии.
Сущность «Проданная партия товара» связана с сущностями «Товар», «Проданные товары».
Атрибуты сущности «Проданная партия товара»:
Party_id – номер партии товара, первичный ключ.
Date - дата поступления партии товара на склад.
Customer_id - идентификатор покупателя.
Price - стоимость партии
Seria - серия товарно–транспортной накладной.
Сущность «Проданный товар» служит для учёта состава проданной партии товара.
Сущность связана с сущностями «Товар» и «Проданная партия товара».
Атрибуты сущности «Проданный товар»:
ID - идентификатор записи таблицы, первичный ключ
Goods_id - идентификатор товара.
Party_id - идентификатор партии товара.
Quantity - количество.
Price - стоимость единицы товаров.
Сущность «Закупленный товар» служит для учёта состава проданной партии товара.
Сущность связана с сущностями «Товар» и «Закупленная партия товара».
Атрибуты сущности «Закупленный товар»:
ID - идентификатор записи таблицы, первичный ключ
Goods_id - идентификатор товара.
Party_id - идентификатор партии товара.
Quantity - количество.
Price - стоимость единицы товаров.
Сущность «Склад» служит для хранения данных склада.
Сущность не связана с прочими сущностями, но необходима при формировании выходных документов.
Атрибуты сущности «Склад»:
Name - Наименование склада.
Address - Адрес склада.
INN - ИНН склада.
KPP - КПП склада.
Phone - Телефон склада.
Account - Расчетный счёт склада.
Bank - Банк склада.
Address_bank - Адрес банка склада.
BIK - БИК банка склада.
OKPO - ОКПО склада.
Corr_account - Корреспондентский счёт.
Director - Руководитель.
Chief_accountant - Главный бухгалтер склада.
Рис. 4.3.1. Диаграмма «Сущность - связь»
4.4 Создание базы данных и таблиц
CREATE DATABASE warehouse;
USE warehouse;
CREATE TABLE supplier
(
supplier_id INTEGER PRIMARY KEY NOT NULL IDENTITY(1,1),
supplier_name VARCHAR(100),
supplier_address VARCHAR(255),
supplier_account VARCHAR(25),
supplier_inn INTEGER,
suppier_kpp INTEGER,
supplier_phone VARCHAR (20),
supplier_bank VARCHAR (255),
address_bank VARCHAR(255),
supplier_bik INTEGER,
cor_account VARCHAR(25),
okpo INTEGER,
director VARCHAR(255),
chief_accountant VARCHAR(255)
);
CREATE TABLE customer
(
customer_id INTEGER PRIMARY KEY NOT NULL IDENTITY(1,1),
customer_name VARCHAR(100),
customer_address VARCHAR(255),
customer_account VARCHAR(25),
customer_inn INTEGER,
suppier_kpp INTEGER,
customer_phone VARCHAR (20),
customer_bank VARCHAR (255),
address_bank VARCHAR (255),
customer_bik INTEGER,
cor_account VARCHAR(25),
okpo INTEGER,
director VARCHAR(255),
chief_accountant VARCHAR(255)
);
CREATE TABLE goods
(
goods_id INTEGER PRIMARY KEY IDENTITY(1,1),
goods_name VARCHAR(100),
price MONEY,
manufacturer VARCHAR(300),
quantity INTEGER,
unit VARCHAR (50),
massa INTEGER
);
CREATE TABLE party_delivered
(
party_id INTEGER PRIMARY KEY IDENTITY(1,1),
_date DATETIME,
supplier_id INTEGER,
price MONEY
);
CREATE TABLE party_sold
(
party_id INTEGER PRIMARY KEY IDENTITY(1,1),
_date DATETIME,
customer_id INTEGER,
price MONEY,
seria VARCHAR(10)
);
CREATE TABLE sent_goods
(
ID INTEGER PRIMARY KEY IDENTITY(1,1),
goods_id INTEGER,
party_id INTEGER,
quantity INTEGER,
price MONEY
);
CREATE TABLE delivered_goods
(
ID INTEGER PRIMARY KEY IDENTITY(1,1),
goods_id INTEGER,
party_id INTEGER,
quantity INTEGER,
price MONEY
);
CREATE TABLE warehouse_data
(
name VARCHAR(100),
address VARCHAR(255),
inn INTEGER,
kpp INTEGER,
phone VARCHAR(20),
account VARCHAR(25),
bank VARCHAR(255),
address_bank VARCHAR(255),
bik INTEGER,
okpo INTEGER,
cor_account VARCHAR(25),
director VARCHAR(255),
Chief_accountant VARCHAR(255)
);
4.5 Заполнение таблиц
INSERT INTO supplier VALUES
(
‘Поставщик №1’,
‘г. Астрахань, ул Третья, д 47’,
‘45654233334789d48’,
‘456789123’,
‘159987456’,
‘(8512) 12-58-95’,
‘Первый строительный’,
‘г Астрахань, ул Бабушкина, д 57’,
‘465466545’,
‘45965456854sd987g89’,
‘15987456’,
‘Романов Н.Г.’,
‘Рыбнкова Г.П’
);
INSERT INTO customer VALUES
(
‘Покупатель № 1’,
‘г. Нижневартовск, ул Седьмая, д 14’,
‘45654233334789d48’,
‘456789123’,
‘159987456’,
‘(8512) 12-58-95’,
‘Банк Москвы’,
‘г Москва, ул Степашина, д 57’,
‘465466545’,
‘45965456854sd987g89’,
‘15987456’,
‘Смирнов К.С.’,
‘Иванова Г.П’
);
INSERT INTO goods VALUES
(
‘Товар 1’,
‘521.50’,
‘Производитель 1’,
‘5000’,
‘ящик’,
’20’
);
INSERT INTO party_delivered VALUES
(
’13.03.2009 15:35:01’,
‘1’,
‘456.25’
);
INSERT INTO party_delivered VALUES
(
’14.03.2009 12:00:41’,
‘1’,
‘456.25’
);
INSERT INTO sent_goods VALUES
(
‘1’,
‘4’,
‘998’,
‘500’
);
INSERT INTO delivered_goods VALUES
(
‘1’,
‘4’,
‘365’,
‘456.25’
);
INSERT INTO warehouse_data VALUES
(
‘Центральный Астраханский склад торговой сети «Мастер+»’,
‘г. Астрахань, ул Перевозная, строение 77’,
‘15123456798’,
‘123456789’,
‘8512 65-98-41’,
‘d4fgd6g4fs5g65456’,
‘Первый строительный банк’,
‘г Астрахань, ул Лесная, Д 45’,
‘546542364556’,
‘12345678’,
‘fds4f56df4s5gf646’,
‘Степанов Н. К’,
‘Гиреева С.Т.’
);
4.6 Тексты запросов SQL
SQL запросы используемые при оформлении приходной накладной:
/*Получение реквизитов склада */
SELECT * FROM warehouse_data;
/*Выборка данных о товарах, прибывших в составе партии товара*/
SELECT goods.goods_name, goods.unit, delivered_goods.price, delivered_goods.quantity, (delivered_goods.quantity*delivered_goods.price) FROM goods, delivered_goods WHERE (delivered_goods.party_id=' 1') AND (delivered_goods.goods_id = goods.goods_id);
В запросе происходит выборка количества и стоимости товаров, из таблицы «закупленные товары» (delivered_goods) для всех записей, где поле party_id равно идентификатору пришедшей партии (в примере номер партии товара равен 1); к тому же для каждой записи происходит выборка наименований товаров и единицы их измерения из таблицы «товары» (goods). Выражение (delivered_goods.quantity * delivered_goods.price) вычисляет сумму для каждого товара.
SQL запросы используемые при оформлении товарно-транспортной накладной:
/*Получение реквизитов склада */
SELECT * FROM warehouse_data;
/*Выборка данных о товарах, вошедших в состав проданной партии товара*/