Fourth Normal Form (Keys)
Technically, if you keyed every column, any table would be in 3NF, which does not solve any problems.
In some cases, there are hidden relationships between key properties.
Example:
- EmployeeTasks(E#, Specialty, Task#)
- In 3NF (BCNF) now.
Business Rules
- Each employee has many specialties.
- Each specialty has many tasks.
- Tasks always depend on specialty.
In real life, probably accept duplication, in case the business rules change, e.g., some employees do not perform all tasks.
EmployeeTasks(E#, Specialty, Task#)
EmployeeSpecialty(E#, Specialty)
Specialty(Specialty, Task#)
EmployeeTasks(E#, Specialty, Task#)
Specialty(Specialty, Task#)