I (often) use a variation of this. I create a version of the database loaded with all my test cases, then copy that database on top of the test database at the beginning of each test run, so the tests may be as destructive as they like to the database. When I discover a new data variation in the production data, I create a test case in the prototype database....
(Yeah, I know I should use Mock objects, but I've never been comfortable with them...)
...roboticus