diff --git a/testdb.sql b/testdb.sql new file mode 100644 index 0000000..7bb96b6 --- /dev/null +++ b/testdb.sql @@ -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) +); \ No newline at end of file diff --git a/testy2e21ue21kpor21q[l.sql b/testy2e21ue21kpor21q[l.sql new file mode 100644 index 0000000..ba86340 --- /dev/null +++ b/testy2e21ue21kpor21q[l.sql @@ -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 +) \ No newline at end of file