I would like to add a bit more of clarity to what I said before:
The minute you declare a Column data type you are using BUSSINESS RULES
The minute you use CHECK Constraints or ANY kind of constraints you are applaying BUSSINESS RULES
The minute you specify LOGIC ORDER of operations in your stored procedures you are using BUSSINESS RULES
I am not asking to to program a Maximun of Pontryagin algorithm or Ruffini's root detection algorithm for 1000th root. Just what is best to establish in the database should be there and what is best to write in the middle tier should be there!
The SET based approach to apply certain calculations on the middle tear should be avoided if possible can you think of a 20 Million records going back and forth between severs!? If it is possible to apply those rules on a database I would! then again sometimes is not and I have nothing againts that!
IT is in my opinion not a clear cut!
IF you want maximum flexibility would you make all your columns varchar(8000) and that way you can handle every value and variation in length and data type?
We don't need to go to extremes and we should take care as much as we can of data quality and as close as possible to the data!!
Just my $0.02 or should I said my £0.02 (I am in London today )