Вот как я это делаю:
- Имена таблиц в нижнем регистре, используются подчеркивания для разделения слов и в единственном числе (например
foo
,foo_bar
и т. Д.) - У меня вообще (не всегда) есть автоприращение ПК. Я использую следующее соглашение:
tablename_id
(напримерfoo_id
,foo_bar_id
и т. Д.). - Когда таблица содержит столбец, который является внешним ключом, я просто копирую имя столбца этого ключа из любой таблицы, из которой он получен. Например, скажем, таблица
foo_bar
имеет FKfoo_id
(гдеfoo_id
PKfoo
). - При определении FK для обеспечения ссылочной целостности, я использую следующее:
tablename_fk_columnname
(например, продолжая пример 3, это будетfoo_bar_foo_id
). Поскольку это комбинация имени таблицы / имени столбца, она гарантированно будет уникальной в базе данных. - Я упорядочиваю столбцы так: PK, FK, а затем остальные столбцы в алфавитном порядке.
Есть ли лучший, более стандартный способ сделать это?
mysql
naming-conventions
mysql-workbench
StackOverflowNewbie
источник
источник
id_tableB
=> о, нет никакого другого имени столбцаid
, последовательностьid_tableB
=>id_tableB
просто выглядит аккуратнее ... или, как это делает OP:foo_id
=>foo_id
а неfoo_id
=>id
Ответы:
Я бы сказал, что в первую очередь: будьте последовательны.
Я считаю, что вы почти пришли к соглашению, которое вы изложили в своем вопросе. Пара комментариев, хотя:
Точки 1 и 2 хороши, я считаю.
Пункт 3 - к сожалению, это не всегда возможно. Подумайте, как бы вы справились с одной таблицей, в
foo_bar
которой есть столбцы,foo_id
иanother_foo_id
обе из которых ссылаются на столбецfoo
таблицыfoo_id
. Вы можете подумать, как справиться с этим. Это немного угловой случай, хотя!Пункт 4 - аналогичен пункту 3. Возможно, вы захотите ввести число в конце имени внешнего ключа, чтобы обеспечить наличие более одного ссылочного столбца.
Пункт 5 - я бы этого избежал. Это дает вам мало и станет головной болью, когда вы захотите добавить или удалить столбцы из таблицы позже.
Некоторые другие моменты:
Соглашения об именовании индексов
Возможно, вы захотите ввести соглашение об именовании для индексов - это будет очень полезно для любой работы с метаданными базы данных, которую вы, возможно, захотите выполнить. Например, вы можете просто захотеть вызвать индекс
foo_bar_idx1
илиfoo_idx1
- полностью на ваше усмотрение, но стоит подумать.Сингулярные и множественные имена столбцов
Это может быть хорошей идеей для решения сложной проблемы множественного числа против одиночного в именах столбцов, а также в именах таблиц. Эта тема часто вызывает большие дебаты в сообществе БД. Я бы придерживался форм единственного числа для имен таблиц и столбцов. Там. Я это сказал.
Главное здесь, конечно, последовательность!
источник
documenttype
илиdocument_type
. Я бы предпочел последний, но в большинстве случаев у меня есть отношения многие ко многим, и мне нужен стол, похожий наdocument_document_type
. Любые предложения, как справиться с этим?Согласованность является ключом к любому стандарту именования. Пока это логично и последовательно, вы там на 99%.
Сам стандарт - очень личное предпочтение - так что, если вам нравится ваш стандарт, то используйте его.
Чтобы ответить на ваш вопрос прямо - нет, MySQL не имеет предпочтительного соглашения / стандарта именования, так что переходить на ваш вариант - это хорошо (и ваш кажется логичным).
источник
MySQL имеет краткое описание их более или менее строгих правил:
https://dev.mysql.com/doc/internals/en/coding-style.html
Наиболее распространенный стиль кодирования для MySQL от Simon Holywell:
http://www.sqlstyle.guide/
См. Также этот вопрос: существуют ли опубликованные рекомендации по стилю кодирования для SQL?
источник
К счастью, разработчики PHP не такие «фанаты верблюдов», как некоторые сообщества разработчиков, которых я знаю.
Ваши соглашения звучат хорошо.
Пока они а) просты и б) последовательны - я не вижу проблем :)
PS: Лично я думаю 5) это перебор ...
источник
Простой ответ: НЕТ
Ну, по крайней мере, соглашение об именах, как таковое, поощряемое Oracle или сообществом, нет, однако, в основном вы должны знать о соблюдении правил и ограничений для идентификаторов, как указано в документации MySQL: https://dev.mysql.com /doc/refman/8.0/en/identifiers.html
Что касается соглашения об именах, которому вы следуете, я думаю, что это нормально, просто число 5 немного излишне, я думаю, что большинство визуальных инструментов для управления базами данных предлагают опцию для сортировки имен столбцов (я использую DBeaver, и он есть), поэтому если у purpouse хорошая визуальная презентация вашего стола, вы можете использовать эту опцию, которую я упоминаю.
По личному опыту я бы порекомендовал это:
lower_case_table_names
он неправильно настроен, и ваш сервер начинает выдавать ошибки, просто не распознавая ваш стандарт camelCase или PascalCase (проблема чувствительности к регистру).А как насчет именования "Plural vs Singular"? Ну, это в основном ситуация личных предпочтений. В моем случае я пытаюсь использовать множественные имена для таблиц, потому что я думаю, что таблица - это совокупность элементов или пакет, содержащий элементы, поэтому имя во множественном числе имеет смысл для меня; и уникальные имена для столбцов, потому что я вижу столбцы как атрибуты, которые описывают эти элементы таблицы в единственном числе.
источник