Removing Transitively-dependent Columns
From InterBase
Go Up to IBConsole - Designing a Database
The third step in the normalization process is to remove any non-key columns that depend upon other non-key columns. Each non-key column must be a fact about the primary key column. For example, suppose we added TEAM_LEADER_ID and PHONE_EXT to the PROJECT table, and made PROJ_ID the primary key. PHONE_EXT is a fact about TEAM_LEADER_ID, a non-key column, not about PROJ_ID, the primary key column.
PROJ_ID | TEAM_LEADER_ID | PHONE_EXT | PROJ_NAME | PROJ_DESC | PRODUCT |
---|---|---|---|---|---|
DGPII | data | ||||
VBASE | database | data | |||
HWRII | upgrade | data |
To normalize this table, we would remove PHONE_EXT, change TEAM_LEADER_ID to TEAM_LEADER, and make TEAM_LEADER a foreign key referencing EMP_NO in the EMPLOYEE table.
PROJ_ID | TEAM_LEADER_ID | PROJ_NAME | PROJ_DESC | PRODUCT |
---|---|---|---|---|
DGPII | data | |||
VBASE | database | data | ||
HWRII | upgrade | data |
EMP_NO | LAST_NAME | FIRST_NAME | DEPT_NO | JOB_CODE | PHONE_EXT | SALARY |
---|---|---|---|---|---|---|
24 | ||||||
48 | ||||||
36 |