title: How much of an applications "smarts" should reside in the database?
body: <p>I've noticed a trend lately that people are moving more and more processing out of databases and in to applications.  Some people are taking this to what seems to me to be ridiculous extremes.  </p>
  
  <p>I've seen application designs that not only banned all use of stored procedures, but also banned any kind of constraints enforced at the database (this would include primary key, foreign key, unique, and check constraints).  I have even seen applications that required the use of only one data type stored in the database, namely varchar(2000).  DateTime and number types were not allowed.  Transactions and concurrency were also handled outside the database.</p>
  
  <p>Has anyone seen these kind of applications implemented successfully?  Both of the implementations I've dealt with that were implemented this way had all kinds of data integrity and concurrency problems.  Can anyone explain this trend to move stuff (logic, processing, constraints) out of the database?  What is the motivation behind it?  Is it something I'm imagining?</p>