111 lines
3.4 KiB
SQL
111 lines
3.4 KiB
SQL
|
|
CREATE TABLE IF NOT EXISTS tag (
|
|
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),
|
|
col_type INT,
|
|
FOREIGN KEY ( col_type ) REFERENCES colour_type( id )
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS lego_brick (
|
|
id VARCHAR (50) NOT NULL PRIMARY KEY,
|
|
name VARCHAR NOT NULL,
|
|
weight VARCHAR (10),
|
|
dimensions_x VARCHAR (10),
|
|
dimensions_y VARCHAR (10),
|
|
dimensions_z VARCHAR (10)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS lego_set (
|
|
id VARCHAR (50) NOT NULL PRIMARY KEY,
|
|
name VARCHAR (100),
|
|
description TEXT,
|
|
date_released TIMESTAMP WITHOUT TIME ZONE,
|
|
dimensions_x VARCHAR (10),
|
|
dimensions_y VARCHAR (10),
|
|
dimensions_z VARCHAR (10)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS lego_brick_tag (
|
|
id VARCHAR (50) NOT NULL PRIMARY KEY,
|
|
brick_id VARCHAR (50) NOT NULL,
|
|
tag INT NOT NULL,
|
|
FOREIGN KEY ( brick_id ) REFERENCES lego_brick( id ),
|
|
FOREIGN KEY ( tag ) REFERENCES tag( id )
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS lego_set_tag (
|
|
id VARCHAR (50) NOT NULL PRIMARY KEY,
|
|
set_id VARCHAR (50) NOT NULL,
|
|
tag INT NOT NULL,
|
|
FOREIGN KEY ( set_id ) REFERENCES lego_set( id ),
|
|
FOREIGN KEY ( tag ) REFERENCES tag( id )
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS set_descriptor (
|
|
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 )
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS lego_brick_inventory (
|
|
id VARCHAR (50) NOT NULL PRIMARY KEY,
|
|
stock INT NOT NULL,
|
|
price DECIMAL NOT NULL,
|
|
new_price DECIMAL NOT NULL,
|
|
last_updated TIMESTAMP WITHOUT TIME ZONE NOT NULL,
|
|
FOREIGN KEY ( id ) REFERENCES lego_brick( id )
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS lego_set_inventory (
|
|
id VARCHAR (50) NOT NULL PRIMARY KEY,
|
|
stock INT NOT NULL,
|
|
price DECIMAL NOT NULL,
|
|
new_price DECIMAL NOT NULL,
|
|
last_updated TIMESTAMP WITHOUT TIME ZONE NOT NULL,
|
|
FOREIGN KEY ( id ) REFERENCES lego_set( id )
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id VARCHAR (50) NOT NULL PRIMARY KEY,
|
|
email text NOT NULL,
|
|
first_name text NOT NULL,
|
|
last_name text NOT NULL,
|
|
address text NOT NULL,
|
|
postcode text NOT NULL,
|
|
date_created TIMESTAMP WITHOUT TIME ZONE NOT NULL,
|
|
date_updated TIMESTAMP WITHOUT TIME ZONE NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS orders (
|
|
id VARCHAR (50) NOT NULL PRIMARY KEY,
|
|
user_id VARCHAR (50) NOT NULL,
|
|
date_placed TIMESTAMP WITHOUT TIME ZONE NOT NULL,
|
|
FOREIGN KEY ( user_id ) REFERENCES users( id )
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS order_items (
|
|
order_id VARCHAR (50) NOT NULL,
|
|
brick_id VARCHAR (50),
|
|
-- colour is a modifier for the brick
|
|
brick_colour INT,
|
|
set_id VARCHAR (50),
|
|
amount INT NOT NULL,
|
|
FOREIGN KEY ( order_id ) REFERENCES orders( id ),
|
|
FOREIGN KEY ( brick_id ) REFERENCES lego_brick( id ),
|
|
FOREIGN KEY ( brick_colour ) REFERENCES lego_brick_colour( id ),
|
|
FOREIGN KEY ( set_id ) REFERENCES lego_set( id )
|
|
);
|