Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 123 additions & 0 deletions testdb.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
CREATE TYPE sex AS ENUM ('m', 'f');

CREATE TABLE table_persons (
id GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
first_name TEXT NOT NULL CHECK ( first_name <> '' ),
last_name TEXT NOT NULL CHECK ( last_name <> '' ),
patronymic TEXT NULL,
sex sex
);

CREATE TABLE table_discounts (
id GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
is_discount BOOLEAN DEFAULT FALSE,
discount_name TEXT NULL,
discount INT NULL
);

CREATE TABLE table_positions (
id GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
position TEXT NOT NULL CHECK ( position <> '' )
);

CREATE TABLE table_phones (
id GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
person_id INT NOT NULL,
phone TEXT NOT NULL,

FOREIGN KEY (person_id) REFERENCES table_persons (id)
);

CREATE TABLE table_emails (
id GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
person_id INT NOT NULL,
email TEXT NOT NULL,

FOREIGN KEY (person_id) REFERENCES table_persons (id)
);

CREATE TABLE table_product_types (
id GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
product_type TEXT NOT NULL CHECK ( type <> '' ),
product_descriptions TEXT NULL
);

CREATE TABLE table_manufacturers (
id GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
manufacturer TEXT NOT NULL CHECK ( manufacturer <> '' ),
manufactur_address TEXT NOT NULL CHECK ( address <> '' ),
telephone TEXT NOT NULL,
email TEXT NOT NULL
);

CREATE TABLE table_metrics (
id GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
metric_name TEXT NOT NULL CHECK ( metric_name <> '' )
);

CREATE TABLE table_products (
id GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
type_id INT NOT NULL,
metric_id INT NOT NULL,
manufactur_id INT NOT NULL,
product_name TEXT NOT NULL CHECK ( product_name <> '' ),
prime_cost NUMERIC NOT NULL CHECK( prime_cost > 0 ),
sale_price NUMERIC NOT NULL CHECK ( sale_price > 0 ),
product_quantity INT NOT NULL CHECK (product_quantity >= 0),
expiration_date DATE NULL,
manufacturing_date DATE NOT NULL,

FOREIGN KEY (metric_id) REFERENCES table_metrics(id),
FOREIGN KEY (type_id) REFERENCES table_product_types(id),
FOREIGN KEY (manufactur_id) REFERENCES table_manufacturers(id)
);

CREATE TABLE table_order_history (
id GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
order_id INT NOT NULL,
);
//

CREATE TABLE table_orders (
id GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
client_id INT NOT NULL,


FOREIGN KEY (client_id) REFERENCES table_clients (id),
);

CREATE TABLE table_clients (
id GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
person_id INT NOT NULL,
discount_id INT NOT NULL,
is_subscription BOOLEAN DEFAULT FALSE,

FOREIGN KEY (person_id) REFERENCES table_persons (id),
FOREIGN KEY (discount_id) REFERENCES table_discounts (id)
);

CREATE TABLE table_sellers (
id GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
person_id INT NOT NULL,
position_id INT NOT NULL,
date_of_employment DATE NOT NULL,
paycheck NUMERIC NOT NULL CHECK ( paycheck > 0 ),

FOREIGN KEY (person_id) REFERENCES table_persons (id),
FOREIGN KEY (person_id) REFERENCES table_persons (id)
);

CREATE TABLE table_sales (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
product_name_id INT NOT NULL,
order_id INT NOT NULL,
seller_id INT NOT NULL,
client_id INT NOT NULL,
quantity INT NOT NULL CHECK ( quantity > 0 ),
date_sale DATE NOT NULL,

FOREIGN KEY (product_name_id) REFERENCES table_products (id),
FOREIGN KEY (order_id) REFERENCES table_orders (id),
FOREIGN KEY (seller_id) REFERENCES table_sellers (id),
FOREIGN KEY (client_id) REFERENCES table_clients (id)
);
75 changes: 75 additions & 0 deletions testy2e21ue21kpor21q[l.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
CREATE TABLE table_products
(
id SERIAL NOT NULL PRIMARY KEY,
product_type_id INT NOT NULL PRIMARY KEY,
product_features_id INT NOT NULL PRIMARY KEY,
name TEXT NOT NULL CHECK ( name <> '' ),
sale_price NUMERIC NOT NULL CHECK ( sale_price > 0 )
);

CREATE TABLE table_product_features
(
id SERIAL NOT NULL PRIMARY KEY,
amount_of_product INT NOT NULL CHECK ( amount_of_product > 0 ),
manufacturer TEXT NOT NULL CHECK ( manufacturer <> '' ),
cost_price NUMERIC NOT NULL CHECK ( cost_price > 0 ),
FOREIGN KEY (id) REFERENCES table_products (product_features_id)
);

CREATE TABLE table_product_types
(
id SERIAL NOT NULL PRIMARY KEY,
product_type TEXT NOT NULL CHECK ( product_type <> '' ),
FOREIGN KEY (id) REFERENCES table_products (product_type_id)
);

CREATE TABLE table_about_sales
(
id SERIAL NOT NULL PRIMARY KEY,
seller_id INT NOT NULL PRIMARY KEY,
client_id INT NOT NULL PRIMARY KEY,
product_name_id INT NOT NULL PRIMARY KEY,
sale_price_id INT NOT NULL PRIMARY KEY,
number_of_sales INT NOT NULL CHECK ( number_of_sales > 0 ),
date_of_sale DATE NOT NULL,
FOREIGN KEY (client_id) REFERENCES table_client_identification (id)

);

CREATE TABLE table_sellers
(
id SERIAL NOT NULL PRIMARY KEY,
post_id INT NOT NULL PRIMARY KEY,
first_name TEXT NOT NULL CHECK ( first_name <> '' ),
last_name TEXT NOT NULL CHECK ( last_name <> '' ),
date_of_employment DATE NOT NULL,
sex TEXT NOT NULL CHECK ( sex <> '' ),
paycheck INT NOT NULL CHECK ( paycheck > 0 )
);

CREATE TABLE table_posts
(
id SERIAL NOT NULL PRIMARY KEY,
job_tittle TEXT NOT NULL CHECK ( job_tittle <> '' ),
FOREIGN KEY (id) REFERENCES table_sellers (post_id)
);

CREATE TABLE table_client_identification
(
id SERIAL NOT NULL PRIMARY KEY,
client_id INT DEFAULT NULL PRIMARY KEY,
FOREIGN KEY (id) REFERENCES table_clients (id)
);

CREATE TABLE table_clients
(
id SERIAL NOT NULL PRIMARY KEY,
purchase_history_id INT NOT NULL PRIMARY KEY,
first_name TEXT NOT NULL CHECK ( first_name <> '' ),
last_name TEXT NOT NULL CHECK ( last_name <> '' ),
client_email TEXT NOT NULL CHECK ( client_email <> '' ),
phone_number TEXT NOT NULL CHECK ( phone_number <> '' ),
sex TEXT NOT NULL CHECK ( sex <> '' ),
discount NUMERIC NOT NULL CHECK (discount > 0 ),
mailing BOOLEAN NOT NULL DEFAULT FALSE
)