Added the template SQL script for creating the inventory database's tables.
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
-- Version 0.5.5.1 Removed character length restrictions as the docs for POSTGRESQL recommend not specifying a limit.
|
||||
-- Version 0.6.0.0 Changed the numeric values to integers as Golang doesn't have a native decimal type.
|
||||
|
||||
DROP TABLE IF EXISTS property_value;
|
||||
DROP TABLE IF EXISTS property;
|
||||
DROP TABLE IF EXISTS property_data_type;
|
||||
DROP TABLE IF EXISTS item_component;
|
||||
DROP TABLE IF EXISTS item;
|
||||
DROP TABLE IF EXISTS subcategory;
|
||||
DROP TABLE IF EXISTS category;
|
||||
|
||||
CREATE TABLE property_data_type (
|
||||
property_data_type_id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
||||
property_data_type CHARACTER VARYING UNIQUE NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO property_data_type (property_data_type) VALUES ('Money');
|
||||
INSERT INTO property_data_type (property_data_type) VALUES ('Text');
|
||||
INSERT INTO property_data_type (property_data_type) VALUES ('DateTime');
|
||||
INSERT INTO property_data_type (property_data_type) VALUES ('Number');
|
||||
|
||||
CREATE TABLE category (
|
||||
category_id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
||||
category_name CHARACTER VARYING UNIQUE NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE subcategory (
|
||||
subcategory_id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
||||
subcategory_name CHARACTER VARYING UNIQUE NOT NULL,
|
||||
category_id INT NOT NULL REFERENCES category(category_id)
|
||||
);
|
||||
|
||||
CREATE TABLE item (
|
||||
item_id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
||||
item_name CHARACTER VARYING NOT NULL,
|
||||
value_cents INT DEFAULT 0,
|
||||
purchase_cost_cents INT DEFAULT 0,
|
||||
date_aquired TIMESTAMP WITH TIME ZONE,
|
||||
description CHARACTER VARYING,
|
||||
notes CHARACTER VARYING,
|
||||
sold_for_cents INT DEFAULT 0,
|
||||
sold_to CHARACTER VARYING, -- Could be a pointer TO a TABLE OF comtacts.
|
||||
category_id INT NOT NULL REFERENCES category(category_id),
|
||||
subcategory_id INT REFERENCES subcategory(subcategory_id)
|
||||
);
|
||||
|
||||
-- Example: property_name of "Author" which maps to property_data_type of "Text".
|
||||
CREATE TABLE property (
|
||||
property_id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
||||
property_name CHARACTER varying NOT NULL,
|
||||
property_type_id INT NOT NULL REFERENCES property_data_type(property_data_type_id),
|
||||
category_id INT NOT NULL REFERENCES category(category_id),
|
||||
subcategory_id INT REFERENCES subcategory(subcategory_id)
|
||||
);
|
||||
|
||||
-- Allows grouping items together, i.e. Alienware Desktop -> CPU, HDDs / SSDs, Motherboard, etc.
|
||||
CREATE TABLE item_component (
|
||||
item_component_id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
||||
item_id INT NOT NULL REFERENCES item(item_id),
|
||||
item_subcomponent_id INT NOT NULL REFERENCES item(item_id)
|
||||
);
|
||||
|
||||
CREATE TABLE property_value (
|
||||
property_value_id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
||||
item_id INT NOT NULL REFERENCES item(item_id),
|
||||
property_id INT NOT NULL REFERENCES property(property_id),
|
||||
value CHARACTER VARYING NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO category (category_name) VALUES ('Books');
|
||||
INSERT INTO category (category_name) VALUES ('Electronics');
|
||||
INSERT INTO category (category_name) VALUES ('Appliances');
|
||||
INSERT INTO category (category_name) VALUES ('Kitchenware');
|
||||
|
||||
INSERT INTO subcategory(subcategory_name, category_id) VALUES ('PCIe Cards', 2);
|
||||
INSERT INTO subcategory(subcategory_name, category_id) VALUES ('Laptops', 2);
|
||||
INSERT INTO subcategory(subcategory_name, category_id) VALUES ('Desktops', 2);
|
||||
INSERT INTO subcategory(subcategory_name, category_id) VALUES ('CPUs', 2);
|
||||
INSERT INTO subcategory(subcategory_name, category_id) VALUES ('Hard Drives', 2);
|
||||
INSERT INTO subcategory(subcategory_name, category_id) VALUES ('Switches', 2);
|
||||
INSERT INTO subcategory(subcategory_name, category_id) VALUES ('Routers', 2);
|
||||
INSERT INTO subcategory(subcategory_name, category_id) VALUES ('CPU Coolers', 2);
|
||||
INSERT INTO subcategory(subcategory_name, category_id) VALUES ('USB Devices', 2);
|
||||
INSERT INTO subcategory(subcategory_name, category_id) VALUES ('Oscilloscopes', 2);
|
||||
INSERT INTO subcategory(subcategory_name, category_id) VALUES ('Heaters', 3);
|
||||
INSERT INTO subcategory(subcategory_name, category_id) VALUES ('Eletric Kettles', 4);
|
||||
Reference in New Issue
Block a user