30 авг. 2016 г., 20:10:37 Советы советы базы данных 0 Комментариев
Практически каждый разработчик именует поля для связи с другой таблицей в формате <имятаблицы>_id
. Но, вдруг в проекте вы замечаете, что в одном или в нескольких местах совсем не такое именование, а просто <имятаблицы>
. Или наоборот, связи нет, а именовано по подобию <имятаблицы>_id
. Это связано с тем, что когда-то эти поля имели (или не имели) связи с таблицей, а позже решили вынести все в код (или в таблицу). В итоге получается не очень красиво.
Решить эту проблему можно очень просто следуя одному правилу: "Если поле может содержать только определенный вариант значений, то для такого поля необходимо указать в конце постфикс _id
.".
Например, есть поле type
, для этого поля определены значения 1
, 2
, 3
. Такому полю необходимо дать имя type_id
.
Еще пример, есть поле status
, для этого поля определены значения new
, used
. Такому полю необходимо дать имя status_id
.
Вы спросите, "почему?". Ответ прост: все наши заранее определенные значения и есть идентификаторы. Идентификатор не обязательно должен быть только в таблице, он может хранится и в коде, но это идентификатор. Позже, когда вас попросят сделать пользовательские статусы вместо указанных жестко - вы без лишних проблем реализуете запрошенный функционал. Справедливо и обратное. И больше не будет каких-то непонятных именованний, а так же не придется менять в коде имена переменных/свойств, а позже получать кучу ошибок на проде (не все пишут тесты, увы), и сэкономите себе кучу времени.
Но, не нужно добавлять в конец _id
для полей, которые используются в качестве флага (true
/false
). Такие поля должны отражать свою суть по названию без всякого _id
в конце. Если вдруг позже окажется, что нужно больше 2х состояний для этого поля, то скорее всего, вы просто неправильно определили его тип изначально.
Например, поле published
, для этого поля может быть только два состояния true
(да) и false
(нет). Для такого поля не нужно добавлять в конце _id
.
Определить такие поля тоже очень просто по следующему правилу, "Если на название поля можно ответить односложно да
или нет
, то такое поле является флагом
и для него не нужен постфикс _id
.".
Следуя простым правилам количество проблем уменьшится, а масштабируемость увеличится.
Комментарии [0]
Новый комментарий