38 lines
1.2 KiB
SQL
38 lines
1.2 KiB
SQL
CREATE TABLE dsolovianov.users (
|
|
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
name VARCHAR(100) NOT NULL,
|
|
age INT,
|
|
email VARCHAR(100),
|
|
country VARCHAR(100),
|
|
is_active BOOLEAN,
|
|
created_at TIMESTAMPTZ NOT NULL
|
|
);
|
|
|
|
CREATE TABLE dsolovianov.products (
|
|
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
name VARCHAR(100) NOT NULL,
|
|
category VARCHAR(50),
|
|
price DECIMAL(10,2) NOT NULL,
|
|
in_stock BOOLEAN
|
|
);
|
|
|
|
CREATE TABLE dsolovianov.orders (
|
|
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
user_id INT,
|
|
order_date TIMESTAMPTZ NOT NULL,
|
|
status VARCHAR(20),
|
|
CONSTRAINT orders_user_fk
|
|
FOREIGN KEY (user_id) REFERENCES dsolovianov.users(id)
|
|
);
|
|
|
|
CREATE TABLE dsolovianov.order_items (
|
|
order_id INT NOT NULL,
|
|
product_id INT NOT NULL,
|
|
quantity INT NOT NULL CHECK (quantity > 0),
|
|
price_at_purchase DECIMAL(10,2) NOT NULL CHECK (price_at_purchase > 0),
|
|
CONSTRAINT order_items_pk PRIMARY KEY (order_id, product_id)
|
|
CONSTRAINT order_items_order_fk
|
|
FOREIGN KEY (order_id) REFERENCES dsolovianov.orders(id),
|
|
CONSTRAINT order_items_product_fk
|
|
FOREIGN KEY (product_id) REFERENCES dsolovianov.products(id)
|
|
); |