This answer is post preferred pick
This pattern is fine if exiting on the first invalid condition is what you fundamentally want. OF COURSE what if scenarios bring other considerations into the validation code design. As the code evolves refactor the validation structure as needed.
I agree with @slugster - change the name to
Validate(), whatever) because ...
"IsValid" vice "IsValidForDB" method name is a paradigm shift
A valid business object is one thing. Putting the data into a database is another, separate, thing. Do not put database features/limitations in your object's business rules.
IsValid() means we are validating the object for problem domain business rules. Valid or not the database puts demands on us that are not problem domain validation issues per se. For example how do we store
NULL, the blank character, or some other arbitrary character(s)?
So changing the method name acknowledges these separate concepts and therefore we codify these separate concepts literally. Code that must transliterate values to/from the database should be in some data layer of code independent of your business object.