为什么需要2NF?

5Yr*_*DBA 2 database

只是想知道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, ...}
Run Code Online (Sandbox Code Playgroud)

我认为大多数人都喜欢选项2,因为它是2NF,但我认为选项1更好,因为当我们查询它时它会更简单,更快捷.为什么在这种情况下我们需要2NF?

pax*_*blo 6

作为一个开始的DBA,你应该把所有东西都放到第三范式.这意味着,一行中的每一列都取决于:

  • 钥匙(1NF).
  • 整个钥匙(2NF).
  • 除了关键(3NF).

根据经验,您可以选择有时因各种原因(通常速度)恢复到2NF,但这不是我作为初学者所担心的事情.

  • "钥匙,整个钥匙,除了钥匙外什么都没有,所以请帮我Codd." :-) (2认同)