• I try to avoid have anything that needs quoting to be a valid name, and except in extremely rare circumstances (eg something used as a name suddenly becomes a reserved word) that comletely rules out spaces within table and column names (as well as eliminating any need for square brackets or similar punctuation).  I've sometimes given table names prefixes that indicate the general area they are relevant to and seperate that from the rest of the name by an underscore - so for example in an an in-room entertainment and other services system for hotels there could be prefixes like Movie_, Music_, OffficeTools_, Restaurant_,RoomService_, Internet_, Directory_, Telephone_, Messaging_, Email_ and so on.  As you can see, I will use CamelCase to indicate word boundaries within a prefix, and also for boundaries within the rest of a name.  I also sometimes use the same sort of prefixing for column names, and always have a rule that if the same column occurs in two or more tables (by the same column I mean a column representing the same real-world attribue) all those tables must use the same name for it; this forces the use of table aliases in DML statements involving more than one table unless the writer decides to use full table names to qualify column names (which can take up a lot of space on the page or screen in non-trivial DML statements).  It also tends to avoid crazy errors resulting from joining on mismatched columns.

    Tom