patternModerate
Column name naming conventions and best practices
Viewed 0 times
columnnamepracticesnamingandconventionsbest
Problem
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,
is more efficient than
However, the
Personally, I always used to create tables with PK column
Any links to design styles or best practice guides for table design would be appreciated, too!
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!
Solution
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:
The USING construct is more than mere syntactic sugar, however, since the result set differs from the result set of the version with the explicit predicate. Specifically, any columns mentioned in the USING list will appear only once, with an unqualified name, rather than once for each table in the join.
That is one less column. You'd never use
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
EmployeeID
EmployeeName
Comment
Salary
StartDate
EndDate
InsertedDateTime
...And Wikipedia actually says:
The USING construct is more than mere syntactic sugar, however, since the result set differs from the result set of the version with the explicit predicate. Specifically, any columns mentioned in the USING list will appear only once, with an unqualified name, rather than once for each table in the join.
That is one less column. You'd never use
SELECT * anyway so the point is moot...Code Snippets
EmployeeID
EmployeeName
Comment
Salary
StartDate
EndDate
InsertedDateTime
...Context
StackExchange Database Administrators Q#3682, answer score: 13
Revisions (0)
No revisions yet.