Являются ли периоды в именах объектов плохой практикой? - PullRequest
0 голосов
/ 05 марта 2019

Например, ограничение для значения по умолчанию 0 может быть названо DF__tablename.columnname.

Хотя мой поиск этой плохой практики не дает результатов, в многочисленных примерах ограничений, которые я видел на SO и многих других сайтах, я никогда не замечал точку.

Ответы [ 2 ]

2 голосов
/ 05 марта 2019

Использование точки в имени объекта - плохая практика.

Не используйте символ точки в идентификаторе. Да, это можно сделать, но недостатки перевешивают любые преимущества.


Т.Л., др

Специальные символы, такие как точка, не допускаются в обычных идентификаторах. Если идентификатор не соответствует правилам для обычного идентификатора, то ссылки на идентификатор должны быть заключены в квадратные скобки (или двойные кавычки ANSI).

https://docs.microsoft.com/en-us/sql/relational-databases/databases/database-identifiers?view=sql-server-2017

В терминах точки (символ точки) использование этого в идентификаторе не допускается в обычном идентификаторе; но его можно использовать в квадратных скобках.

Символ точки является еще более специальным символом в SQL; используется для отделения идентификатора от предшествующего квалификатора.

  SELECT mytable.mycolumn FROM mytable

Мы могли бы также написать это как

  SELECT [mytable].[mycolumn] FROM mytable

Мы могли бы также написать

  SELECT [mytable.mycolumn] FROM mytable

но это означает что-то совсем другое. При этом мы не ссылаемся на столбец с именем mycolumn, теперь мы ссылаемся на идентификатор, содержащий символ точки.

SQL Server отлично с этим справится.

Но если мы сделаем это и начнем использовать символ точки в наших идентификаторах, мы вызовем замешательство и разочарование у будущих читателей. Любая выгода, которую мы получили бы, используя точечные символы в идентификаторах, будет значительно перевешена недостатком для других.

Аналогично, почему мы не создаем таблицы с именем WHERE (1=1) OR или не создаем столбцы с именем SUBSTR(foo.bar,1,10), чтобы избежать таких чудовищ, как

  SELECT [SUBSTR(foo.bar,1,10)] FROM [WHERE (1=1)] OR]

Это может быть действительный SQL, но это заставит будущих читателей очень расстроиться и заставить их проклинать нас, наших потомков и близких. Не заставляй их делать это. Ради любви ко всему хорошему и прекрасному в этом мире, не используйте точечные символы в идентификаторах.

0 голосов
/ 05 марта 2019

Вполне допустимо иметь точки в именах объектов. Однако для этого необходимо использовать квадратные скобки вокруг имени объекта при обращении к нему. Если вы забудете эти квадратные скобки, вы получите несколько сообщений об ошибках, которые могут быть менее интуитивными для неопытного разработчика. По этой причине я рекомендую не использовать точки в именах объектов. Я также думаю, что это основная причина, по которой вы не часто видите примеры периодов в именах объектов в Интернете.

В вашем примере вы можете использовать другое подчеркивание вместо точки, например: DF__tablename_columnname

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...