Подтвердить что ты не робот

Именование таблиц: Подчеркивание против Camelcase? Пространства имен? Сингулярный против множественного числа?

Я читал пару вопросов/ответов на StackOverflow, пытаясь найти "лучший", или должен сказать, должен быть принят, чтобы назвать таблицы в базе данных.

Большинство разработчиков, как правило, называют таблицы в зависимости от языка, который требует базы данных (JAVA,.NET, PHP и т.д.). Однако я просто чувствую, что это неправильно.

То, как я назвал таблицы до сих пор, делает что-то вроде:

doctorsMain
doctorsProfiles
doctorsPatients
patientsMain
patientsProfiles
patientsAntecedents 

Я имею в виду:

  • Четкость
  • Быстрая идентификация модуля, в котором находится таблица (врачи || пациенты)
  • Легко понять, чтобы избежать путаницы.

Я хотел бы прочитать любые мнения относительно соглашений об именах. Спасибо.

4b9b3361

Ответ 1

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

Ответ 2

Я обычно использую PascalCase и сущности являются единственными:

DoctorMain
DoctorProfile
DoctorPatient

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

Ответ 3

Нечувствительность к регистру SQL поддерживается Underscores_Scheme. Однако современное программное обеспечение поддерживает любую схему именования. Однако иногда некоторые неприятные ошибки, ошибки или человеческий фактор могут привести к UPPERCASINGEVERYTHING, чтобы те, кто выбрал схему Pascal_Case и Underscore_Case, живут со всеми своими нервами в хорошем месте.

Ответ 4

Агрегация большинства из приведенных выше:

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

Затем вы можете легко перевести (даже автоматически) имена между средами.

Но я бы добавил еще одно соображение: вы можете обнаружить, что есть другие факторы, когда вы переходите от класса в своем приложении к таблице в своей базе данных: объект базы данных имеет представления, триггеры, хранимые процедуры, индексы, ограничения, и т.д., которые также нуждаются в именах. Например, вы можете получить доступ к таблицам только через представления, которые обычно являются просто "select * from foo". Они могут быть идентифицированы как имя таблицы только с суффиксом "_v" или вы можете поместить их в другую схему. Цель такого простого слоя абстракции состоит в том, что его можно расширить, когда это необходимо, чтобы изменения в одной среде не влияли на другие. Это не нарушит вышеупомянутые предложения по именованию - всего несколько вещей, которые нужно учитывать.

Ответ 5

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

Ответ 6

Я склонен соглашаться с людьми, которые говорят, что это зависит от соглашений используемого языка (например, PascalCase для С# и snake_case для Ruby).

Никогда не используйте camelCase.

Ответ 7

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

/[a-z _] [a-z0-9 _] */действительно единственный шаблон имен, который легко транслируется между различными платформами. Строчные буквенно-цифровые + подчеркивания всегда будут работать последовательно.

Как упоминалось в другом месте, имена отношений (таблиц) должны быть единичными: http://www.teamten.com/lawrence/programming/use-singular-nouns-for-database-table-names.html

Ответ 8

После прочтения многих других мнений, я думаю, что очень важно использовать соглашения об именах языка, согласованность важнее, чем соглашения об именах, только если вы (и будете) единственным разработчиком приложения. Если вам нужна читаемость (что имеет огромное значение), лучше использовать соглашения об именах для каждого языка. В MySQL, например, я не предлагаю использовать CamelCase, поскольку не все платформы чувствительны к регистру. Итак, здесь подчеркивание лучше.

Ответ 9

К сожалению, нет "лучшего" ответа на этот вопрос. Поскольку @David утверждал, что согласованность гораздо важнее, чем соглашение об именах.

Ответ 10

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

Ответ 11

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

  1. Используйте подчеркивание.
  2. Используйте верблюжий чехол с кавычками.

Причина в том, что некоторые базы данных преобразуют все символы в верхний регистр, а некоторые в строчные. Таким образом, если у вас есть myTable он станет MYTABLE или mytable когда вы будете работать с БД.

Ответ 12

Соглашения об именах существуют в рамках языка, и разные языки имеют разные соглашения об именах.

SQL по умолчанию не чувствителен к регистру; Итак, snake_case является широко используемым соглашением. SQL также поддерживает идентификаторы с разделителями; Итак, смешанный регистр в опции, такой как camelCase (Java, где поля == столбцы) или PascalCase (С#, где таблицы == классы и столбцы == поля). Если ваш движок БД не может поддерживать стандарт SQL, то это его проблема. Вы можете решить жить с этим или выбрать другой двигатель. (И почему С# просто должен был отличаться, это точка усугубления для тех из нас, кто пишет в обоих.)

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