Я читал пару вопросов / ответов о StackOverflow, пытаясь найти «лучший», или я должен сказать, должен быть принятый способ именования таблиц в базе данных.
Большинство разработчиков склонны называть таблицы в зависимости от языка, на котором требуется база данных (JAVA, .NET, PHP и т. Д.). Однако я просто чувствую, что это неправильно.
То, как я до сих пор именовал таблицы, делает что-то вроде:
doctorsMain
doctorsProfiles
doctorsPatients
patientsMain
patientsProfiles
patientsAntecedents
Меня беспокоят следующие вещи:
- Разборчивость
- Быстрое определение модуля, в котором находится таблица (врачи || пациенты)
- Легко понять, чтобы не возникало недоразумений.
Я хотел бы прочитать любые мнения относительно соглашений об именах. Спасибо.
database
database-design
Марио Рикальде
источник
источник
Я обычно использую PascalCase, и сущности уникальны:
Он имитирует соглашения об именах для классов в моем приложении, сохраняя все аккуратно, чисто, согласованно и легко для всех.
источник
Поддержка SQL без учета регистра
Underscores_Scheme
. Однако современное программное обеспечение поддерживает любую схему именования. Однако иногда некоторые неприятные баги, ошибки или человеческий фактор могут привести кUPPERCASINGEVERYTHING
тому, что те, кто выбрал и то,Pascal_Case
и другоеUnderscore_Case
, живут всеми своими нервами в хорошем месте.источник
Совокупность большинства из вышеперечисленного:
Затем вы можете легко (даже автоматически) переводить имена между средами.
Но я бы добавил еще одно соображение: вы можете обнаружить, что при переходе от класса в своем приложении к таблице в базе данных есть другие факторы: объект базы данных имеет представления, триггеры, сохраненные процессы, индексы, ограничения и т. Д. также нужны имена. Так, например, вы можете обнаружить, что обращаетесь к таблицам только через представления, которые обычно представляют собой простой "select * from foo". Они могут быть идентифицированы как имя таблицы с суффиксом «_v» или вы можете поместить их в другую схему. Цель такого простого уровня абстракции состоит в том, что он может быть расширен при необходимости, чтобы разрешить изменения в одной среде, чтобы избежать влияния на другую. Это не нарушит приведенные выше предложения по именованию - нужно учитывать еще несколько вещей.
источник
Я использую подчеркивания. Несколько лет назад я работал над проектом Oracle, и мне показалось, что Oracle перевел все имена моих объектов в верхний регистр, что нарушает любую схему корпуса. Я на самом деле не специалист по Oracle, так что, возможно, был способ обойти это, о котором я не знал, но он заставил меня использовать подчеркивания, и я никогда не возвращался.
источник
Поскольку вопрос не относится к конкретной платформе или движку БД, я должен сказать, что для максимальной переносимости вы всегда должны использовать имена таблиц в нижнем регистре.
/ [a-z _] [a-z0-9 _] * / на самом деле единственный шаблон имен, который легко переводится между разными платформами. Буквенно-цифровые символы в нижнем регистре + нижнее подчеркивание всегда работают одинаково.
Как упоминалось в другом месте, имена отношений (таблиц) должны быть единственными: http://www.teamten.com/lawrence/programming/use-singular-nouns-for-database-table-names.html
источник
Я склонен согласиться с людьми, которые говорят, что это зависит от используемых вами соглашений (например, PascalCase для C # и snake_case для Ruby).
Однако никогда не было CamelCase.
источник
Прочитав множество других мнений, я думаю, что очень важно использовать соглашения об именах в языке, согласованность более важна, чем соглашения об именах, только если вы (и будете) единственный разработчик приложения. Если вам нужна удобочитаемость (что имеет огромное значение), вам лучше использовать соглашения об именах для каждого языка. Например, в MySQL я не предлагаю использовать CamelCase, поскольку не все платформы чувствительны к регистру. Так что здесь лучше использовать подчеркивание.
источник
camelCase
доcamelcase
. Так что иметь змеиный футляр намного лучше. Также уModern software however supports any kind of naming scheme
вас нет никаких гарантий, что вы напишете код для последней версии софта. Особенно для базы данных - обновление версии нетривиально, когда вы думаете о затратах на регрессию.Это мои пять центов. Я пришел к выводу, что если для одного проекта используются БД разных производителей, то есть два лучших пути:
Причина в том, что некоторые базы данных преобразуют все символы в верхний регистр, а некоторые в нижний. Итак, если
myTable
он у вас станетMYTABLE
илиmytable
когда вы будете работать с БД.источник
К сожалению, на этот вопрос нет "лучшего" ответа. Как заявил @David, согласованность намного важнее, чем соглашение об именах.
источник
существует большой выбор способов разделения слов, поэтому вам придется выбирать то, что вам больше нравится; но в то же время, похоже, почти все согласны с тем, что имя таблицы должно быть в единственном числе.
источник
Соглашения об именах существуют в рамках языка, и разные языки имеют разные соглашения об именах.
По умолчанию в SQL регистр не учитывается; Итак, snake_case - широко используемое соглашение. SQL также поддерживает идентификаторы с разделителями; Итак, смешанный регистр в опции, например camelCase (Java, где поля == столбцы) или PascalCase (C #, где таблицы == классы и столбцы == поля). Если ваш механизм БД не может поддерживать стандарт SQL, это проблема. Вы можете решить жить с этим или выбрать другой двигатель. (И то, почему C # просто должен был отличаться, вызывает раздражение у тех из нас, кто кодирует и то, и другое.)
Если вы намереваетесь когда-либо использовать только один язык в своих службах и приложениях, используйте соглашения этого языка на всех уровнях. В противном случае используйте наиболее широко используемые соглашения языка в домене, где этот язык используется.
источник