Cause of Database Corruption?

We occassionally experience corruption of our larger mail databases (several mailboxes as well as the mail.box database). I was wondering if anyone knows the precise cause of database corruption, and whether the frequency of corruption scales with the size of the database. As far as I know, there is no clear way to prevent database corruption; one can only be vigilant and fixup the afflicted database or reboot the server after corruption occurs. Am I mistaken? Are there steps one can take to prevent corruption?

Any help would greatly benefit my organization as well as satisfy my curiosity!

Thanks,

Mike Fuerstman