sql - 数据库命名约定

标签 sql database

<分区>

这场辩论在这里已经结束,我特别喜欢阅读 this thread .但是,我只想问一个特定的问题,该主题现已关闭,所以就在这里。

我想知道人们对列名有何看法。广泛的共识似乎是以格式 ID 命名表的主键,例如客户ID。这就是我所做的。

但是其他列呢?我倾向于在每个列名前加上表名,例如CustomerFirstName、CustomerDOB 等。这对我来说很舒服,但似乎并不常见。离开表名困扰我有两个原因。首先,我担心,随着数据库变得非常大,不同表中可能会有同名的列,并且可能很难区分它们,尤其是在调试时,其次,我的 OCD 有第一列(主键,通常)以表名开头,但其他不是。

是否有任何规范或原则可以帮助选择最佳命名规则?不过,还有一件事。在我为每个列名加上表名前缀的惯例中,出现了一个问题——外键列。使用名为 CustomerStoreID 的列来保存 StoreID 外键是没有意义的,因此我将其称为 StoreID。但这打破了惯例,那么这是否证明大会一开始就很糟糕?您如何命名外键列?

最佳答案

这完全是个人的决定。每个人都试图保留易于识别和易于推断的列名称。

因此,数据库中的列的命名约定没有标准。每个人都保留可以轻松跟踪和理解的列名称。

我只是举个例子:-

假设您有一个名为 Employee 的表。

在此表中,您必须存储员工的信息,包括姓名联系方式详细信息。

因此,如果您将列命名为 Emp_First_nameEmp_Last_NameEmp_PhoneNoEmp_EmailAdreess。这样就更具可读性,将来使用您的表的任何人都无需任何解释即可理解这些列。

prefixing every column name with the table name there arises a problem - foreign key columns.

我不这么认为。由于通常的做法是,如果任何列上有外键,则在该列前加上 FK_XXXXX。所以任何人都可以追踪到它是一个外键

同样,如果您创建一个INDEX,那么人们通常会添加一个前缀IDX_XXXX 来标记这是索引的名称。

关于sql - 数据库命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18516746/

相关文章:

SQL 将每条记录的列添加在一起

sql - 将 CSV 文件导入 postgres - 跳过前 3 行

mysql - 如何 mysqldump 数据库中每个表的最后 10 行?

mysql - 使用多个数据库结果执行 MySQL replace into select 死锁

sql - 获取 MS SQL 中特定 varchar 的行数

mysql - 如何更新给定选择条件返回真值的位置?

php - 如何通过连接列在 MYSQL 中通过与另一个表的关系来过滤表?

database - Erlang:2 个网络服务器上的 2 个数据库?

database - Microsoft 数据库项目需要 Visual Studio 2010 高级版或更高版本?有没有开源免费的?

c# - mysql 只返回一个值