In a project I'm currently working on, I had to change the DB schema (don't ask...). Luckily, I'm using Class::DBI.
All I had to do was rip out the old DB definitions, put in the new ones, and that's it. No need to change one line in the business logic. No need to change the templates.
Abstraction rules!