色彩学习网站,wordpress 地方门户,长春企业模板建站,建设工程敎育网网站3NF讲解
3NF#xff08;第三范式#xff09;是数据库设计中的一种规范化方法#xff0c;目的是消除数据冗余和避免数据异常。它帮助数据库保持高效#xff0c;灵活和一致性。理解3NF的关键点在于它依赖于前两个范式#xff08;1NF和2NF#xff09;的基础。
1. 第一范式…3NF讲解
3NF第三范式是数据库设计中的一种规范化方法目的是消除数据冗余和避免数据异常。它帮助数据库保持高效灵活和一致性。理解3NF的关键点在于它依赖于前两个范式1NF和2NF的基础。
1. 第一范式1NF确保数据表格中的每一列都具有原子性。
原子性每个单元格只存储单一的值不能由重复的值或多值。
示例一个表格中存储每个订单的商品数据不应存储多个商品名称在同一列。
订单号商品名称001苹果,香蕉002橙子,苹果
改进后1NF
订单号商品名称001苹果001香蕉002橙子002苹果
2. 第二范式2NF在1NF的基础上确保所有非主属性完全依赖于主键。
完全依赖即所有非主键列应该完全依赖于主键列而不是部分依赖。也就是说主键是复合键时非主键字段不能只依赖于主键的其中一部分。
示例假设有一个表格存储学生成绩信息表中同时包含了学生的基本信息和成绩信息。
学生ID课程ID学生姓名课程名称成绩1001101张三数学951001102张三语文881002101李四数学90
这个表中学生姓名和课程名称与主键学生ID, 课程ID部分依赖不符合2NF。
改进后2NF 学生表只包含学生基本信息 学生ID学生姓名1001张三1002李四 课程表只包含课程基本信息 课程ID课程名称101数学102语文 成绩表包含成绩 学生ID课程ID成绩100110195100110288100210190
3. 第三范式3NF在2NF的基础上确保不存在传递依赖。
传递依赖如果A - BB - C那么A - C就是传递依赖。3NF要求消除这种依赖。
示例在2NF的基础上如果某表中有学生ID、学生姓名、学生所在系等信息且学生姓名决定学生所在系即学生姓名 - 所在系那么就存在传递依赖学生ID - 学生姓名 - 所在系。
改进后3NF 学生表只包含学生基本信息 学生ID学生姓名1001张三1002李四 系表只包含系的基本信息 系ID系名称001计算机002物理 学生-系表包含学生与所在系的关系 学生ID系ID10010011002002 成绩表不变 学生ID课程ID成绩100110195100110288100210190
通过这些调整表中的数据不再存在冗余且便于维护与查询。
总结
1NF每个单元格包含单一数据。2NF消除部分依赖确保每个非主属性完全依赖于主键。3NF消除传递依赖确保每个非主属性只依赖于主键不通过其他非主属性。
3NF的核心目的是减少数据冗余和避免数据不一致性同时也能提升数据库的维护性。