SQL - 第二范式 (2NF)
-
简述
第二范式声明它应该满足 1NF 的所有规则,并且任何列都不能部分依赖于主键 -考虑客户订单关系,您想要存储客户 ID、客户名称、订单 ID 和订单详细信息以及购买日期 -该表是第一范式;因为它遵守第一范式的所有规则。在此表中,主键由 CUST_ID 和 ORDER_ID 组成。结合起来,假设同一个客户几乎不会订购相同的东西,它们是独一无二的。但是,该表不是第二范式,因为存在主键和列的部分依赖关系。CUST_NAME 依赖于 CUST_ID,客户的姓名和他购买的东西之间没有真正的联系。订单详细信息和购买日期也依赖于 ORDER_ID,但它们不依赖于 CUST_ID,因为 CUST_ID 和 ORDER_DETAIL 或它们的 SALE_DATE 之间没有链接。为了使该表符合第二范式,您需要将列分成三个表。首先,创建一个表来存储客户详细信息,如下面的代码块所示 -下一步是创建一个表来存储每个订单的详细信息 -最后,创建仅存储 CUST_ID 和 ORDER_ID 的第三个表,以跟踪客户的所有订单 -