Существует ли соглашение об именах для MySQL?
Вот как я это делаю:
- Имена таблиц в нижнем регистре, подчеркивания используются для разделения слов и в единственном числе (например,
foo
, foo_bar
и т.д.
- У меня вообще (не всегда) есть автоинкремент PK. Я использую следующее соглашение:
tablename_id
(например, foo_id
, foo_bar_id
и т.д.).
- Когда таблица содержит столбец, который является внешним ключом, я просто копирую имя столбца этого ключа из любой таблицы, из которой он получен. Например, скажем, таблица
foo_bar
имеет FK foo_id
(где foo_id
- это PK foo
).
- При определении FK для обеспечения ссылочной целостности я использую следующее:
tablename_fk_columnname
(например, продолжая пример 3, это будет foo_bar_foo_id
). Поскольку это комбинация имени таблицы/имени столбца, она гарантированно будет уникальной в базе данных.
- Я упорядочиваю столбцы следующим образом: PKs, FKs, а затем остальные столбцы в алфавитном порядке.
Есть ли лучший, более стандартный способ сделать это?
Ответы
Ответ 1
Я бы сказал, что в первую очередь: быть последовательным.
Я считаю, что вы почти там с соглашениями, которые вы указали в своем вопросе. Несколько комментариев:
Точки 1 и 2 хороши, я считаю.
Пункт 3 - к сожалению, это не всегда возможно. Подумайте, как бы вы справились с одной таблицей foo_bar
с столбцами foo_id
и another_foo_id
, которые ссылаются на столбец foo
table foo_id
. Вы можете подумать, как с этим справиться. Это немного угловой случай, хотя!
Точка 4 - аналогична точке 3. Вы можете ввести число в конце имени внешнего ключа, чтобы иметь более одного столбца ссылок.
Точка 5 - я бы этого избегал. Он немного дает вам и станет головной болью, когда вы хотите добавить или удалить столбцы из таблицы позже.
Некоторые другие моменты:
Соглашения об именах индексов
Возможно, вы захотите ввести соглашение об именах для индексов - это будет большой помощью для любой работы с метаданными базы данных, которую вы, возможно, захотите выполнить. Например, вы можете просто просто запросить индекс foo_bar_idx1
или foo_idx1
- полностью для вас, но стоит подумать.
Синтаксис против множественных имен столбцов
Это может быть хорошей идеей для решения сложной проблемы множественного числа против одного в именах столбцов, а также имени вашей таблицы. Этот вопрос часто вызывает большие обсуждения в сообществе БД. Я бы придерживался сингулярных форм для имен таблиц и столбцов. Там. Я это сказал.
Главное здесь, конечно, последовательность!
Ответ 2
Согласованность - это ключ к любому стандарту именования. Пока это логично и последовательно, вы на 99%.
Стандарт сам по себе является личным предпочтением - поэтому, если вам нравится ваш стандарт, а затем запустите его.
Чтобы ответить на ваш вопрос прямо - нет, у MySQL нет предпочтительного соглашения об именах/стандарте, так что кастинг вашего файла в порядке (и ваш кажется логичным).
Ответ 3
В MySQL есть краткое описание их более или менее строгих правил:
https://dev.mysql.com/doc/internals/en/coding-style.html
Наиболее распространенный стиль кодирования для MySQL от Саймона Холиуэлла:
http://www.sqlstyle.guide/
Смотрите также этот вопрос:
Существуют ли опубликованные рекомендации по стилю кодирования для SQL?
Ответ 4
К счастью, разработчики PHP не являются "фанатиками для верблюдов", как некоторые сообщества разработчиков, которых я знаю.
Ваши соглашения звучат нормально.
Просто, пока они a) простые, и b) последовательно - я не вижу никаких проблем:)
PS:
Лично, я думаю, 5) переполнен...