SQL Server Table naming conventions

Started by
3 comments, last by Spazzarama 9 years, 11 months ago

When you create a new table in SQL Server the default name is dbo.Table_# with # being the new table value. I rename my tables without the dbo. and it is almost always plural. Looking at TFS collections I noticed all the tables were named with one of the following prefixes Codesense.tbl_ / dbo. / dbo.tbl_ where they were mostly singular names regardless of the prefix.

There is a fair amount of noise online on whether tables should be plural / singular online but nothing really mentioned prefixes such as dbo. or dbo.tbl_.

My question isn't really about naming tables with plural / singular names but more about the dbo. dbo.tbl_ prefix. Is this the SQL version of Hungarian notation where I can freely avoid or is there some kind of rule where it is best to follow this practice and name tables with dbo. / dbo.tbl_ prefixes?

Edit: This applies to other areas of the DB too, almost everything is created with dbo. but I figured I would figured I would talk about the table prefixes only

Advertisement
The dbo part is the schema name. It's sort of a namespace that you can connect database logins to. It doesn't have to be "dbo", you can create any schemas you want and set tables and other objects as owned by that schema.

I never saw the schema name as part of the table name, not sure if other people see it that way though.

Thanks for the reply. I had a look at this http://technet.microsoft.com/en-us/library/dd283095(v=SQL.100).aspx after I wrote the question. I was quite surprised I never came across this but then after doing some reading it makes sense as I am not doing DB work in a team however due to the way it helps combining tables I must admit it is much better than my current 'separate by underscore' approach.

Anyway thanks for the reply.

Personally I name tables after what they contain, so Weapon, Player, Monster, etc.

I could maybe see the use in using tbl_ to differentiate between tables, views, etc, but in practice I've never needed it.

if you think programming is like sex, you probably haven't done much of either.-------------- - capn_midnight

dbo.tbl_ prefix

The use of prefixes such as tbl, sproc, vw (view), func (function), clr and so on are really just hints as to what the type of the database object you are dealing with is.

Sometimes when writing queries it is handy to know that the table you are querying really is a table and not a view. Mostly helpful in really big projects (i.e. "I know I have to call a stored procedure, but what was the name again?? oh i'll type .sproc_ first to get the list of 100 in code completion and hide the 100's of tables").

Personally I don't care what naming conventions are used as long as they are consistently applied, my old boss on the other hand would often say "Mr Codd would be turning in his grave!" when he saw something he didn't like - including tbl_ prefixes and pluralisation smile.png.

(edit: sometimes what technology you use impacts your naming convention, e.g. using the Entity Framework or other ORM tools might steer you towards using singular or plural depending on the implementation and what the code it generates looks like)

Justin Stenning | Blog | Book - Direct3D Rendering Cookbook (using C# and SharpDX)

Projects: Direct3D Hook, EasyHook, Shared Memory (IPC), SharpDisasm (x86/64 disassembler in C#)

@spazzarama

 

This topic is closed to new replies.

Advertisement