在SQL中的列中编写“ID”的正确方法

时间:2010-05-01 12:57:21

标签: sql naming-conventions

我在这里的第一个问题。我非常喜欢这个网站:)

我有一个名为Product的SQL表。在该表中,我想为产品的ID创建一个列,我真的想知道编写ID的正确方法,因为从长远来看,我会创建很多ID列。

所以它是: “ID” 要么 “我”?

另一个表中的外键是名为ProductID还是ProductId?

7 个答案:

答案 0 :(得分:7)

SQL中的大写主要是编码风格的问题。一致性是最重要的方面。也就是说,“ProductId”看起来有点像“Productld”(在“d”之前是一个小写的L),所以我更喜欢“ProductID”(或“productID”或“product_id”)。 / p>

至于使用表名为列名添加前缀,这在我的书中太多了。 Products.id就足够了; Products.productID是多余的。

答案 1 :(得分:6)

没有一种“正确”的方式。只是保持一致。我个人的偏好是在两个表中使用ProductId。如果您对所有表使用“ID”,然后加入另一个表,您最终可能会对它们进行别名以区分这两个ID字段。

答案 2 :(得分:3)

就个人而言,我在Product表和FK中也有ProductID,ProductName等,以避免ID和Name列无处不在

只是保持一致

答案 3 :(得分:2)

根据您的喜好。

大多数(很多?一些?我知道的?)框架似乎对主键采用了小写的“id”,对于外键采用了“primarykeytablename_id”,至少对于默认的命名约定。我自己并不喜欢这个惯例,因为我喜欢在关系的两边都有相同名称的关键。

我的偏好是两个地方的EntityNameID(例如ProductID,OrderID,OrderDtlID等)。

答案 4 :(得分:1)

我可能永远不应该接受那个心理学课,但因为有一个单词“id”,我总是将标识符的缩写大写,因此我使用“ID”。我只使用ID和ProductID作为主键名称进行了实验。因为我使用LINQ并简单地在设计器中映射类,所以我已经在代码中按照我想要的方式命名列。因为我更喜欢product.ID而不是product.ProductID,所以我使用较短的名称。对于外键,我使用表/列格式(没有分隔符),因此外键将成为ProductID。但是,在我的代码中,这对我来说不是问题,因为我几乎总是使用映射的实体,例如cart.Product而不是密钥本身,cart.ProductID

编辑:注意我假设是.NET框架的目标,因此使用(主要)来自.NET的命名约定。如果我正在进行Rails开发,那么这些可能是小写的,我会使用下划线作为分隔符。

答案 5 :(得分:0)

嗯,“Id”是“识别”的缩写,所以它“应该”是“Id”。

另一方面,它发音为“I-D”而不是“id”,因此“ID”也可以接受。

对于表的主键,我更喜欢“ProductId”而不仅仅是“Id”,因此外键关系的两边都匹配。

答案 6 :(得分:0)

我倾向于没有'id'或'ID'。

我一直都愿意 table - productName

pkProductName 产品名称 fkProductCode

和表 - ProductCode pkProductCode PRODUCTCODE

因此,即使您正在使用SQL或在代码中,关系也是明确且有意义的。