PostgreSQL has a pretty nifty feature to add comments to database objects, using the COMMENT function. You can pretty much add comments to almost any objects, like tables, view, foreign keys, constraints, columns, etc.
You add a comment using the COMMENT ON … function, then retrieve the comment using the obj_description function for most objects. For columns, you’ll need to use the col_description function.
All this is rather tedious if you plan to add/remove comments for a lot of objects. To make this task easier, we have recently released a free product, PgComment, downloadable here. With PgComment, you just connect to your database and the application will list out all the comments attached to your tables, columns, indexes, views, sequences, domains, and functions.
You can then easily modify the comments, and apply them to the database. Changes are cached, and sent to the server in a single batch, allowing for faster editing locally. With the schema displayed in a hierarchical tree, you get an overview of what’s been commented and what has not. This makes it so much easier to document your PostgreSQL database.
Another feature of PgComment is that you can view the properties of your database objects. For tables, you can see details like the owner, total size, index size, estimated rows etc.
For indexes, you can see details like the index definition, index size, and various other properties.
Displaying these properties should help you write better comments for your objects.
If you want to generate PDF or HTML reports of your PostgreSQL database schema, take a look at DB Doc. With DB Doc, you can generate customizable PDF and HTML schema reports in just a few clicks.