循环关系最佳数据库设计



我有以下类图:

      客户Id名称电子邮件
      软件包Id名称图像URL价格描述产品(一个包装可能有1到多个产品)
      产品Id名称图像URL价格描述
      订单Id客户ID住址

如何建立订单、产品和包裹之间的关系。我正在使用实体框架6代码优先与MVC 5 webapi。

编辑:

  • 客户可以下多个订单,一个订单只与一个客户关联
  • 一个订单可以包含多个产品,一个产品可以有多个订单
  • 客户可以订购多个包裹,一个包裹可以由多个客户订购
  • 谢谢
  1. CustomerOrders具有一对多的关系。将需要Orders中的ForeignKey CustomerId。因此,以上内容应该适用
  2. OrdersProducts具有多对多的关系。将需要具有表OrdersProducts的外键字段OrderIdProductId的多对多表(例如RelatedOrderProducts
  3. CCD_ 12和CCD_。因此,如上所述,应该存在分别具有表PackagesCustomers的外键字段PackageIdCustomerId的多对多表(RelatedPackagesCustomers

我不熟悉实体框架,MVC,但这是一个你可以遵循的数据库设计。

编辑:

我可能误解了第三种关系。根据您希望如何访问数据,有一些修复程序可能会起作用。一种可能的编辑是将RelatedPackagesCustomers表更改为RelatedOrderPackages表,并相应地更改外键。通过这种方式,您将有两种关系,即订购包和订购产品,这将使您的订单具有包和产品的组合。

要保存,您应该添加一个订单,并使用OrderId添加相应的产品和包装关系。关系表。

当您需要获得客户迄今为止订购的所有包裹和产品的列表时,您将使用CustomerIdOrder进行查询,然后再进行两次JOIN查询,从RelatedOrderPackages中获取包裹,并从RelatedOrderProducts中获取与特定OrderId相关的产品(与客户间接相关)。

最新更新