In this chapter, I've taken the admittedly unorthodox position that database systems shouldn't necessarily enforce database integrity constraints. We've looked at two different classes of constraints: intrinsic constraints that govern the physical structure of the data and derive directly from the relational model, and business constraints that derive from the problem space.
We've seen that allowing users to override intrinsic constraints is dangerous but that allowing records that violate business constraints to be held in abeyance and resolved at a later date often makes sense. We've also looked at several examples of how you might handle holding records in abeyance.
In the next chapter, we'll look at various aspects of reporting on the data the system maintains.