Должен ли я использовать ключевое слово SQL Server в качестве имени столбца? - PullRequest
8 голосов
/ 19 июня 2009

Я проектирую базу данных и недавно назвал столбец в таблице DayOfWeek, полностью забыв, что DayOfWeek является встроенной функцией в SQL Server. Теперь я решаю, следует ли мне оставить все как есть и ссылаться на столбец в квадратных скобках [DayOfWeek] или изменить имя столбца, чтобы избежать конфликтов в будущем. Я не слишком далеко в проекте, поэтому изменить его не так уж сложно. Спор в моей голове состоит в том, что название столбца DayOfWeek просто так важно для его цели, поэтому я действительно хочу использовать его ... но это зарезервированное слово ... и может причинить боль в будущем (особенно если Я всегда должен ставить квадратные скобки вокруг него при ссылке на столбец).

Что все думают?

Ответы [ 7 ]

12 голосов
/ 19 июня 2009

Я бы изменил это - у меня есть устаревшая таблица с именем user - это боль в квадратных скобках все время. возможно, назовите его DayOfWeekName или DayOFWeekId

Josh

4 голосов
/ 19 июня 2009

Джеф,

Если вы не слишком далеко вниз по дорожке, чтобы переименовать колонку (относительно) безболезненно, то я бы порекомендовал вам ее изменить. Вы определили одну вероятную будущую головную боль для обслуживающего персонала, и я думаю, что на самом деле было бы дешевле (со временем) убрать ее сейчас, особенно если учесть, что переименование чего-либо - не адское колесо после Появление действительно эффективных функций поиска и замены в текстовых редакторах и IDE.

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

Итак ... +1 за починку присоски самому ... и +2 за то, что больше не будем; -)

Приветствия. Кит.

1 голос
/ 19 июня 2009

Я всегда уверен, что никогда не использую ключевое слово в качестве начала любой переменной / объекта / функции просто потому, что вы никогда не уверены, понравится ли это вашему целевому языку. Он часто может генерировать дурацкие ошибки, которые требуют времени для поиска. Даже если проверка синтаксиса обнаруживает это, это означает, что вы потратили больше времени, чем если бы это было другое имя, например FurryKitten.

Я бы избегал DayOfWeek и выбрал бы что-то совершенно другое, может быть Weekday или DayName. Это просто избавляет от хлопот.

Плюс - квадратные скобки просто создают головную боль, и есть много разработчиков SQL, которые не используют скобки - новые разработчики в конечном итоге создадут «не заключенный в скобки» код по привычке в течение некоторого времени после присоединения команда. По возможности следует избегать необычных соглашений.

0 голосов
/ 19 июня 2009

Я бы также не использовал зарезервированные слова, вы можете легко получить неприятности, если не будете обращать внимания.

0 голосов
/ 19 июня 2009

Если вы используете какой-либо адаптер / библиотеку абстракции БД для получения данных из базы данных, не беспокойтесь Класс будет экранировать имена столбцов для вас. Если вы пишете SQL-запросы самостоятельно, это может создать некоторые проблемы. Вам нужно избегать имен столбцов в ваших запросах.

P.S. Я помню, пару раз я был в такой ситуации, как ты. Но я назвал колонку как "порядок": -)

0 голосов
/ 19 июня 2009

У нас есть таблица, которая называется User. Если это вообще возможно, я бы изменил это. Хотя Джош прав, вы можете поставить квадратные скобки, чтобы обозначить, что это таблица, эта задача очень быстро стареет. Использование зарезервированных слов в качестве таблиц также затрудняет работу других разработчиков. Если кто-то не знает, что это зарезервированное слово, может быть трудно определить, почему запрос не работает.

0 голосов
/ 19 июня 2009

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

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