У меня есть эта структура для процесса моих продуктов. 1 - В таблице «продукт» определены идентификаторы продуктов. 2 - В таблице «product_pack» указывается упаковка, в которой должны быть товары их определили. 3 - В таблице «pack_content» каждый пакет, в котором есть товары с количеством. 4 - В 'pack_stock' запасы каждой упаковки хранятся с одинаковым или разным типом упаковки (каждая из пакетов является строкой). 5 - В 'pack_stok_content' хранится содержимое записей pack_stock с номером покупки Facor.
Я хочу знать, это правильный путь к go, или моя модель неверна, или есть лучшая модель или решение для этого?
CREATE TABLE products (
id int(255) NOT NULL AUTO_INCREMENT,
barCode varchar(255) COLLATE utf8_bin NOT NULL,
prodName varchar(500) COLLATE utf8_bin NOT NULL,
stock double NOT NULL DEFAULT '0',
unit_id int,
PRIMARY KEY (id),
UNIQUE KEY barCode (barCode)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
CREATE TABLE product_pack (
id int(11) NOT NULL AUTO_INCREMENT,
label varchar(255) COLLATE utf8_bin NOT NULL,
count float NOT NULL,
base_price int(11) NOT NULL,
price int(11) NOT NULL,
stock float NOT NULL,
status tinyint(1) NOT NULL DEFAULT '1',
percentage double DEFAULT '0',
PRIMARY KEY (id),
KEY id (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
CREATE TABLE pack_content (
id int(11) NOT NULL AUTO_INCREMENT,
pack_id int(11) DEFAULT NULL,
product_id int(11) DEFAULT NULL,
count int(11) DEFAULT NULL,
PRIMARY KEY (id),
KEY pack_id (pack_id),
KEY product_id (product_id),
CONSTRAINT pack_content_ibfk_1 FOREIGN KEY (pack_id) REFERENCES product_pack (id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT pack_content_ibfk_2 FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
CREATE TABLE pack_stock (
id int(11) NOT NULL AUTO_INCREMENT,
pack_id int(11) DEFAULT NULL,
isSelled bit(1) DEFAULT NULL,
PRIMARY KEY (id),
KEY pack_id (pack_id),
CONSTRAINT pack_stock_ibfk_1 FOREIGN KEY (pack_id) REFERENCES product_pack (id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
CREATE TABLE pack_stock_content (
id int(11) NOT NULL AUTO_INCREMENT,
pack_stock_id int(11) DEFAULT NULL,
factor_id int(11) DEFAULT NULL,
count int(11) DEFAULT NULL,
PRIMARY KEY (id),
KEY pack_stock_id (pack_stock_id),
KEY factor_id (factor_id),
CONSTRAINT pack_stock_content_ibfk_1 FOREIGN KEY (pack_stock_id) REFERENCES pack_stock (id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT pack_stock_content_ibfk_2 FOREIGN KEY (factor_id) REFERENCES new_prefactor (id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
CREATE TABLE new_prefactor (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(250) DEFAULT NULL,
product_source_id int(11) DEFAULT NULL,
product_arrival_date int(11) DEFAULT NULL,
factor_registration_date int(11) DEFAULT NULL,
factor_registration_number int(11) DEFAULT NULL,
date int(11) DEFAULT NULL,
image varchar(250) DEFAULT NULL,
description varchar(400) DEFAULT NULL,
price int(11) DEFAULT NULL,
status int(11) DEFAULT NULL,
payment_type_id int(11) DEFAULT NULL,
PRIMARY KEY (id),
KEY status (status),
KEY product_source_id (product_source_id),
KEY payment_type_id (payment_type_id),
CONSTRAINT new_prefactor_ibfk_1 FOREIGN KEY (status) REFERENCES factor_status (id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT new_prefactor_ibfk_2 FOREIGN KEY (product_source_id) REFERENCES product_source (id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT new_prefactor_ibfk_3 FOREIGN KEY (payment_type_id) REFERENCES payment_type (id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8