2009-12-10 153 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」就好,只要這是你總是這樣做的。