假设我有一个具有以下属性的表
- 订单编号
- 商品编号
- 项目数量
- 项目单价
- 项目付款
其中“项目付款 = 项目单价 x 项目数量”。让我们简化情况,假设每个订单的任意数量只有一个 item id,并且不同的订单可能有相同的 item id。
- 什么是主键,“订单 ID”、“订单 ID”和“商品 ID”,或者其他什么?
如何将其归一化为 3NF?
这是我正在考虑的解决方案:
包含订单 ID(主键)、商品 ID、商品数量和商品付款的表格
带有项目 id(前一个表的主键和外键)和项目单价的表。
继续我在第 2 部分中给出的暂定解决方案。在第一个表中,对于每个项目 ID,项目付款与项目数量成正比。如果第一张表的主键是order id,则商品支付依赖于非主键属性的商品数量,违反了3NF无传递性要求。
我应该将第一个表拆分为:
- 带有订单 ID(主键)和商品 ID 的表
- 带有项目 ID(前表的主键和外键)、项目数量和项目付款的表
或进入:
- 带有订单 ID(主键)和商品 ID 的表
- 包含项目单价(原始第二个表的主键和外键)、项目数量和项目付款的表?
谢谢。