Make Impossible States Impossible
A data modeling philosophy. Start by identifying all the possible states your type can express, and then remove the ones that represent invalid states.