I have a table person
which I am planing to normalize to the sixth normal form.
The table has attributes username
, email
, and phone
. The reason I want to go to the sixth normal form is keeping the change history of these columns and adding additional metadata to them (e.g. the confidence level about the data).
I am planning to create new tables person_username
, person_email
, person_phone
and have the person
view which brings them all together and has INSTEAD OF
triggers so that users can insert and update the view and these changes get directed to the underlying tables.
My question is, how to enforce NOT NULL
constraints when using the sixth normal form. How to assure that there definitely is a row in person_email
for each person
?
person
table? What about pointing the foreign keys in the other direction?