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?

  • Why do you need this strange split to add metadata? Can't you add the metadata to the original person table? What about pointing the foreign keys in the other direction? Commented Feb 1, 2022 at 15:45


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.