Hi Sandro.
I think there is no silver bullet here (as in many other fields, too).
You could end with a mix of different approaches (simple checks done
on the database, while complex one are left in the application logic).
Also, most probably you will end moving that logic in the lifetime of
the application.
If you have time (and money) take a look at Chapter 20 from "Agile
Database Techniques" from Scott Ambler: it examines a number of
possibilities which could be worthy to you.
Regards
Marco
--
Marco Bizzarri
http://iliveinpisa.blogspot.com/