NULL везде, где можноКажется безобидным: "Ну не знаю я сейчас значение — пусть будет
NULL". Но потом:– Джоины начинают возвращать меньше строк, чем ты ожидал.
–
WHERE column = 'X' не находит ничего, потому что там NULL.–
COUNT(column) искажает статистику.–
IS NULL и COALESCE() плодятся по всему коду.🧱 В чем корень проблемы?
По умолчанию большинство СУБД позволяют
NULL, если явно не указано NOT NULL. Это приводит к схеме, где половина полей может быть «ничем», хотя такого смысла в данных нет.📌 Как избежать?
1. Всегда указывай
NOT NULL, если поле обязательно.2. Думай, нужен ли
NULL вообще. Иногда лучше завести отдельный флаг или значение по умолчанию (например, '' или 0).3. Добавляй ограничения (
CHECK), если значение должно быть в определённом диапазоне.4. Следи за миграциями — новые поля по умолчанию тоже могут быть
NULL.✅ Вывод:
Проектируя схему, подходи к
NULL осознанно. Это не просто "ничего" — это потенциальная боль при запросах и анализе.Сохрани, чтобы не зарываться в
NULL -хаос спустя полгода разработки!📲 Мы в MAX
#db
👉 @database_info
