Существует ли соглашение об именах для MySQL? - PullRequest
133 голосов
/ 26 октября 2011

Вот как я это делаю:

  1. Имена таблиц в нижнем регистре, используются подчеркивания для разделения слов и в единственном числе (например, 'foo', 'foo_bar' и т. Д.
  2. Обычно у меня (не всегда) есть PK с автоматическим приращением. Я использую следующее соглашение: tablename_id (например, 'foo_id', 'foo_bar_id' и т. Д.).
  3. Когда таблица содержит столбец, который является стороннимключ, я просто копирую имя столбца этого ключа из любой таблицы. Например, скажем, таблица 'foo_bar' имеет FK 'foo_id' (где 'foo_id' - это PK 'foo').
  4. При определении FK для обеспечения ссылочной целостности я использую следующее: tablename_fk_columnname (например, в следующем примере 3 это будет 'foo_bar_foo_id'). Так как это комбинация имени таблицы / имени столбца, она гарантированно будет уникальной в базе данных..
  5. Я упорядочиваю столбцы следующим образом: PK, FK, а затем остальные столбцы в алфавитном порядке

Есть ли лучший, более стандартный способ сделать это?

Ответы [ 4 ]

91 голосов
/ 26 октября 2011

Я бы сказал, что в первую очередь: будьте последовательны.

Я считаю, что вы почти пришли к соглашению, которое вы изложили в своем вопросе. Хотя пара комментариев:

Точки 1 и 2 хороши, я считаю.

Пункт 3 - к сожалению, это не всегда возможно. Подумайте, как бы вы справились с одной таблицей foo_bar, в которой есть столбцы foo_id и another_foo_id, каждая из которых ссылается на столбец foo таблица foo_id. Вы можете подумать, как справиться с этим. Это немного угловой случай, хотя!

Пункт 4 - аналогичен пункту 3. Возможно, вы захотите ввести число в конце имени внешнего ключа, чтобы обеспечить наличие более одного ссылочного столбца.

Пункт 5 - Я бы этого избегал. Это дает вам немного и станет головной болью, если вы захотите добавить или удалить столбцы из таблицы позднее.

Некоторые другие пункты:

Соглашения об именовании индексов

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

Сингулярные и множественные имена столбцов

Возможно, было бы неплохо решить сложную проблему множественного числа против одиночного в именах столбцов, а также в именах таблиц. Эта тема часто вызывает большие дебаты в сообществе БД. Я бы придерживался единичных форм для имен таблиц и столбцов Там. Я сказал это.

Главное здесь, конечно, последовательность!

19 голосов
/ 26 октября 2011

Согласованность является ключом к любому стандарту именования. Пока это логично и непротиворечиво, вы там на 99%.

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

Чтобы ответить на ваш вопрос прямо - нет, MySQL не имеет предпочтительного соглашения / стандарта именования, так что вы можете использовать свой собственный вариант (и ваш кажется логичным).

7 голосов
/ 19 октября 2016

MySQL имеет краткое описание своих более или менее строгих правил:

https://dev.mysql.com/doc/internals/en/coding-style.html

Самый распространенный стиль кодирования для MySQL от Саймона Холиуэлла:

http://www.sqlstyle.guide/

Смотрите также этот вопрос: Существуют ли опубликованные рекомендации по стилю кодирования для SQL?

4 голосов
/ 26 октября 2011

К счастью, разработчики PHP не такие «фанаты верблюдов», как некоторые сообщества разработчиков, которых я знаю.

Ваши соглашения звучат хорошо.

Пока они а) просты и б) последовательны - я не вижу никаких проблем:)

PS: Лично я считаю 5) перебором ...

...