Primary key/foreign Key naming convention

Posted by Jeremy on Stack Overflow See other posts from Stack Overflow or by Jeremy
Published on 2009-09-02T19:13:33Z Indexed on 2010/04/30 19:27 UTC
Read the original article Hit count: 291

In our dev group we have a raging debate regarding the naming convention for Primary and Foreign Keys. There's basically two schools of thought in our group:

1) Primary Table (Employee) Primary Key is called ID

Foreign table (Event) Foreign key is called EmployeeID

2) Primary Table (Employee) Primary Key is called EmployeeID

Foreign table (Event) Foreign key is called EmployeeID

I prefer not to duplicate the name of the table in any of the columns (So I prefer option 1 above). Conceptually, it is consisted with a lot of the recommended practices in other languages, where you don't use the name of the object in its property names. I think that naming the foreign key EmployeeID (or Employee_ID might be better) tells the reader that it is the ID column of the Employee Table.

Some others prefer option 2 where you name the primary key prefixed with the table name so that the column name is the same throughout the database. I see that point, but you now can not visually distinguish a primary key from a foreign key. Also, I think it's redundant to have the table name in the column name, because if you think of the table as an entity and a column as a property or attribute of that entity, you think of it as the ID attribute of the Employee, not the EmployeeID attribute of an employee. I don't go an ask my coworker what his PersonAge or PersonGender is. I ask him what his Age is.

So like I said, it's a raging debate and we go on and on and on about it. I'm interested to get some new perspective.

© Stack Overflow or respective owner

Related posts about naming-conventions

Related posts about sql