一个用户可以创建一个订单,一个订单可以用于多个 eTicket。每张票都需要在电子票表中拥有自己的行。此外,例如,如果用户决定升级其电子机票,则可以将后续订单分配给已经存在的电子机票。
因此,如果我有带有订单详细信息的标准订单结构,我如何将电子票与支付它的订单相关联?
我认为仅将订单分配给电子票是行不通的,因为如果订单是针对多个电子票并且每个电子票针对不同的事件,例如,那么您如何知道该电子票针对的是哪个事件,因为该信息是已经存储在订单详细信息行中?请记住……一个订单可以用于多张电子机票!
编辑
所以这就是我目前得到的......
命令
订单号 PK
产品
ProductId PK,EventId FK
订单详情
OrderDetailId PK、OrderId FK、ProductId FK、数量
电子机票分配
OrderDetailId FK, eTicketId FK
电子票
eTicketId PK
因此,如果用户为特定活动购买了三张电子票,则在结账时会创建三张电子票,并且每一张都分配给订单详细信息。还可以在存款和余额之间中断付款,并且通过订单详细信息将两个订单分配给同一个电子票。
现在我有这个工作,但我认为它有些不太对劲!电子票真的应该分配给订单明细吗?如果没有,那它还能去哪里?
编辑 2
电子商务引擎的核心需要能够销售任何东西,而 eTickets 代表了通过创建数据交付的产品的一个特例——所以我有点需要订单详细信息。此外,对于不代表固定住宿的电子票,订单详情中的数量给出了可以进入相应单张电子票的人数。当住宿固定时,例如当一个人在度假营地购买小木屋时,订单明细上的数量给出了小木屋的数量,每个小木屋都有自己的电子票。
这已经运行了一段时间......我想我只是在寻找一些关于设计的反馈,这似乎需要一些尴尬的查询。
例如,给定一些电子票,我如何确定它是针对哪个事件的?我需要加入从 eTicket 表到 product 表的三个连接,如果有多个订单分配给 eTicket,这将返回多行,这意味着我需要执行某种 TOP 1 子查询或聚合查询来获得价值。