1

所以基本上我正在规范化发票,在所有2NF关系模式中包含 FK *INV_NUM* 是否错误。这是我已经拥有的。

* 显示PK

1NF*INV_NUM,INV_DATE,C_ID,C_NAME,C_STR,C_STATE,PART_NUM,PART_DESC,PART_QUANUSED,PART_PRICE,LBR_NUM,LBR_DESC,LBR_PRICE,TAX_RATE)

部分依赖

  • (C_ID--> C_NAME,C_NAME,C_STR,C_STATE)
  • (PART_NUM--> PART_DESC、PART_QUANUSED、PART_PRICE)
  • (LBR_NUM--> LBR_DESC, LBR_PRICE)

传递依赖

  • (C_STATE--> TAX_RATE)

2NF 客户( *C_ID , C_NAME,C_NAME,C_STR,C_STATE)

2NF 部分*PART_NUM、PART_DESC、PART_QUANUSED、PART_PRICE)

2NF 劳动*LBR_NUM,LBR_DESC,LBR_PRICE)

4

1 回答 1

1

所以基本上我正在规范发票,......

其实没有,真的没有。

发票本质上是临时的,所以这INV_DATE非常重要。

换句话说,
FD不是 {C_STATE} -> {TAX_RATE},而是{C_STATE, INV_DATE} -> {TAX_RATE}

FD不是 {C_ID} -> {C_STATE},而是{C_ID, INV_DATE} -> {C_STATE}

FD不是 {PART_NUM} -> {PART_PRICE},而是{PART_NUM, INV_DATE} -> {PART_PRICE}

ETC, ...

所以你的选择是

  1. 保持原样(似乎可以)

  2. 让一切变得短暂。


发票(也包括采购订单......)在当时“捕获并冻结”所有相关信息是常见的设计。

于 2013-10-07T13:58:18.130 回答