first DDL
This commit is contained in:
+47
@@ -0,0 +1,47 @@
|
||||
-- ПРАКТИКА DDL
|
||||
-- Задание 1
|
||||
DROP TABLE IF EXISTS mnoskov.users;
|
||||
CREATE TABLE mnoskov.users (
|
||||
id bigint PRIMARY KEY,
|
||||
name varchar(100) NOT NULL,
|
||||
age SMALLINT,
|
||||
email varchar(100),
|
||||
country char(2), -- прогуглил что распространено сохранять iso-код а не все название
|
||||
is_active boolean,
|
||||
created_at timestamptz NOT NULL -- думаю timestamptz, если не учитывать часовой пояс, то даты могут отображаться неверно
|
||||
);
|
||||
|
||||
|
||||
-- Задание 2
|
||||
DROP TABLE IF EXISTS mnoskov.products;
|
||||
CREATE TABLE mnoskov.products (
|
||||
id bigint PRIMARY KEY,
|
||||
name varchar(100) NOT NULL,
|
||||
category varchar(50),
|
||||
price decimal(10,2) NOT NULL,
|
||||
in_stock boolean
|
||||
);
|
||||
|
||||
|
||||
-- Задание 3
|
||||
DROP TABLE IF EXISTS mnoskov.orders;
|
||||
CREATE TABLE mnoskov.orders (
|
||||
id bigint PRIMARY KEY,
|
||||
user_id bigint,
|
||||
order_date date NOT NULL, -- в названии date, и тип думаю date
|
||||
status int, -- по идее отдельная таблица с тремя типами займет меньше места, чем каждый раз прописывать в varchar статус
|
||||
FOREIGN KEY (user_id) REFERENCES users(id)
|
||||
);
|
||||
|
||||
|
||||
-- Задание 4
|
||||
DROP TABLE IF EXISTS mnoskov.order_items;
|
||||
CREATE TABLE mnoskov.order_items (
|
||||
order_id bigint,
|
||||
product_id bigint,
|
||||
quantity int, -- думал надо smallint но потом подумал что вдруг 50к гвоздей
|
||||
price_at_purchase decimal(10,2),
|
||||
PRIMARY KEY (order_id, product_id),
|
||||
FOREIGN KEY (order_id) REFERENCES orders(id),
|
||||
FOREIGN KEY (product_id) REFERENCES products(id)
|
||||
);
|
||||
Reference in New Issue
Block a user