How to dive into an ugly database?
The first thing I do is create an Entity-Relationship Diagram (ERD).  Sometimes you can simply describe the metadata with command-line tools but to save time there are some tools that can generate a diagram automatically.
Second, examine each table and column make sure I learn the meaning of what it stores.
Third, examine each relationship and make sure I understand how the tables relate to one another.
Fourth, read any views or triggers to understand custom data integrity enforcement or cascading operations.
Fifth, read any stored procedures.  Also read SQL access privileges if there are such.
Sixth, read through parts of the application code that use the database.  That's where some additional business rules and data integrity rules are enforced.




update:  I just read an interesting article "9 Things to Do When You Inherit a Database" with a good checklist.

Summary:


Backups
Research (the schema documentation steps I mention above)
Talk to the former developers
A bug database
Source code control
Talk to the users and/or business owners
Establish credibility with the users by fixing a few things or making some enhancements
Create a development environment
Drop obsolete objects