SQL
Как сделать схему данных в MySQL
В MySQL слово schema часто используется как синоним database. Но в поисковом запросе «сделать схему данных» пользователь может иметь в виду две разные задачи: создать структуру базы или нарисовать ER-диаграмму таблиц
Практически правильный путь такой: сначала создать базу и таблицы, затем добавить первичные и внешние ключи, потом построить диаграмму в MySQL Workbench
Как создать schema в MySQL
CREATE DATABASE shop_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
Переключиться на базу:
USE shop_db;
Теперь можно создавать таблицы
Пример структуры данных
Таблица клиентов:
CREATE TABLE clients (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(150) NOT NULL UNIQUE
) ENGINE=InnoDB;
Таблица заказов:
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
client_id INT NOT NULL,
created_at DATETIME NOT NULL,
amount DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (client_id) REFERENCES clients(id)
) ENGINE=InnoDB;
Это уже схема данных в практическом смысле: есть сущности, поля, ключи и связь
Как посмотреть созданную структуру
SHOW DATABASES;
SHOW TABLES;
DESCRIBE clients;
DESCRIBE orders;
Посмотреть полный SQL создания таблицы:
SHOW CREATE TABLE orders;
Так удобно проверять внешние ключи, индексы и настройки таблицы
Как сделать диаграмму в MySQL Workbench
В MySQL Workbench можно построить ER-диаграмму:
- откройте MySQL Workbench
- подключитесь к серверу
- выберите базу
- используйте reverse engineering
- выберите нужные таблицы
- Workbench построит диаграмму связей
Если внешние ключи в базе созданы правильно, связи на диаграмме появятся автоматически
Что должно быть в хорошей схеме
Хорошая схема данных обычно содержит:
- понятные таблицы
- первичные ключи
- внешние ключи
- корректные типы данных
- уникальные ограничения там, где они нужны
- индексы для частых связей и фильтров
- отсутствие списков значений в одной строковой колонке
Схема должна отражать реальные отношения данных, а не просто набор таблиц
Мини-практика
Создайте базу library_db и три таблицы:
authorsbooksauthor_books
Третья таблица нужна, если у книги может быть несколько авторов. После этого постройте диаграмму в MySQL Workbench
Частые ошибки
- Путать database и ER-диаграмму
- Создавать таблицы без первичных ключей
- Не использовать внешние ключи
- Хранить несколько значений в одной колонке
- Создавать связь в голове, но не фиксировать ее ограничением в базе
- Строить диаграмму до понимания сущностей
Что почитать дальше по SQL
Если нужен общий маршрут по теме, откройте рубрику SQL. Для соседних задач пригодятся эти разборы:
- Как базу данных Access сделать SQL: перенос в SQL Server без иллюзий
- Как создать схему данных для БД
- CSV в SQL: как загрузить файл в базу данных
- INSERT, UPDATE, DELETE без потери данных
Как проверить результат на практике
Для SQL-материала всегда начинайте с маленькой тестовой таблицы или с ограниченного набора строк. Сначала выполните SELECT, который показывает будущие данные, затем проверьте условие WHERE, сортировку или соединение, и только после этого переходите к изменяющим командам вроде UPDATE, DELETE или ALTER TABLE. Такой порядок снижает риск случайно изменить больше строк, чем планировалось
Хорошая самопроверка простая: заранее запишите, сколько строк должно попасть в результат, какие столбцы должны измениться и что должно остаться без изменений. Если запрос возвращает неожиданный набор строк, не добавляйте новые условия вслепую, а проверьте каждую часть отдельно: фильтр, соединение, группировку и сортировку