I would like some expert opinion on best practices when it comes to column naming.
The background is that according to Wikipedia, the following syntax,
SELECT ... FROM Employees JOIN Timesheets USING (EmployeeID);
is more efficient than
SELECT ... FROM Employees JOIN Timesheets ON (Employees.EmployeeID = Timesheets.EmployeeID);
However, the JOIN ... USING
syntax only works of all primary key columns have globally unique names. Thus I wonder if this is considered The Right Thing to do.
Personally, I always used to create tables with PK column id
, and foreign key column othertable_id
. But that way it's not possible to use USING
or NATURAL JOIN
.
Any links to design styles or best practice guides for table design would be appreciated, too!
Best Answer
This has been asked before on SO.
Where you have common and very ambiguous names, then prefix with table name. That is, anything you're liable to have to alias in almost every query.
So for an Employee table I'd have
And Wikipedia actually says:
That is one less column. You'd never use
SELECT *
anyway so the point is moot...