Question

What is the convention with respect to naming tables in a relational database: singular or plural?

I have always been using singular and it has served me well. I think it is more intuitive.

The one exception is the User table, which in SQL Server needs to be bracketed, as in [User]. However, we always bracket our table names, so that is not a problem.

Lately I have seen more voices coming up in favor of plural names, e.g. Users, because the table is a collection of users. The problem I have is that intersecting tables (in M-M scenarios) will have strange names. Here is an example:

I have a User table and a Group table. The intersecting table naturally is named UserGroup. With a plural naming convention this turns into the awkward UsersGroups.

And what about the Ids in plurally named tables? Is it UsersId, and GroupsId? This just sounds terrible.