How do we Maintain them?
Given a change to DB, there are several possible violations:
- Insert new tuple with bogus foreign key value
- Update a tuple to a bogus foreign key value
- Delete a tuple in the referenced table with the referenced foreign key value
- Update a tuple in the referenced table that changes the referenced foreign key value