We use ERwin here.
It gets the job done for modeling purposes.

I have also used it to forward and reverse engineer databases. It came in handy when I had to extract a FOXPRO database (Ugh!) design/table-structure.

Mainly we use it for modeling and then we write scripts for building the databases.

It is pretty easy to learn and use if you even have slight knowledge of data-modeling.

- Magnus