Database 主键列的命名约定是什么?

Database 主键列的命名约定是什么?,database,database-design,naming-conventions,primary-key,Database,Database Design,Naming Conventions,Primary Key,可能重复: Db表中主键列的命名约定是什么 例如: PK\u国家或国家ID或ID或PrimaryKey或 这主要取决于数据库的设计者。当我这样做时,我将主键的字段名:id和外键的字段名:tablename id我总是尝试用PK启动主键,用FK启动外键。另外,在命名外键时,我尝试在外键的名称中包含表名和列名:FK_Questions-test-id_Tests-seq-num将是从表问题到表测试的外键,其中questinos.test_id=Tests.seq_num。我认为这样命名有助于在查看

可能重复:

Db表中主键列的命名约定是什么

例如:
PK\u国家或国家ID或ID或PrimaryKey或

这主要取决于数据库的设计者。当我这样做时,我将主键的字段名:id和外键的字段名:tablename id

我总是尝试用PK启动主键,用FK启动外键。另外,在命名外键时,我尝试在外键的名称中包含表名和列名:FK_Questions-test-id_Tests-seq-num将是从表问题到表测试的外键,其中questinos.test_id=Tests.seq_num。我认为这样命名有助于在查看键时使用它们。

如果该表被称为
test
I会调用PK列
TestID

确实没有定义的标准;相反,您应该制定自己的约定,并确保您定义的每个主键都符合该约定。

我喜欢Ruby on Rails约定:

  • 任何表中的主键都是名为
    id
  • 外键命名为外键表名加上
    \u id
    。例子:
    • country\u id
      是与
      countries
      表中的记录相对应的外键

列的命名应基于它们所表示的数据元素,而不是基于应用于它们的约束。主键列的命名方式应与命名任何其他列的方式相同。对于命名数据元素,有一些有用的指导原则。

如果站点不正确,请访问dba.stackexchange.com。我想这是有人问过的。+1-我称之为TEST_ID,并不是每个RDBMS都支持混合大小写。我也倾向于使用这种约定(虽然我使用PHP/Zend框架),但是对于同一个表中有多个外键的表呢?示例:
order
有两列引用同一个表
user
:谁是创建订单的用户,谁是批准的用户。在这种情况下,您必须打破惯例,但我建议使用说明明显的名称,如
creator\u user\u id
approver\u user\u id
,或者由创建的
和由
批准的
。这就是我最终要做的,但我无法稳定一个公约来满足这个公约破坏者的需要:使用只有id的主键有利于活动记录或数据映射模式,但它会使您更难进行类似于联接的查询。使用相同的
id
连接表时,必须指出哪些
id
字段属于哪个表。