我有以下类图:
客户Id名称电子邮件
软件包Id名称图像URL价格描述产品(一个包装可能有1到多个产品)
产品Id名称图像URL价格描述
订单Id客户ID住址
如何建立订单、产品和包裹之间的关系。我正在使用实体框架6代码优先与MVC 5 webapi。
编辑:
- 客户可以下多个订单,一个订单只与一个客户关联
- 一个订单可以包含多个产品,一个产品可以有多个订单
- 客户可以订购多个包裹,一个包裹可以由多个客户订购
- 谢谢
Customer
和Orders
具有一对多的关系。将需要Orders
中的ForeignKeyCustomerId
。因此,以上内容应该适用Orders
和Products
具有多对多的关系。将需要具有表Orders
和Products
的外键字段OrderId
和ProductId
的多对多表(例如RelatedOrderProducts
)- CCD_ 12和CCD_。因此,如上所述,应该存在分别具有表
Packages
和Customers
的外键字段PackageId
和CustomerId
的多对多表(RelatedPackagesCustomers
)
我不熟悉实体框架,MVC,但这是一个你可以遵循的数据库设计。
编辑:
我可能误解了第三种关系。根据您希望如何访问数据,有一些修复程序可能会起作用。一种可能的编辑是将RelatedPackagesCustomers
表更改为RelatedOrderPackages
表,并相应地更改外键。通过这种方式,您将有两种关系,即订购包和订购产品,这将使您的订单具有包和产品的组合。
要保存,您应该添加一个订单,并使用OrderId
添加相应的产品和包装关系。关系表。
当您需要获得客户迄今为止订购的所有包裹和产品的列表时,您将使用CustomerId
对Order
进行查询,然后再进行两次JOIN
查询,从RelatedOrderPackages
中获取包裹,并从RelatedOrderProducts
中获取与特定OrderId
相关的产品(与客户间接相关)。