существует ли соглашение об именах для mysql?

<p>вот как я это делаю:</p><ol> <li>имена таблиц в нижнем регистре, используют подчеркивания для разделения слов и в единственном числе (например, 'foo', 'foo\_bar' и т.д.</li> <li>у меня вообще (не всегда) есть автоинкремент pk. я использую следующее соглашение: tablename\_id (например, 'foo\_id', 'foo\_bar\_id' и т.д.).</li> <li>когда таблица содержит столбец, который является внешним ключом, я просто копирую имя столбца этого ключа из любой таблицы, из которой он получен. например, скажем, таблица "foo\_bar" имеет fk "foo\_id" (где "foo\_id" - это pk "foo").</li> <li>при определении fk для обеспечения ссылочной целостности я использую следующее: tablename\_fk\_columnname (например, в соответствии с примером 3 это будет 'foo\_bar\_foo\_id'). поскольку это комбинация имени таблицы/имени столбца, она гарантированно будет уникальной в базе данных.</li> <li>я упорядочиваю столбцы так: pk, fk, а затем остальные столбцы в алфавитном порядке.</li> </ol><p>есть ли лучший, более стандартный способ сделать это?</p>

<p>я бы сказал, что в первую очередь: будьте последовательны.</p><p>я считаю, что вы почти пришли к соглашению, которое вы изложили в своем вопросе. пара комментариев, хотя:</p><p>точки 1 и 2 хороши, я считаю.</p><p>пункт 3 - к сожалению, это не всегда возможно. подумайте, как бы вы справились с одной таблицей <code>foo\_bar</code>, в которой есть столбцы <code>foo\_id</code> и <code>another\_foo\_id</code>, которые оба ссылаются на столбец <code>foo</code> таблицы <code>foo\_id</code>. вы можете подумать, как справиться с этим. это немного угловой случай, хотя!</p><p>пункт 4 - аналогичен пункту 3. возможно, вы захотите ввести число в конце имени внешнего ключа, чтобы обеспечить наличие более одного ссылочного столбца.</p><p>пункт 5 - я бы этого избежал. это дает вам мало и станет головной болью, когда вы захотите добавить или удалить столбцы из таблицы на более поздний срок.</p><p>некоторые другие моменты:</p><p><strong> соглашения об именовании индексов </strong></p><p>возможно, вы захотите ввести соглашение об именовании для индексов - это будет очень полезно для любой работы с метаданными базы данных, которую вы, возможно, захотите выполнить. например, вы можете просто захотеть вызвать индекс <code>foo\_bar\_idx1</code> или <code>foo\_idx1</code> - полностью на ваше усмотрение, но стоит подумать.</p><p><strong> сингулярные и множественные имена столбцов </strong></p><p>возможно, было бы неплохо решить сложную проблему множественного числа против одиночного в именах столбцов, а также в именах таблиц. эта тема часто вызывает <a href="https://stackoverflow.com/questions/338156/table-naming-dilemma-singular-vs-plural-names">большие дебаты</a> в сообществе бд. я бы придерживался форм единственного числа для имен таблиц и столбцов. там. я сказал это.</p><p>главное здесь, конечно, последовательность!</p>

<p>согласованность является ключом к любому стандарту именования. пока это логично и последовательно, вы там на 99%.</p><p>сам стандарт - очень личное предпочтение - так что, если вам нравится ваш стандарт, то используйте его.</p><p>чтобы ответить на ваш вопрос прямо - нет, mysql не имеет предпочтительного соглашения/стандарта именования, так что вы можете использовать свой собственный вариант (и ваш кажется логичным).</p>

<p>mysql имеет краткое описание их более или менее строгих правил:</p><p> <a href="https://dev.mysql.com/doc/internals/en/coding-style.html">https://dev.mysql.com/doc/internals/en/coding-style.html</a> </p><p>наиболее распространенный стиль кодирования для mysql от simon holywell:</p><p> <a href="http://www.sqlstyle.guide/">http://www.sqlstyle.guide/</a> </p><p>см. также этот вопрос: <a href="https://stackoverflow.com/questions/5951245/are-there-any-published-coding-style-guidelines-for-sql/40134564#40134564">существуют ли опубликованные рекомендации по стилю кодирования для sql?</a> </p>

<p>к счастью, php разработчики не являются "фанатами верблюдов", как некоторые сообщества разработчиков, которых я знаю.</p><p>ваши соглашения звучат хорошо.</p><p>пока они а) просты и б) последовательны - я не вижу проблем :)</p><p>ps: лично я думаю 5) это перебор ...</p>