4NF and 5NF
4NF eliminates multi-valued dependencies. 5NF eliminates join dependencies. These are rarely needed in practice but matter in complex, fact-table schemas.
4NF eliminates multi-valued dependencies. 5NF eliminates join dependencies. These are rarely needed in practice but matter in complex, fact-table schemas.
-- 4NF violation: emp_skills and emp_languages in one table
-- emp_id | skill | language (independent facts mixed)
-- 4NF fix: two separate tables
CREATE TABLE emp_skills (emp_id INT, skill VARCHAR(50), PRIMARY KEY(emp_id, skill));
CREATE TABLE emp_languages (emp_id INT, language VARCHAR(50), PRIMARY KEY(emp_id, language));
If you find yourself needing 4NF/5NF, the data model is likely complex enough to reconsider the design.