2009-12-10 67 views
1

我有一个数据库有50个表,并且所有表都有名为ID的字段上的主键。例如,Employee.ID,Customer.ID,order.ID,每个表都有ID作为其主键。它不应该是Employee.Employee_ID,Customer.Customer_ID等等吗?SQL服务器字段命名约定

是否存在使用ID为每个表中的每个ID字段的名称的任何缺点?如果是这样,请解释或给出解释的链接。

回答

4

我会使用Employee.IdCustomer.Id与排位表名。 Employee.EmployeeIdCustomer.CustomerId对我来说似乎有点多余。

+2

但是,我会对其他表中的外部引用(例如customer_Id,employee_Id)使用该名称的命名约定。 – Joe 2009-12-10 01:30:04

+0

所以当涉及到外键,你想把employeeID和CustomerID放在其他表中不要你?与乔同意100% - 例如: – sina 2009-12-10 01:30:06

+1

Order.CustomerId用于外键。 – 2009-12-10 01:33:45

0

我通常遵循相同的命名约定(Entity.Id而非Entity.EntityId)。

如果你认为你的表作为实体的,加上表名ID字段是多余的,逼着你写更多的代码,使你的查询难以阅读。

2

对此有不同的思想流派。就个人而言,我更喜欢仅对具有主键/外键关系的列使用相同的列名 - 这有助于更轻松地编写复杂的连接。

此外,使用表别名时,表观冗余消失。例如:

SELECT o.OrderDate, c.CustomerName 
    FROM Customers c 
    INNER JOIN Orders o ON o.CustomerID = c.CustomerID 
1

这很大程度上是个人风格的问题。

但是,如果你的请求总是使用适当的别名你的表,你引用的列时,总是使用别名,那么它也不是太糟糕。

请不要陷入习惯(尽可能多的说)“我的查询中只有一个Customer_EmployeeID字段,所以我会离开别名”。这真的很普通,并且当他们查看以这种方式完成的代码(最终希望查询sys.columns以查看哪个表包含名为latest_status的列)时,会使SQL人员变得疯狂。

因此,如果你很好地写你的查询,应该不是真的不管你如何命名列,所以只要你保持一致。对任何整数标识字段使用简单的旧“ID”就好,只要这是你总是这样做的。