Соглашение об именовании баз данных - PullRequest
1 голос
/ 18 сентября 2011

Я придерживался следующего соглашения о присвоении имен для своей базы данных.

  1. строчные буквы и множественное число для всех имен таблиц.
  2. _ (Подчеркнуто) в таблице определяет отношение к родительской таблице.
  3. _ (Подчеркивание) в столбце определяет внешний ключ.

Поскольку я предпочитаю использовать описательные имена для таблиц и столбцов, я часто использую camelCasing для сущности, имеющей два или более слов и не определяющей никаких отношений. например.

lastVisitIp
lastVisitDate
registrationDate

Откровенно говоря, мне не очень нравится идея использования CamelCasing, так как я чувствую, что это несколько уродливо, и я понятия не имею, почему.

Я хотел бы узнать от экспертов, как вы оцениваете название колонки в этой ситуации? Должен ли я пойти дальше и использовать верблюжью шкуру, должен ли я использовать Underscore(_) или любую другую альтернативу .?

P.S: Я проверил соглашение об именах, используемое в Wordpress, и они используют (_) Underscore для многоцелевого использования. :)

Спасибо.

Ответы [ 4 ]

3 голосов
/ 18 сентября 2011

Я считаю, что множественные числа иногда могут усложнить задачу, так как в случае таблицы Users пользователи могут иметь значение 's', а в случае названия таблицы - Companies. Так что лучше все время придерживаться единственного числа. Также во время присоединения sql к заявлению я склонен ошибаться с Users.user_id = Companies.owner_id, но не с User.user_id = Company.owner_id, так как вы должны быть осторожны с 's' и 'ies' все время.

Подчеркивание предпочтительнее, так как имя столбца может состоять из нескольких слов

is_user_registered_last_year против isUserRegisteredLastYear

как вы можете видеть с большим количеством алфавитов, его Труднее читать верблюжий случай.

2 голосов
/ 04 февраля 2014

Я ценю, что это старый пост, но я хотел бы добавить свои два цента.

Таблицы базы данных должны, если возможно, называться во множественном числе, но стараться сохранять некоторую чувствительность к ним, чтобы имя указывало на содержание, чтобы его можно было легко идентифицировать.

Возьмем, к примеру, следующее.

В вашем приложении есть пользователи, ваша модель будет User, поскольку она относится к одному пользователю, таблица базы данных будет users, поскольку она представляет собой набор отдельных пользователей. Теперь скажите, что у вас есть профили для этих пользователей, есть несколько вариантов именования, но мне кажется, что он действительно подходит.

  1. У вас может возникнуть искушение назвать эту таблицу users_profiles, но при прочтении это может означать отношение один ко многим, поскольку это профили пользователей.
  2. Вы также можете испытать искушение назвать эту таблицу user_profile, что предполагает, что это отношение один к одному, но с другой стороны, это подразумевает, что эта таблица не является коллекцией, а представляет собой один профиль для один пользователь.
  3. Вместо этого лучшим соглашением об именах для этого будет user_profiles, поскольку это набор профилей пользователей, поскольку один профиль связан с одним пользователем.

В этой таблице профиля вы хотите указать исходного пользователя, поэтому у вас будет столбец с именем user_id, не users_id, а user_id. Как и для любого другого имени столбца, вы должны попытаться сохранить его как одно слово, все в нижнем регистре. Если вы не можете назвать этот столбец одним словом, относитесь к нему как к переменной и назовите его подчеркиванием. Это полезно, так как в случае, когда у вас есть несколько столбцов, в которых первое слово совпадает, это создает своего рода подколлекцию, подразумевающую, что они связаны, что было бы правильно.

Это правда, что подчеркивание подразумевает связь, поэтому таблица называется user_profiles, а поле называется user_id, но 9 раз из 10 вы не будете иметь отношения к полю, которое это не идентификатор, поэтому вопрос о причастности исчезает.

Выше уже упоминалось, что использование единственного числа во множественном числе может сбивать с толку. Аргумент был, что множественное число может оканчиваться на s или ies. Стоит отметить, что ies на самом деле заканчивается s, поэтому проблема ошибочна. Кроме того, сохранение имени таблицы в единственном числе на самом деле создает еще большую путаницу, поскольку это не означает, что она сразу подразумевает коллекцию, и это означает, что имена таблиц могут заканчиваться практически любой другой буквой.

Существуют таблицы, имена которых подразумевают множественное число без его окончания в s. Например, это может быть что-то вроде user_history. Это имя таблицы является вполне приемлемым и легко идентифицируемым именем, поскольку история по умолчанию множественная, и эта таблица содержит историю для пользователя.

Чего не делать

  • Смешайте подчеркивания и кейсы. Выберите один стандарт и следуйте ему, не используйте столбцы CamelCase в сочетании с подчеркиванием, так как это может привести к путанице и выглядеть беспорядочно.
  • Держите все в нижнем регистре. Нет необходимости использовать заглавные буквы, поскольку это может только добавить к путанице, трактовать имена таблиц и столбцов как выдержку из устного или письменного предложения, но, очевидно, заменить пробел подчеркиванием.

Как вы можете видеть из всех ответов здесь, есть много разных вариантов, некоторые с достоинствами, некоторые без. Именно этот метод я придерживаюсь неукоснительно, и, насколько мне известно, он наиболее часто используется в PHP. Он поддерживает порядок, легко понятен и редко, если вообще когда-либо, вижу ли я имя таблицы и понятия не имею, что он делает.

Надеюсь, это кому-нибудь поможет.

1 голос
/ 18 сентября 2011

Вчера я думал точно так же, думая о новом большом проекте, который я собираюсь начать, и я пришел к тому же выводу: используйте _, чтобы определить отношения и ФК, случай верблюда - все остальное.Пример:

party
partyPerson
partyOrganization
partyPerson_partyOrganization (how a person relates to an organization)
partyOrganizationLegal
party_address
party_contactMechanism
address
contactMechanism

Если вы подчеркнете все, будет труднее определить, что является ссылкой, а что нет.

Я также думаю, что вы должны использовать единичные имена везде (этологично и реже тебя смущает).

1 голос
/ 18 сентября 2011

Будьте последовательны

Если вы собираетесь использовать префиксы, используйте его везде.Если вы собираетесь использовать внешний ключ для другой таблицы, везде используйте одно и то же имя столбца.Если вы собираетесь разделять слова подчеркиванием, делайте это везде.

Как вы структурируете свои соглашения об именах, зависит только от вас, просто придерживайтесь логики, чтобы, когда вы вернетесь через несколько месяцев, вы знали, что делает таблица.

Сам я использую подчеркивание и делаю это везде, поэтому все имеет смысл.

...