数据库范式化原则

数据库范式化原则

  • 1.第一范式(1NF)
  • 2.第二范式(2NF)
  • 3.第三范式(3NF)

数据库范式化原则是一组设计规范,旨在帮助确保数据库结构的规范性、一致性和有效性。

1.第一范式(1NF)

  • 每个表中的每个列都是原子的,不可再分。每个列只包含一个值。
  • 示例:
学生表(Students)
学生ID(Student ID)   姓名(Name)           课程(Courses)
1                     张三,李四,王五      数学,英语,物理

上述示例违反了1NF,姓名和课程列包含了多个值,应将其分割为独立的列。

学生表(Students)
学生ID(Student ID)   姓名(Name)
1                     张三
2                     李四
3                     王五

课程表(Courses)
学生ID(Student ID)   课程(Course)
1                     数学
1                     英语
1                     物理

2.第二范式(2NF)

  • 满足1NF,并且非主键列完全依赖于表的主键,而不是依赖于部分主键。
  • 示例:
订单表(Orders)
订单号(Order ID)   产品号(Product ID)   产品名称(Product Name)   产品价格(Product Price)
1                   101                    手机                      500
1                   102                    平板电脑                  800

上述示例违反了2NF,产品名称和产品价格依赖于部分主键(订单号)。应将其移到一个独立的表中。

订单表(Orders)
订单号(Order ID)   产品号(Product ID1                   101
1                   102

产品表(Products)
产品号(Product ID)   产品名称(Product Name)   产品价格(Product Price)
101                    手机                      500
102                    平板电脑                  800

3.第三范式(3NF)

  • 满足2NF,并且消除非主键列之间的传递依赖。
  • 示例:
订单表(Orders)
订单号(Order ID)   客户号(Customer ID)   客户名称(Customer Name)   客户地址(Customer Address)
1                   101                    张三                       北京
2                   102                    李四                       上海

上述示例违反了3NF,客户名称和客户地址之间存在传递依赖。应将其移到一个独立的表中。

客户表(Customers)
客户号(Customer ID)   客户名称(Customer Name)  
1	                   张三
2                      李四

 客户地址表(Customer Addresses)
 客户号(Customer ID)   客户地址(Customer Address)
 101                    北京
 102                    上海

通过遵循范式化原则,可以提高数据库的数据一致性、减少冗余数据,并简化数据更新和查询操作。然而,在实践中,根据具体的业务需求和性能要求,有时也可以根据具体情况允许一定程度的冗余或非范式化设计,以优化查询性能或简化数据操作。在设计数据库时,需要综合考虑范式化原则和实际需求,进行权衡和决策。

你可能感兴趣的:(数据库,数据库)