下面是我当前用于电子商务网站订单部分的数据库模式的 ERD。该网站基于 oscommerce,但已经过修改,我还从表格中删除了相当多的字段以简化图表。
我计划在网站管理中添加创建报价的功能。报价与订单非常相似,大多数报价将转换为订单。每个都需要一些不同的数据,尽管大多数字段都会出现在两者中,例如客户详细信息。原始报价也应保留,以便将来可以再次使用,即修改从报价创建的订单不会修改原始报价。
考虑相似之处;感觉没有必要为报价复制整个订单结构,特别是因为订单的子表采用存储报价数据所需的格式。
我想我可能会采用的方法是创建一个报价表,它类似于订单,然后重用大多数订单子表来处理报价。
(可能我仍然会将orders_status 和orders_status_history 复制到quotes_status 和quotes_status_history 因为报价会有不同的状态,并且报价和订单应该只有相关的状态。)
我希望重新用于报价的表格:
- 订单总数
- admin_watch_list
- 订单产品
- 订单产品属性
- 订单产品下载
为了重新使用这些表,在我看来,我必须执行以下操作之一:
- 为上面列出的每个表添加一个quotes_id 字段。尽管这些表中的每一个都会有一个“quotes_id”和“orders_id”,其中一个应该总是有一个值,另一个应该总是为NULL。
- 将orders_id 字段添加到quotes 表,在我的quotes 表中启动orders_id 的自动增量为1000000000,这样它就不会干扰从我的orders 表中从0 开始的自动增量orders_id。引号中的 orders_id 然后可以使用它的 orders_id 引用所有其他表,尽管该 orders_id 永远不会出现在 orders 表中
这两种解决方案似乎都不理想,我想知道是否有更好的方法来完成我想做的事情。
理想情况下,我希望尽可能多地重复使用,因为这可能意味着更快的开发和更少的未来维护。
我的管理中已经有一个用于编辑订单的页面,我觉得我越接近订单结构,我认为将我的代码从编辑订单页面重用于我需要的创建/编辑报价页面就越容易添加。
感谢所有帮助或建议。