有一个订单和产品的问题?

xuqi92188 2006-05-25 04:38:27
我有一个订单表,引用产品编号。已经生成了订单,但是现在修改了产品名称,这样导致以前开的订单的产品也更新成新的产品名,这样引起很大的逻辑错误。因为开订单的时候产品是原来的名称,现在我想重新设计订单表何产品表使它能够在改变产品表中的产品名称以后,不会导致订单表中的产品也随之更改。

现在只能把产品名称也放到订单表中了。
类似的还有客户资料问题。也要把客户资料也放到订单表中?
这样导致数据冗余很大,而且会出现数据的不一致性。
是不是即有只引用 产品编号、客户编号,而且能保证订单的历史数据稳定性。
...全文
154 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuqi92188 2006-05-27
  • 打赏
  • 举报
回复
是一个好办法,这样可以减少订单子表中的冗余。而且特别是订单主表的地方的客户问题其实更严重,否则我要冗余n多个字段。
zjcxc 元老 2006-05-25
  • 打赏
  • 举报
回复
当然, 历史名称表可以扩展其他需要记录历史数据的列进去.
zjcxc 元老 2006-05-25
  • 打赏
  • 举报
回复
如果你只是想保留历史名称, 而且不想做太多的修改, 你可以增加一个历史名称表:

产品编号(PK) 历史编号(PK) 名称 启用日期 结束日期


查询的时候, 根据你的单据日期, 从历史名称表中来查询产品名称, 即用类似这样的查询

SELECT A.*, 产品名称 = B.名称
FROM 订单 A, 历史名称表 B
WHERE A.产品编号 = B.产品编号
AND A.订单日期 BETWEEN B.启用日期 AND B.结束日期
lang8134 2006-05-25
  • 打赏
  • 举报
回复
恐怕只能冗余吧。

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧