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