數據庫表中具有PK/FK關係的列應該如何命名?他們的名字是否應該包含對他們所在表格的引用?考慮下面的例子。每位員工在薪資表中都有一個FK。應該命名數據庫中具有FK/PK關係的列嗎?
/* Employees Option 1*/
CREATE TABLE dbo.Employees
(
EmployeeID INT PRIMARY KEY,
EmployeeFirstName VARCHAR(32),
EmployeeLastName VARCHAR(32),
EmployeeEmail VARCHAR(255) -- , ...
)
/* Employees Option 2*/
CREATE TABLE dbo.Employees
(
EmployeeID INT PRIMARY KEY,
FirstName VARCHAR(32),
LastName VARCHAR(32),
Email VARCHAR(255) -- , ...
)
/* Employees Option 3*/
CREATE TABLE dbo.Employees
(
ID INT PRIMARY KEY,
FirstName VARCHAR(32),
LastName VARCHAR(32),
Email VARCHAR(255) -- , ...
)
/* Salaries Option 1*/
CREATE TABLE dbo.Salaries
(
EmployeeID INT,
Salary INT
)
/* Salaries Option 2*/
CREATE TABLE dbo.Salaries
(
Employee INT,
Salary INT
)
我對面向對象編程和數據庫設計有更多的經驗。使用OOP命名類的屬性時,您不希望重複該類的名稱,因爲它是多餘的(Employee.ID不是Employee.EmployeeID)。因此,我認爲以上員工選項3和薪金選項1是最好的,因爲我如何命名OOP中的類屬性
對嗎?有什麼我應該考慮適用於不適用於OOP的數據庫設計?
請參閱我在想我希望表的主鍵列始終爲ID,然後是另一個表中的任何列,該列是該名爲EmployeeID的表的foriegn鍵。這樣,如果我看到名爲ID的列,我知道它是該表的ID,並且如果我看到名爲EmployeeID的列,那麼我知道它是指Employee表的ID列。否則,您最終可能會得到一個名稱,例如Employee.EmployeeID和Salaries.EmployeeID,其中關係的方向並不明顯。 – 2010-08-12 18:41:24
@Eric,對我來說'Employees.EmployeeID'作爲主鍵很明顯。你只需要小心你的表格命名。 – 2010-08-12 18:43:07
對我來說,這看起來多餘。這也似乎是我一直在關注的大多數例子都遵循這種命名方式,而且我更願意遵循人們最經驗的做法。雖然我認爲有兩種方法可以很好地工作。 Employee.EmployeeID和Salaries.Employee或Empoyee.ID和Salaries.EmployeeID。第一種更常見的是? – 2010-08-12 19:01:00