数据库架构设计帮助 - Mysql

时间:2010-09-14 21:54:43

标签: mysql database database-design innodb

好的,需要一些帮助,

我有一个我正在创建的系统,允许用户购买网站积分并获得它们,并使用这些积分订购产品,以及可能出售的访问功能。我的问题是创建订单和交易表。我有2个单独的订单表,一个用于站点信用(sitecredit_orders),一个用于产品订单(product_orders),然后我希望能够通过我的困境链接到订单的1个交易表是我不能只做一个字段对于orders_id,因为它们可能在2个不同的表中重叠。并且无法合并2个订单表,因为它们包含2种不同类型的信息。我该如何创建交易表并将其链接到这些订单表?感谢。

1 个答案:

答案 0 :(得分:2)

只是扩展我的评论:

包含OrderId和OrderType的Orders表(“Product”或“Site Credit”;这称为子类型鉴别器)。

包含OrderId(Orders.OrderId的外键)的Sitecredit_Orders表以及网站信用所需的所有其他字段。

带有OrderId(Orders.OrderId的外键)的Product_Orders表以及产品所需的所有其他字段。

包含OrderId的事务表(Orders.OrderId的外键)。

添加新网站信用额或产品订单时,您需要插入两个表而不是一个表。在Orders中插入一条新记录,获取OrderId(假设它是自动生成的),然后使用相同的OrderId在其中一个子类型表中插入记录。