2010-08-29 2 views
51

Я нашел Naming Guidelines от MSDN, но есть ли какие-либо рекомендации для базы данных MSSQL от Microsoft?Соглашения об именах баз данных от Microsoft?

+2

Ниже приведены отличные ответы, но я бы добавил следующее: Согласование и соблюдение конвенции в вашей организации для организации вашей БД (включая именование) не менее важно. Например, мы сначала пытаемся сохранить столбцы первичного ключа, за которыми следуют все столбцы внешнего ключа, чтобы вы могли найти отношения с первого взгляда, а затем все дополнительные столбцы в алфавитном порядке, чтобы вы могли найти тот, который вам нужен, когда таблица имеет тонны столбцов , Мудрость наших конкретных конвенций спорна, но ценность того, что разговор в вашей команде, вероятно, не таков. –

ответ

99

Соглашения об именах, используемые в базе данных SQL Server AdventureWorks, демонстрируют множество лучших практик с точки зрения стиля.

Резюмируя:

  • Имена объектов легко понять
  • Имена таблиц не множественном (таблица «Пользователь» не «Пользователи»)
  • Сокращения мало, но разрешено (то есть Кол-во , Amt и т. Д.)
  • PascalCase, используемый исключительно с исключение определенных имен столбцов (то есть ряд строк)
  • Подчеркивания
  • Некоторые ключевые слова разрешены (т. Имя)
  • Хранимые процедуры предваряется "УСП"
  • Функции предваряются "UFN"

Вы можете найти более подробную информацию здесь:

Одно предостережение: соглашения об именах в базе данных могут быть весьма противоречивыми, и большинство разработчиков баз данных, с которыми я встречался, имеют личную заинтересованность в их стиле. Я слышал горячие споры о том, следует ли называть таблицу «OrderHeader» или «OrderHeaders».

+2

Мне нравится, что вы ссылаетесь на оригинальную статью, и я ДЕЙСТВИТЕЛЬНО люблю, что вы потрудились обобщить для всех. Жаль, что я не смог бы удвоить. –

+0

@ 8kb о названиях баз данных? Множественном? –

+0

Шесть лет спустя и все еще получаю +1 за хорошо выложенный ответ со ссылками и хорошим резюме. – AgapwIesu

10

Нет, нет никаких практик в приведенной ссылке, хорошо иметь в виду.

Что касается именования хранимых процедур - сделать не префикс их «sp_» Вы можете read more about why in this link:

«Не префикс хранимых процедур с sp_, так как этот префикс зарезервирован для идентифицирующие системные процедуры ».

+1

Я добавил соответствующую цитату из статьи, потому что она короткая, и мы не можем ожидать, что ссылка на 5-летнюю почту будет длиться вечно. – Gabe

+1

sp_ не зарезервирован, он просто заставляет SQL Server искать системные процедуры перед поиском пользовательских процедур. – 2013-11-13 21:11:10

4

Я не знаю, что означает «лучшие практики в терминах стиля» в ответе @ 8kb (на момент написания). Конечно, некоторые из перечисленных элементов («Названия таблиц не являются плюрализованными», «Нет подчеркиваний» и т. Д.) - это просто выбор стиля, который явно субъективен. Я бы подумал, что личными предпочтениями руководства по документации будет самый главный фактор здесь.

Что касается эвристики в SQL вообще (в отличие от проприетарного SQL, такого как T-SQL), есть только одна книга по теме: Joe Celko's SQL programming style. Многие из вариантов конфликта базы данных AdventureWorks от SQL Server противоречат рекомендациям Celko.

Соглашение об именовании Celko основано на международном стандарте ISO 11179, например. указывает, что для разделения элементов в имени следует использовать разделительный символ (например, подчеркивание). Другие варианты стиля аналогичным образом подкрепляются исследованиями, например. используя исключительно строчные буквы для имен столбцов, что помогает сканировать человеческим глазом. Несомненно, есть и субъективные личные предпочтения, но они основаны на многолетнем опыте в этой области.

С другой стороны, в документах SQL Server улучшилось положение в последние годы, например. Ключевые слова SQL заглавные, полуколоны для разделения заявлений и т. Д. Приключенческие работы - это значительное улучшение в отношении Northwind и пабов. Теперь почему не может функция скриптинга в Management Studio выплюнуть код, который немного проще на глазу ?!

Смежные вопросы