Of course types and structures are useful but why do I need it in my database as well as in my app ? That's one reason databases like MongoDB have become popular because you can deal exclusively with your domain model and treat the database like an object store.
So you still have everything structured but not have to worry about annoying migrations.
>Of course types and structures are useful but why do I need it in my database as well as in my app ?
Do you write bug free code 100% of the time? I'm pretty good, but I definitely don't. And when there are bugs in my code, I'm grateful for a RDBMS with enforced referential integrity.
I've also had to work on projects where the initial codebase was scrapped all together. When that's happened I've found having the data in clearly defined columns and relationships immensely useful.
I have unit tests around my domain model so just as confident as I would be if I was using an ORM library. With the advantage of course of not having to worry about yet another library to manage especially working on mainly Java apps.
And like many are doing these days I do all my joins in my app so that I have the flexibility of moving objects into more appropriate storage mediums e.g. Redis or Solr without major refactoring.
I am not dismissing the benefits of having business rules in the database only that they aren't always necessary.
What about using an ORM? In Symfony2 for instance, we only think about objects, and they are magically mapped into MySQL or PostgreSQL tables by Doctrine2.
So you still have everything structured but not have to worry about annoying migrations.