列名中应该使用下划线吗?

问题描述 投票:0回答:3

从技术上讲,下划线字符 (

_
) 可以在列名称中使用。但是在列名中使用下划线是个好习惯吗?它似乎使该名称更具可读性,但我担心使用它们可能会出现的技术问题。列名称不会带有下划线前缀。

sql sql-server-2005 database-design
3个回答
13
投票

在名称中使用下划线不存在直接的技术问题。事实上,我经常这样做并且发现它很有帮助。 Ruby 甚至会在列名中自动生成下划线,而 SQL Server 自己的系统对象也使用下划线。

一般来说,在数据库中遵循一些命名约定是个好主意,如果包含下划线,没什么大不了的。

如果在引用名称时使用方括号或引号将名称括起来,则名称中可以使用任何字符。不过,我会尽量避免使用空格,因为它会使内容更难阅读。

在为 SQL Server 制定命名约定时,您需要避免一些事情。他们是:

  1. 不要在存储过程前加上
    sp_
    前缀,除非您计划将它们用于系统范围。
  2. 不要在列前添加数据类型前缀(因为您可能想要更改它)。
  3. 避免将内容放入 sys 模式中(你可以通过黑客攻击,但你不应该这样做)。
  4. 假装您的代码区分大小写,即使事实并非如此。您永远不知道什么时候您会到达将 tempdb 设置为区分大小写的服务器。
  5. 创建临时表时,始终指定字符串类型的排序规则。

8
投票

这样没有问题,只要能让列名更清晰即可。


2
投票

如果你查看 PostgreSQL 文档,你可能会发现几乎所有对象都以 Snake Case 命名。

此外,MySQL、MS SQL Server、Oracle DB 和前面提到的 PostgreSQL 中的很多系统对象都使用 Snake Case。

根据我个人的经验,使用下划线命名对象并不是什么大问题。

但是有一个警告。

下划线符号是 SQL LIKE 运算符中任何符号的占位符:

SELECT * FROM FileList WHERE Extention LIKE 'ex_'

当存在大量动态 SQL 代码时,这是一个潜在的问题,特别是当我们谈论自动生成的对象名称时。而且这样的错误很难发现。

我个人宁愿在命名时避免使用下划线。但同时,如果已经使用了这种类型的命名,则无需重写所有现有代码。

凡事预则立。

© www.soinside.com 2019 - 2024. All rights reserved.