24. В базе данных и в коде нельзя толковать null как самостоятельное значение
Его нужно толковать как "мы не знаем что это, оно может быть чем угодно".
Использовать null в другом качестве (понимать под ним какое-то определённое значение или число, думать, что null больше или меньше каких-то не null значений) недопустимо.
Если нужно, чтобы вместо "мы не знаем, что это" было какое-то значение, то вместо null нужно присваивать переменной какое-то осмысленное значение.
25. Ошибки аналитиков при описании таблиц PostgreSQL, которые НЕЛЬЗЯ реализовывать в коде:
- тип данных decimal - вместо него необходимо использовать тип данных numeric с указанием размерности и точности,
- неправильный тип id - все id во всех таблицах должны быть типом bigserial,
- неправильный тип внешнего ключа - ссылка на id в другой таблице - с типом bigint.
Пример плохого: material_id int.
Пример хорошего: material_id bigint,
- неправильное имя колонки - если колонка хранит текстовое значение, то она не должна в назывании иметь суффикс '_id'.
Пример плохого названия: material_id varchar.
Пример хорошего: materail_code text,
- неправильное имя колонки - названия колонок в таблицах должны отличаться от названий таблиц.
Пример плохого: таблица workplace и в ней колонка workplace.
Пример хорошего: таблица workplace и в ней колонки: number, code, <другое имя, не содержащее слово workplace>,
- неправильные связи между таблицами - неправильно хранить в колонке значение, которое есть в другой таблице.
Пример плохой таблицы: в таблице entity сделать колонку materail_code text, значение которой должно соответствовать значению code из таблицы material.
Пример хорошей таблицы: в таблице entity сделать колонку materail_id bigint, ссылающуюся на колонку id в таблице material,
- неправильные связи между таблицами - связи между таблицами должны быть исключительно по id и ни по каким другим колонкам.