Я ценю, что это старый пост, но я хотел бы добавить свои два цента.
Таблицы базы данных должны, если возможно, называться во множественном числе, но стараться сохранять некоторую чувствительность к ним, чтобы имя указывало на содержание, чтобы его можно было легко идентифицировать.
Возьмем, к примеру, следующее.
В вашем приложении есть пользователи, ваша модель будет User
, поскольку она относится к одному пользователю, таблица базы данных будет users
, поскольку она представляет собой набор отдельных пользователей. Теперь скажите, что у вас есть профили для этих пользователей, есть несколько вариантов именования, но мне кажется, что он действительно подходит.
- У вас может возникнуть искушение назвать эту таблицу
users_profiles
, но при прочтении это может означать отношение один ко многим, поскольку это профили пользователей.
- Вы также можете испытать искушение назвать эту таблицу
user_profile
, что предполагает, что это отношение один к одному, но с другой стороны, это подразумевает, что эта таблица не является коллекцией, а представляет собой один профиль для один пользователь.
- Вместо этого лучшим соглашением об именах для этого будет
user_profiles
, поскольку это набор профилей пользователей, поскольку один профиль связан с одним пользователем.
В этой таблице профиля вы хотите указать исходного пользователя, поэтому у вас будет столбец с именем user_id
, не users_id
, а user_id
. Как и для любого другого имени столбца, вы должны попытаться сохранить его как одно слово, все в нижнем регистре. Если вы не можете назвать этот столбец одним словом, относитесь к нему как к переменной и назовите его подчеркиванием. Это полезно, так как в случае, когда у вас есть несколько столбцов, в которых первое слово совпадает, это создает своего рода подколлекцию, подразумевающую, что они связаны, что было бы правильно.
Это правда, что подчеркивание подразумевает связь, поэтому таблица называется user_profiles
, а поле называется user_id
, но 9 раз из 10 вы не будете иметь отношения к полю, которое это не идентификатор, поэтому вопрос о причастности исчезает.
Выше уже упоминалось, что использование единственного числа во множественном числе может сбивать с толку. Аргумент был, что множественное число может оканчиваться на s
или ies
. Стоит отметить, что ies
на самом деле заканчивается s
, поэтому проблема ошибочна. Кроме того, сохранение имени таблицы в единственном числе на самом деле создает еще большую путаницу, поскольку это не означает, что она сразу подразумевает коллекцию, и это означает, что имена таблиц могут заканчиваться практически любой другой буквой.
Существуют таблицы, имена которых подразумевают множественное число без его окончания в s
. Например, это может быть что-то вроде user_history
. Это имя таблицы является вполне приемлемым и легко идентифицируемым именем, поскольку история по умолчанию множественная, и эта таблица содержит историю для пользователя.
Чего не делать
- Смешайте подчеркивания и кейсы. Выберите один стандарт и следуйте ему, не используйте столбцы CamelCase в сочетании с подчеркиванием, так как это может привести к путанице и выглядеть беспорядочно.
- Держите все в нижнем регистре. Нет необходимости использовать заглавные буквы, поскольку это может только добавить к путанице, трактовать имена таблиц и столбцов как выдержку из устного или письменного предложения, но, очевидно, заменить пробел подчеркиванием.
Как вы можете видеть из всех ответов здесь, есть много разных вариантов, некоторые с достоинствами, некоторые без. Именно этот метод я придерживаюсь неукоснительно, и, насколько мне известно, он наиболее часто используется в PHP. Он поддерживает порядок, легко понятен и редко, если вообще когда-либо, вижу ли я имя таблицы и понятия не имею, что он делает.
Надеюсь, это кому-нибудь поможет.