mysql - 数据库架构设计帮助 - Mysql

标签 mysql database database-design innodb

好的,需要一些帮助,

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

最佳答案

只是为了扩展我的评论:

包含 OrderId 和 OrderType(“产品”或“网站信用”;这称为子类型鉴别器)的订单表。

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

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

带有 OrderId 的交易表(Orders.OrderId 的外键)。

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

关于mysql - 数据库架构设计帮助 - Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3713212/

相关文章:

database - 想知道 Facebook 是如何实现 "Mutual friends"功能的

php - 按 3 个表的不同行数排序?

php - 两个表的内连接

database - 从命令行运行 PostgreSQL 查询

MySQL:如何使用不同用户将数据(表)从数据库复制到另一个数据库

mysql - 用于分析的新数据库或新表?

mysql - 将多个查找表与系统表映射的策略?

java - 如何在java fx 8 TableView 中显示两个时间戳之间存在的数据

mysql - 选择每个月的列总和

database - 应对数据库身份/自动编号最大化的策略