如果它在2NF 中,并且不包含任何传递性部分依赖性,则关系将在3NF 中。
3NF 用于减少数据重复,它还用于实现数据完整性。
如果非素数属性没有传递依赖关系,则关系必须是第三范式。
如果关系对于每个非平凡函数依赖关系X→Y 保持至少以下条件之一,则该关系处于第三范式。
X是一把超级主键。Y是主键属性,即Y的每个元素是某个候选键的一部分。
示例:
EMPLOYEE_DETAIL表的结构和数据:
| EMP_ID | EMP_NAME | EMP_ZIP | EMP_STATE | EMP_CITY |
|---|---|---|---|---|
| 222 | Harry | 201010 | UP | Noida |
| 333 | Stephan | 02228 | US | Boston |
| 444 | Lan | 60007 | US | Chicago |
| 555 | Katharine | 06389 | UK | Norwich |
| 666 | John | 462007 | MP | Bhopal |
上述表(EMPLOYEE_DETAIL)中的超级键是:
{EMP_ID}, {EMP_ID, EMP_NAME}, {EMP_ID, EMP_NAME, EMP_ZIP}....等等
候选键:{EMP_ID}
非主属性 :在给定表中,除EMP_ID之外的所有属性都是非主属性。
这里,EMP_STATE&EMP_CITY依赖于EMP_ZIP,而EMP_ZIP依赖于EMP_ID。 非主属性(EMP_STATE,EMP_CITY)可传递地依赖于超级主键(EMP_ID)。 它违反了第三范式的规则。
这就是为什么需要将EMP_CITY和EMP_STATE移动到新的<EMPLOYEE_ZIP>表,并将EMP_ZIP作为主键。
员工(EMPLOYEE)表的结构和数据如下:
| EMP_ID | EMP_NAME | EMP_ZIP |
|---|---|---|
| 222 | Harry | 201010 |
| 333 | Stephan | 02228 |
| 444 | Lan | 60007 |
| 555 | Katharine | 06389 |
| 666 | John | 462007 |
员工邮编(EMPLOYEE_ZIP)表的结构和数据如下:
| EMP_ZIP | EMP_STATE | EMP_CITY |
|---|---|---|
| 201010 | UP | Noida |
| 02228 | US | Boston |
| 60007 | US | Chicago |
| 06389 | UK | Norwich |
| 462007 | MP | Bhopal |
上一篇:
DBMS第二范式(2NF)
下一篇:
DBMS第四范式(4NF)
