Files
legolog/db/schema.sql
Ben db1bc79534 server and ERD
Former-commit-id: b069d94d494a1eeaa180e237608b466004cfb158
2022-02-05 15:54:58 +00:00

93 lines
2.9 KiB
SQL

CREATE TABLE IF NOT EXISTS catagory (
id INT NOT NULL PRIMARY KEY,
name VARCHAR (100)
);
CREATE TABLE IF NOT EXISTS colour_type (
id INT NOT NULL PRIMARY KEY,
name VARCHAR (64)
);
CREATE TABLE IF NOT EXISTS lego_brick_colour (
id INT NOT NULL PRIMARY KEY,
name VARCHAR (100),
hexrgb VARCHAR (6) NOT NULL,
col_type INT,
FOREIGN KEY ( col_type ) REFERENCES colour_type( id )
);
CREATE TABLE IF NOT EXISTS lego_set (
id VARCHAR (50) NOT NULL PRIMARY KEY,
catagory INT,
name VARCHAR (100),
date_released TIMESTAMP WITHOUT TIME ZONE,
dimensions_x DECIMAL,
dimensions_y DECIMAL,
dimensions_z DECIMAL,
FOREIGN KEY ( catagory ) REFERENCES catagory( id )
);
CREATE TABLE IF NOT EXISTS lego_brick (
id VARCHAR (50) NOT NULL PRIMARY KEY,
name VARCHAR NOT NULL,
colour INT,
catagory INT,
weight DECIMAL,
dimensions_x INT,
dimensions_y INT,
dimensions_z INT,
date_from TIMESTAMP WITHOUT TIME ZONE,
date_to TIMESTAMP WITHOUT TIME ZONE,
FOREIGN KEY ( colour ) REFERENCES lego_brick_colour( id ),
FOREIGN KEY ( catagory ) REFERENCES catagory( id )
);
CREATE TABLE IF NOT EXISTS lego_brick_price_history (
id INT NOT NULL PRIMARY KEY,
brick_id VARCHAR (50) NOT NULL,
price_point DECIMAL NOT NULL,
date_point TIMESTAMP WITHOUT TIME ZONE NOT NULL,
FOREIGN KEY ( brick_id ) REFERENCES lego_brick( id )
);
CREATE TABLE IF NOT EXISTS lego_set_price_history (
id INT NOT NULL PRIMARY KEY,
set_id VARCHAR (50) NOT NULL,
price_point DECIMAL NOT NULL,
date_point TIMESTAMP WITHOUT TIME ZONE NOT NULL,
FOREIGN KEY ( set_id ) REFERENCES lego_set( id )
);
CREATE TABLE IF NOT EXISTS lego_brick_inventory (
id VARCHAR (50) NOT NULL,
stock INT NOT NULL,
price DECIMAL NOT NULL,
demand_factor DECIMAL NOT NULL,
backorder BOOLEAN,
backorder_stock INT,
last_updated TIMESTAMP WITHOUT TIME ZONE NOT NULL,
PRIMARY KEY ( id ),
FOREIGN KEY ( id ) REFERENCES lego_brick( id )
);
CREATE TABLE IF NOT EXISTS lego_set_inventory (
id VARCHAR (50) NOT NULL,
stock INT NOT NULL,
price DECIMAL NOT NULL,
demand_factor DECIMAL NOT NULL,
backorder BOOLEAN,
backorder_stock INT,
last_updated TIMESTAMP WITHOUT TIME ZONE NOT NULL,
PRIMARY KEY ( id ),
FOREIGN KEY ( id ) REFERENCES lego_set( id )
);
CREATE TABLE IF NOT EXISTS set_descriptor (
id VARCHAR (50) NOT NULL PRIMARY KEY,
set_id VARCHAR (50) NOT NULL,
brick_id VARCHAR (50) NOT NULL,
amount INT,
FOREIGN KEY ( set_id ) REFERENCES lego_set( id ),
FOREIGN KEY ( brick_id ) REFERENCES lego_brick( id )
);