Проектирование базы данных – это ключевой этап в создании любой системы, где хранятся данные. Если БД спроектирована плохо, это приведёт к медленной работе, избыточности данных и сложным обновлениям.
🟠Определение требований и структуры данных
Сначала нужно понять, какие данные будут храниться и как они связаны.
Какие объекты будут в системе? (например, пользователи, заказы, товары).
Как они связаны друг с другом? (например, один пользователь может делать много заказов).
Какие поля нужны в каждой таблице? (например,
email, password, created_at). - Какие запросы будут выполняться чаще всего?
Пример: интернет-магазин
Пользователи (
users) Товары (
products) Заказы (
orders) Связь между заказами и товарами (
order_items) 🟠Определение таблиц и связей (ERD – диаграмма)
Разделяем данные по таблицам и определяем связи (1-к-1, 1-к-N, N-к-N).
Связи между таблицами:
1-к-1 → один профиль = один пользователь (
users → user_profiles). 1-к-N → один пользователь = много заказов (
users → orders). N-к-N → один заказ = много товаров, и один товар может быть в разных заказах (
orders ↔️ products). Users (id) --- (1:N) --- Orders (id, user_id) --- (N:M) --- Order_Items (order_id, product_id, quantity)
Products (id)
SQL-создание таблиц
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
email VARCHAR(255) UNIQUE,
password VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE products (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
price DECIMAL(10,2),
stock INT
);
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
CREATE TABLE order_items (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (order_id, product_id),
FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE,
FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE
);
Ставь 👍 и забирай 📚 Базу знаний