I do not think Hungarian Notation (or a variabt thereof) is bad at all for SQL. For example, we use the following prefixes:
tbl - standard data entry table
tlkp - static or semi static lookup table
ztbl - private system-level or application-level table (not for end-user eyes)
ttmp - semi-persistent temporary tables (usually reserved for load programs undergoing debugging or other testing)
We then insert some kind of DB or App identifier into the object name, so that we can easily differentiate items if a script happens to appear before us without a "USE" statement. Here, OSYS refers to the application or database.
We do this for all other objects (see below).
We also use this standard naming to deal with some problems in naming other objects. We used to do things like
spi - Insert SP
spd - Delete SP
... etc. However this became unwieldy in practice, as when developers tried to build classes, they really had to hunt around for items that were based on common objects. So we revised our practice to the following:
spa - All SPs that have are not dependent on other SPs.
sp0_ - All SPs which have dependencies
spz - All non-application specific SPs (related to db processes etc)
Then we modified our naming suffixes to Noun-Verb combinations, e.g.:
While we're at it, parameters and variables prefixes are structured as well:
@parm - input parameter
@pout - output parameter
@pio - input/output parameter
@var - local variable
While not ideal, and probably redundant in some ways, it works for us. It has really helped our developers, and even helps the DBAs easily and quickly identify objects associated with and app or database, even from a printout.
I'm sure folks can poke holes in this (there are more modern techniques, I'm know), and alternative ideas are welcome. But as Ken Getz once said [paraphrasing here], "use a naming convention, ANY naming convention, as long as it's logical and consistent."