Я бы сказал, что в первую очередь: будьте последовательны.
Я считаю, что вы почти пришли к соглашению, которое вы изложили в своем вопросе. Хотя пара комментариев:
Точки 1 и 2 хороши, я считаю.
Пункт 3 - к сожалению, это не всегда возможно. Подумайте, как бы вы справились с одной таблицей foo_bar
, в которой есть столбцы foo_id
и another_foo_id
, каждая из которых ссылается на столбец foo
таблица foo_id
. Вы можете подумать, как справиться с этим. Это немного угловой случай, хотя!
Пункт 4 - аналогичен пункту 3. Возможно, вы захотите ввести число в конце имени внешнего ключа, чтобы обеспечить наличие более одного ссылочного столбца.
Пункт 5 - Я бы этого избегал. Это дает вам немного и станет головной болью, если вы захотите добавить или удалить столбцы из таблицы позднее.
Некоторые другие пункты:
Соглашения об именовании индексов
Возможно, вы захотите ввести соглашение об именовании для индексов - это будет отличным подспорьем для любой работы с метаданными базы данных, которую вы, возможно, захотите выполнить. Например, вы можете просто захотеть вызвать индекс foo_bar_idx1
или foo_idx1
- полностью на ваше усмотрение, но стоит подумать.
Сингулярные и множественные имена столбцов
Возможно, было бы неплохо решить сложную проблему множественного числа против одиночного в именах столбцов, а также в именах таблиц. Эта тема часто вызывает большие дебаты в сообществе БД. Я бы придерживался единичных форм для имен таблиц и столбцов Там. Я сказал это.
Главное здесь, конечно, последовательность!