CREATE TABLE users ( id INT PRIMARY KEY NOT NULL, name VARCHAR(100) NOT NULL, age SMALLINT, email VARCHAR(100), country VARCHAR(50), is_active BOOLEAN DEFAULT true, created_at TIMESTAMPTZ NOT NULL ); -- age - для возраста не нужны болшие числа -- country - можно было бы использовать VARCHAR(2), я бы тут спросил у тимлида как будет удобней использовать поле) -- created_at - нужно знать не только дату но и время создания/регистрации -- id - если не прописать not null в primary key, то not null ставится автоматически? CREATE TABLE products ( id INT PRIMARY KEY, name VARCHAR(100) NOT NULL, category VARCHAR(50), price DECIMAL(10, 2) NOT NULL, in_stock BOOLEAN ); CREATE TABLE orders( id INT PRIMARY KEY, user_id INT, order_date TIMESTAMPTZ NOT NULL, status VARCHAR(20), FOREING KEY (user_id) REFERENCES users(id) ); -- status - лучше прописать словами статус, так понятней будет. Я бы сюда поставил ENUM CREATE TABLE order_items( order_id INT, product_id INT, quantity INT NOT NULL, price_at_purchase DECIMAL(10, 2) NOT NULL, FOREING KEY (order_id) REFERENCES orders(id), FOREING KEY (product_id) REFERENCES products(id) );