Все истории

🧱 Как спроектировать базу для простого приложения и не пожалеть через неделю

Копия публикации из архива канала. Дата и текст сохранены.

Допустим, ты делаешь трекер задач.
Кажется, всё элементарно:
— пользователь;
— задача;
— кнопка «Выполнено».

Можно сразу открыть редактор и написать таблицу на 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 — тревожный звоночек. 🚨
Добавляй то, что нужно приложению сейчас. Новое поле создать проще, чем годами разбираться в мусоре.

💡 Хорошая структура базы — не самая сложная.

Она понятная, предсказуемая и отвечает на вопрос:
где хранится каждая конкретная вещь?

Перед созданием таблиц нарисуй сущности и связи хотя бы на листе бумаги. Эти десять минут могут сэкономить несколько вечеров переписывания проекта.

👇 А ты сначала проектируешь базу или начинаешь писать таблицы со словами: «Там по ходу разберёмся»? 😄