我目前正在阅读 Joe Celko 撰写的《SQL Programming Style》一书。
在第一章的“开发标准化后缀”段落中,他为 id 列指出:
"_id" = identifier. It is unique in the schema and refers to one entity anywhere it appears in the schema. Never user ">table_name<_id"
几页之后他说
Do not use an underscore as the first or last letter in a name. It looks like the name is missing another component.
他弃用了“id”作为列名。
所以我想知道你们如何命名 id 列?
我知道大多数人可能会认为这个问题有什么意义,但我正在寻求标准化我的数据模型,尽可能遵循行业标准和 ISO 标准。
最佳答案
我也反对使用“Id”作为列名,尽管它已经变得非常普遍。 “EmployeeId”比“Id”长,但更具描述性。它还允许外键通常与其引用的列具有相同的名称。当数据库的控制权从一个人转移到另一个人时,这非常有用。
上面有一个异常(exception)。同一个表中可能有两个外键都引用同一个键。也可以有一个自反外键,它引用出现在同一个表的不同行中的键。
让我举一个自反键的例子。您有一张员工表,其中包含键 EmployeeId。您还有一个名为 SupervisorId 的列,它记录了主管和多个下属之间的关系。在这种情况下,外键的名称命名的是角色,而不是实体。
作为替代方案,可以使用用户定义的域来记录两列引用同一事物的事实。同样,当必须将数据的基本含义传达给新的人时,这是最有用的。
将下划线用作符号内的内部视觉分隔符是一个完全可分离的问题。 Camelcasing 比下划线更普遍,甚至有些系统不允许下划线作为符号组成部分。
最重要的是,保持一致。如果您使用武断、反复无常且自相矛盾的命名约定,您最终甚至会把自己弄糊涂。
关于sql - 正确命名表的 id 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4240314/