订单系统MySQL工作台中的数据库建模

订单系统MySQL工作台中的数据库建模,mysql,mysql-workbench,Mysql,Mysql Workbench,我试图在MySQL Workbench中建模一个简单的订单系统,但在规范化方面遇到了一些问题。现在,我正在使用WHERE id=x、另一个_id=x等等来构建一个查询。我的系统相当简单: 用户表 订单表 用户订单表 产品表 一个用户有许多订单,一个订单有许多产品。就这样。如何在MySQL工作台中定义这种关系?有关于HasMany、HasOne和其他类型关系的教程吗 在大多数情况下,您的设置是正常的。但是,一对多映射不需要映射表。例如,单个订单不太可能属于多个用户,而一个订单项可能属于多个订单

我试图在MySQL Workbench中建模一个简单的订单系统,但在规范化方面遇到了一些问题。现在,我正在使用WHERE id=x、另一个_id=x等等来构建一个查询。我的系统相当简单:

  • 用户表
  • 订单表
  • 用户订单表
  • 产品表
一个用户有许多订单,一个订单有许多产品。就这样。如何在MySQL工作台中定义这种关系?有关于HasMany、HasOne和其他类型关系的教程吗


在大多数情况下,您的设置是正常的。但是,一对多映射不需要映射表。例如,单个订单不太可能属于多个用户,而一个订单项可能属于多个订单。这意味着您的表应该是:

  • 用户(用户ID)
  • 订单(订单ID、用户ID)
  • OrdersItems(oiid、orderid、productid)
  • 产品(产品ID)

UserOrder
表不同,您最好将FK存储到
Order
表本身中的相关用户;像
UserOrder
这样的关联表仅对多对多关系是必需的,例如您需要在
Order
Product
之间建立关联表-因此您需要一个
OrderProducts
表。但用户确实可以下很多订单。并且它们的FK可以多次出现在
Order
表中(前提是您不去定义FK上的唯一性约束)。是否有更好的方法插入到表中?例如:我必须插入到订单中,然后插入到订单中的项目。@vinnylinux使用事务