Допустим, ты делаешь трекер задач.
Кажется, всё элементарно:
— пользователь;
— задача;
— кнопка «Выполнено».
Можно сразу открыть редактор и написать таблицу на 47 полей.
Но потом появляется дедлайн, категории, комментарии, вложения…
И база начинает выглядеть как шкаф, куда всё годами складывали «на минутку». 😅
Вот несколько практических правил, которые спасут проект.
1. Сначала выпиши сущности
Не думай пока о таблицах. Подумай, что вообще существует в приложении.
Для трекера задач это могут быть:
👤 пользователи;
✅ задачи;
🏷 категории.
Обычно каждая самостоятельная сущность становится отдельной таблицей.
2. Определи, что относится к чему
Задача принадлежит пользователю — значит, в задаче нужен user_id.
Категория может содержать много задач — значит, между ними тоже нужна связь.
Так данные не дублируются, а соединяются через идентификаторы.
3. Не складывай всё в одну таблицу
Таблица вида:
user_name, user_email, task_title, category_name
кажется удобной только до первого изменения email.
Потом одно и то же значение приходится обновлять в десятках строк. А где-нибудь оно обязательно останется старым. 🙃
4. Выбирай понятные названия
Лучше:
users, tasks, created_at
Хуже:
tbl_usr, data1, time_value_final
Через месяц ты забудешь собственную логику. Названия должны помогать, а не устраивать квест.
5. Сразу добавляй важные ограничения
Email должен быть уникальным.
Название задачи не должно быть пустым.
Задача не может ссылаться на несуществующего пользователя.
База умеет защищать данные — не оставляй всю ответственность только коду приложения.
6. Не добавляй поля «на будущее»
extra_data, field_7, something_else — тревожный звоночек. 🚨
Добавляй то, что нужно приложению сейчас. Новое поле создать проще, чем годами разбираться в мусоре.
💡 Хорошая структура базы — не самая сложная.
Она понятная, предсказуемая и отвечает на вопрос:
где хранится каждая конкретная вещь?
Перед созданием таблиц нарисуй сущности и связи хотя бы на листе бумаги. Эти десять минут могут сэкономить несколько вечеров переписывания проекта.
👇 А ты сначала проектируешь базу или начинаешь писать таблицы со словами: «Там по ходу разберёмся»? 😄