只是想知道2NF可能没有必要。
Option 1. ORDERS {orderId (pk), custId (fk), total, date, status, ...}
PARTS {orderId (pk), partsId (pk), qty, unitPrice, description, ...}
Option 2. ORDERS {orderId (pk), custId, total, date, status, ...}
ORDER_PARTS {orderId (pk)(fk), partsId (pk)(fk), qty, ...}
PARTS {partsId (pk), unitPrice, description, ...}
我认为大多数人喜欢选项2,因为它是2NF,但我认为选项1更好,因为当我们查询它们时会更简单,更快捷。为什么我们在这种情况下需要2NF?
答案 0 :(得分:6)
作为初级DBA,您应该将所有放入第三范式。这意味着,一行中的每一列都取决于:
根据经验,您可以选择有时因各种原因(通常是速度)恢复到2NF,但这不是我作为初学者所担心的事情。
答案 1 :(得分:3)
您想要第二个普通表格,因为对于选项1,除非属于某个订单,否则该部分不存在。
答案 2 :(得分:1)
在选项1中,当用户想要更改零件的描述时,您必须在与该零件关联的所有订单上更改它。难道你不觉得难闻的气味?