A place I worked did something that was at first extremely annoying, but later made a lot of sense -- prefix all the column names of the table with the table name. So for a table 'user' you would have: user_id, user_name, user_password, etc. Some tables would have ridiculous long column names. So what is this good for? First off, joins. If you had a 'post' table and a foreign key back to user_id, the naming scheme wa…
On the other hand, it bakes the schema into every single column reference, and that makes schema changes more costly--either you cruft up your database with now-misnamed columns, or you fix all references, or you avoid changes in the first place, and the business drifts further and further from the database model.
My compromise position at places that do use column prefixes has been, column prefixes on base tables, views and/or stored procedures for client access, and no prefixes exposed to the client.