【问题标题】:Should I use a SQL Server keyword as a column name?我应该使用 SQL Server 关键字作为列名吗?
【发布时间】:2009-06-19 10:50:02
【问题描述】:

我正在设计一个数据库,最近将表中的一列命名为 DayOfWeek,完全忘记了 DayOfWeek 是 SQL Server 中的内置函数。现在我决定是否应该保持原样并使用方括号 [DayOfWeek] 引用列,或者更改列名以避免将来发生任何冲突。我对这个项目并不太了解,所以改变它并不太难。我脑海中的争论是 DayOfWeek 的列名对其目的非常有意义,所以我真的很想使用它......但它是一个保留字......并且可能会在未来引起痛苦(特别是如果引用该列时,我总是必须在其周围加上方括号)。

大家怎么看?

【问题讨论】:

    标签: sql-server naming-conventions naming


    【解决方案1】:

    我会更改它 - 我有一个名为 user 的旧表 - 方括号一直很痛苦。也许称它为 DayOfWeekName 或 DayOFWeekId

    乔什

    【讨论】:

    • 我将其更改为 DayOfWeekId。这实际上效果更好,因为我在列中存储了一个 int 来表示星期几。我曾经在数据库中有一个名为 User 的表,我再也不会这样做了。命名为保留字的表绝对是坏东西。我脑海中的争论是,列名作为保留字是否可以……但正如每个人都认为的那样,这是不值得的(而且你还是指出了一个更好的名字)。谢谢!
    【解决方案2】:

    杰夫,

    如果您不太容易(相对)轻松地重命名列,那么我建议您更改它。您已经确定了维护人员可能会在未来感到头疼的问题,我想现在清理它的成本实际上会更低(随着时间的推移),尤其是考虑到重命名某些东西并不是自文本编辑器和 IDE 中真正有效的搜索和替换功能的出现。

    重命名它真正困难的部分是获得安全完成工作所需的理解。你是独一无二的(作为作者)有这种理解。如果您要求我(例如)做这项工作,那么这可能不是一个具有成本效益的商业提议。

    所以... +1 用于自己修复吸盘... +2 用于不再这样做;-)

    干杯。基思。

    【讨论】:

    • 这是一个很好的观点......我现在重命名它相对容易,并且将来只会变得更难。每次有人需要键入两个方括号(或记住他们必须键入它们)时加起来,很快就会变成大量的时间(和金钱)。我按照乔希的建议选择了 DayOfWeekId。
    【解决方案3】:

    我总是确保我从不使用关键字作为任何变量/对象/函数的开头,因为您永远不确定您的目标语言是否会喜欢它。它通常会产生古怪的错误,需要一段时间才能找到。即使语法检查确实发现了它,这也意味着你浪费了更多的时间,而不是像 FurryKitten 这样的不同名称。

    我会避开DayOfWeek 并选择完全不同的东西,可能是WeekdayDayName。它只是省去了麻烦。

    另外 - 方括号只会让人头疼,而且有很多 SQL 开发人员不使用方括号 - 新开发人员最终会在加入后一段时间内出于习惯创建“非括号”代码团队。如果可能,应避免不常见的约定。

    【讨论】:

      【解决方案4】:

      如果容易的话就改变它。但作为一个好习惯,我会在任何地方使用方括号。一旦你习惯了,就不会比在单词之间加空格更痛苦了。

      【讨论】:

        【解决方案5】:

        我们在这里有一个名为 User 的表。如果可能的话,我会改变它。尽管 Josh 是正确的,但您可以放置​​方括号来表示它是一个表格,该任务很快就会变老。使用保留字作为表也使其他开发人员很难。如果有人不知道这是保留字,则可能很难确定查询为何不起作用。

        【讨论】:

          【解决方案6】:

          如果您使用任何数据库适配器/抽象库从数据库中获取数据,请不要担心。类将为您转义列名。如果您自己编写 SQL 查询,则可能会造成一些麻烦。您需要在查询中转义列名。

          附:我记得,我有几次像你这样的情况。但我被命名为“订单”列:-)

          【讨论】:

            【解决方案7】:

            我也会避免使用保留字,如果你不注意的话,你很容易陷入困境。

            【讨论】:

              猜你喜欢
              • 2015-02-03
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-03-28
              • 1970-01-01
              • 2023-03-09
              • 2011-02-04
              • 1970-01-01
              相关资源
              最近更新 更多