Initial commit
This commit is contained in:
@@ -0,0 +1,161 @@
|
||||
USE [master];
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.databases WHERE [name] = N'Database')
|
||||
BEGIN
|
||||
EXECUTE sp_executesql
|
||||
@stmt =
|
||||
N'USE [Database];
|
||||
ALTER DATABASE [Database]
|
||||
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
|
||||
USE [tempdb];
|
||||
DROP DATABASE [Database];'
|
||||
END;
|
||||
GO
|
||||
|
||||
CREATE DATABASE [Database];
|
||||
GO
|
||||
|
||||
USE [Database];
|
||||
GO
|
||||
|
||||
CREATE SCHEMA [Tables] AUTHORIZATION [dbo];
|
||||
GO
|
||||
|
||||
CREATE SCHEMA [Functions] AUTHORIZATION [dbo];
|
||||
GO
|
||||
|
||||
CREATE SCHEMA [Procedures] AUTHORIZATION [dbo];
|
||||
GO
|
||||
|
||||
CREATE TABLE [Tables].[product_types](
|
||||
[id] INT NOT NULL IDENTITY(1, 1),
|
||||
[parent_id] INT DEFAULT(NULL),
|
||||
[name] NVARCHAR(128) NOT NULL,
|
||||
CONSTRAINT PK_product_types
|
||||
PRIMARY KEY([id]),
|
||||
CONSTRAINT FK_product_types FOREIGN KEY([parent_id])
|
||||
REFERENCES [Tables].[product_types]([id])
|
||||
);
|
||||
|
||||
CREATE TABLE [Tables].[products](
|
||||
[id] INT NOT NULL IDENTITY(1, 1),
|
||||
[name] NVARCHAR(128) NOT NULL UNIQUE,
|
||||
[product_type_id] INT NOT NULL,
|
||||
CONSTRAINT PK_products
|
||||
PRIMARY KEY([id]),
|
||||
CONSTRAINT FK_product_type_id FOREIGN KEY([product_type_id])
|
||||
REFERENCES [Tables].[product_types]([id])
|
||||
);
|
||||
|
||||
CREATE TABLE [Tables].[suppliers](
|
||||
[id] INT NOT NULL IDENTITY(1, 1),
|
||||
[name] NVARCHAR(128) NOT NULL UNIQUE,
|
||||
[address] NVARCHAR(128) NOT NULL,
|
||||
[telephone_number] NVARCHAR(128) NOT NULL,
|
||||
CONSTRAINT PK_suppliers
|
||||
PRIMARY KEY([id])
|
||||
);
|
||||
|
||||
CREATE TABLE [Tables].[additional_variables](
|
||||
[id] INT NOT NULL IDENTITY(1, 1),
|
||||
[name] NVARCHAR(128) NOT NULL UNIQUE,
|
||||
[value] NVARCHAR(128) NOT NULL
|
||||
CONSTRAINT PK_additionalVariables
|
||||
PRIMARY KEY([id])
|
||||
);
|
||||
|
||||
CREATE TABLE [Tables].[attributes](
|
||||
[id] INT NOT NULL IDENTITY(1, 1),
|
||||
[name] NVARCHAR(128) NOT NULL UNIQUE,
|
||||
CONSTRAINT PK_attributes
|
||||
PRIMARY KEY([id])
|
||||
);
|
||||
|
||||
CREATE TABLE [Tables].[product_attributes](
|
||||
[product_id] INT NOT NULL,
|
||||
[attribute_id] INT NOT NULL,
|
||||
CONSTRAINT PK_product_attributes
|
||||
PRIMARY KEY([product_id], [attribute_id]),
|
||||
CONSTRAINT FK_product_attributes_product_id FOREIGN KEY([product_id])
|
||||
REFERENCES [Tables].[products]([id]),
|
||||
CONSTRAINT FK_product_attributes_attribute_id FOREIGN KEY([attribute_id])
|
||||
REFERENCES [Tables].[attributes]([id])
|
||||
);
|
||||
|
||||
CREATE TABLE [Tables].[product_values](
|
||||
[id] INT NOT NULL IDENTITY(1, 1),
|
||||
[product_id] INT NOT NULL,
|
||||
[attribute_id] INT NOT NULL,
|
||||
[value] NVARCHAR(128) NOT NULL,
|
||||
CONSTRAINT PK_product_values
|
||||
PRIMARY KEY([id]),
|
||||
CONSTRAINT FK_product_values FOREIGN KEY([product_id], [attribute_id])
|
||||
REFERENCES [Tables].[product_attributes]([product_id], [attribute_id])
|
||||
);
|
||||
|
||||
CREATE TABLE [Tables].[price_history_records](
|
||||
[id] INT NOT NULL IDENTITY(1, 1),
|
||||
[product_id] INT NOT NULL,
|
||||
[datetime] DATETIME NOT NULL DEFAULT(SYSDATETIME()),
|
||||
[price] MONEY NOT NULL,
|
||||
CONSTRAINT PK_price_history_records
|
||||
PRIMARY KEY([id]),
|
||||
CONSTRAINT FK_price_history_records_product_id FOREIGN KEY([product_id])
|
||||
REFERENCES [Tables].[products]([id]),
|
||||
CONSTRAINT CHECK_price_history_records
|
||||
CHECK(price >= 0)
|
||||
);
|
||||
|
||||
CREATE TABLE [Tables].[product_outflow_records](
|
||||
[id] INT NOT NULL IDENTITY(1, 1),
|
||||
[barcode_product_value_id] INT NOT NULL,
|
||||
[count] INT NOT NULL,
|
||||
[datetime] DATETIME NOT NULL DEFAULT(SYSDATETIME())
|
||||
CONSTRAINT PK_product_outflow_records
|
||||
PRIMARY KEY([id]),
|
||||
CONSTRAINT FK_product_outflow_records FOREIGN KEY([barcode_product_value_id])
|
||||
REFERENCES [Tables].[product_values]([id]),
|
||||
CONSTRAINT CHECK_product_outflow_records
|
||||
CHECK([count] > 0)
|
||||
);
|
||||
|
||||
CREATE TABLE [Tables].[product_inflow_records](
|
||||
[id] INT NOT NULL IDENTITY(1, 1),
|
||||
[barcode_product_value_id] INT NOT NULL,
|
||||
[supplier_id] INT NOT NULL,
|
||||
[count] INT NOT NULL,
|
||||
[full_price] MONEY NOT NULL,
|
||||
[datetime] DATETIME NOT NULL DEFAULT(SYSDATETIME())
|
||||
CONSTRAINT PK_product_inflow_records
|
||||
PRIMARY KEY([id])
|
||||
CONSTRAINT FK_product_inflow_records_barcode_id FOREIGN KEY([barcode_product_value_id])
|
||||
REFERENCES [Tables].[product_values]([id]),
|
||||
CONSTRAINT FK_product_inflow_records_supplier_id FOREIGN KEY([supplier_id])
|
||||
REFERENCES [Tables].[suppliers]([id]),
|
||||
CONSTRAINT CHECK_product_inflow_records
|
||||
CHECK([count] > 0 AND [full_price] >= 0)
|
||||
);
|
||||
|
||||
CREATE TABLE [Tables].[write_off_reasons](
|
||||
[id] INT NOT NULL IDENTITY(1, 1),
|
||||
[name] NVARCHAR(128) NOT NULL,
|
||||
CONSTRAINT PK_write_off_reasons
|
||||
PRIMARY KEY([id]),
|
||||
);
|
||||
|
||||
CREATE TABLE [Tables].[product_write_off_records](
|
||||
[id] INT NOT NULL IDENTITY(1, 1),
|
||||
[barcode_product_value_id] INT NOT NULL,
|
||||
[reason_id] INT NOT NULL,
|
||||
[count] INT NOT NULL,
|
||||
[datetime] DATETIME NOT NULL DEFAULT(SYSDATETIME())
|
||||
CONSTRAINT PK_product_write_off_records
|
||||
PRIMARY KEY([id])
|
||||
CONSTRAINT FK_product_write_off_records_barcode_id FOREIGN KEY([barcode_product_value_id])
|
||||
REFERENCES [Tables].[product_values]([id]),
|
||||
CONSTRAINT FK_product_write_off_records_reason_id FOREIGN KEY([reason_id])
|
||||
REFERENCES [Tables].[write_off_reasons]([id]),
|
||||
CONSTRAINT CHECK_product_write_off_records
|
||||
CHECK([count] > 0)
|
||||
);
|
||||
GO
|
||||
Reference in New Issue
Block a user