Базы Данных (Data Base) | SQL & NoSQL. PostgreSQL, MySQL и Big Data. Уроки для Backend и Data Engineer. Архитектура БД, Оптимизация и Design.
IT и технологии · 26 мая 2026 г.
🧱 Антипаттерн: Ненормализованная схема в SQL — 26 мая 2026 г. в 14:30:59.268
🧱 Антипаттерн: Ненормализованная схема в SQL Когда нужно «быстро запилить фичу», руки тянутся сделать одну таблицу, где и заказ, и клиент, и товары — всё в куче. Пример: CREATE TABLE orders ( order_id SERIAL PRIMARY KEY, customer_name TEXT, customer_email TEXT, product_1_name TEXT, product_1_price NUMERIC, product_2_name TEXT, product_2_price NUMERIC ); 😰 Что пойдет не так: – Дублирование данных — имя клиента повторяется в каждом заказе. – Нет масштабируемости — максимум 2 продукта? А если будет 3? – Трудности с запросами — попробуй посчитать топ-5 товаров. Удачи. – Адские апдейты — изменить email клиента надо во всех заказах. ✅ Как правильно: 1. Нормализуй. Раздели данные на сущности: customers, orders, products, order_items. 2. Используй внешние ключи. 3. Не бойся JOIN'ов — они для этого и придуманы. Пример нормализованной структуры: -- Таблица клиентов CREATE TABLE customers ( id SERIAL PRIMARY KEY, name TEXT, email TEXT ); -- Таблица заказов CREATE TABLE orders ( id SERIAL PRIMARY KEY, customer_id INT REFERENCES customers(id) ); -- Таблица товаров CREATE TABLE products ( id SERIAL PRIMARY KEY, name TEXT, price NUMERIC ); -- Связка товаров и заказов CREATE TABLE order_items ( order_id INT REFERENCES orders(id), product_id INT REFERENCES products(id), quantity INT ); 📌 Да, нормализация требует чуть больше времени. Зато потом вы не утонете в хаосе. Сохрани, чтобы не забыть — и не повторять чужих ошибок. #db 👉 @database_info

