所以基本上我正在规范发票,在所有 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)
部分依赖
传统依赖
2NF CUSTOMER ( * C_ID ,C_NAME,C_NAME,C_STR,C_STATE)
2NF PART ( * PART_NUM ,PART_DESC,PART_QUANUSED,PART_PRICE)
2NF LABOR ( * LBR_NUM ,LBR_DESC,LBR_PRICE)
答案 0 :(得分: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}
。
等,...
所以你的选择是
保留(发票表)原样(似乎没问题)
全力以赴。
发票(也是采购订单......)的常见设计是“捕获并冻结”当时的所有相关信息。