Supporting Data Integrity

Let's understand the downside of using the EAV database design in detail.

When we use EAV, we sacrifice many advantages that a conventional database design would have given us.

We can’t make mandatory attributes

Returning to the example stated above, to should also require that the date_reported attribute has a value. In a conventional database design, it would be simple to enforce a mandatory column by declaring the column NOT NULL.

In the EAV design, each attribute corresponds to a row in the IssueAttributes table, not a column. You would need a constraint that checks that a row exists for each issue_id value, and the row must have the string date_reported in its ...