Dia's great. It's what I use to layout my UML whenever I'm designing a big object-oriented project in Linux. When I'm in Windows (which is most of the time) I use
AgroUML. It's not as solid a program, but it's still very useful. Technically, all it can make is UML, but I'm sure you could still use it for showing database relationships. It was written in Java so it should run on most platforms. Oh, and it's opensource and free (unlike visio).