I currently use Visio to model tables. Overall, I enjoy how it takes care of the menial tasks for me, and basic shapes are good. However, I'm unhappy with cardinality. I get these floating labels that say "*" or "1.." and so on. These are extremely poor. Also, I may have not found the option, but I wish you could display the column data types (char, int, varchar). It looks like there is space to the left of the column title in their table shape, but it's unused...
Ideally, I would like to see relational lines that have the ability to have a 1, 0, or * character on each end of the line which represents the cardinality. The data type is a bonus.
Anybody got a better program?
EDIT: Fixed my post, I was complaining about problems that ended up being my fault, laf
dbdesigner isn't bad, but its limitations kind of irked me. i made some tables, drew a 1:n relationship between two of them, and instead of it picking up on the fact that the "posts" contained the post's user_id (one user to many posts) it created a new foreign key in the posts table as "posts_user_id" or something, instead of just figuring out that user_id was the foreign key. no problem, i thought, i'll just delete the user_id that i put in posts to start with and rename the key it created. but the created key can't be renamed. eh? entering field names seems to randomly freeze the data entry window and the whole app feels like a house of cards. it also seems fairly tied to mysql.
mysql workbench was horribly unstable for me, every action caused an access violation. openoffice's "base" is severely lacking in features. commercial apps i tried like navicat and ems manager were better, but still got in my way instead of helping me.
i think there's a bit of a hole in the graphical database software landscape for a simple rad tool. i want to be able to draw a box, name it, give it some fields without specifying their type, and draw lines between it and other boxes to create key constraints and relationships. then i can edit each box's fields to specify types, unique constraints, etc. with any changes auto-updating or cascading to any tables that were dependent on it. finally, i can select which database server (mysql, postgre, sqlserver, oracle, etc.) i want that schema to be created for and it dumps out a .sql file with create table statements compatible with the server type i selected (so no manually fixing differences between mysql and postgre syntax).
eh, just another item on my endless programming todo list.