Sql 数据库设计:如何处理取消订单,但保存订单历史记录
如何使用数据库处理以下场景 存在以下数据库关系: 使用者 他有很多订单 他有很多票 顺序 他有很多钱 有许多订单项 票 属于OrderItem 属于用户 属于票务分类 票务分类 他有很多票 每当用户下订单时,都会在数据库中创建票据。当支付失败或用户在支付过程中离开页面时,如何处理此情况?实际上,我只想创建属于成功订单的票据,但在付款订单历史记录中止的情况下,无法确定尝试购买哪些票据Sql 数据库设计:如何处理取消订单,但保存订单历史记录,sql,database,database-design,entity-relationship,Sql,Database,Database Design,Entity Relationship,如何使用数据库处理以下场景 存在以下数据库关系: 使用者 他有很多订单 他有很多票 顺序 他有很多钱 有许多订单项 票 属于OrderItem 属于用户 属于票务分类 票务分类 他有很多票 每当用户下订单时,都会在数据库中创建票据。当支付失败或用户在支付过程中离开页面时,如何处理此情况?实际上,我只想创建属于成功订单的票据,但在付款订单历史记录中止的情况下,无法确定尝试购买哪些票据 是否缺少保留之类的中间表?我假设您有一个带有用户ID的用户表和一个带有事件ID的事件表 每个活动都有许多门票出售。
是否缺少保留之类的中间表?我假设您有一个带有用户ID的用户表和一个带有事件ID的事件表 每个活动都有许多门票出售。首先,让我们定义一个票证类别表
TicketCategory
--------------
TicketCategory ID
TicketCategory Name
如果您有基本票、专业票等,此处不包括门票价格,因为不同活动的门票价格可能不同
接下来,让我们创建一个事件票证连接表
EventTicket
-----------
EventTicket ID
Event ID
TicketCategory ID
Ticket Price
Total Tickets
Tickets Reserved
Tickets Sold
我给每个表一个自动递增的整数ID主键。它使连接更简单
对于在活动中售出的每种类型的票证,您都有一个事件ID TicketCategory ID唯一索引。您还可以有一个TicketCategory ID、Event ID和unique索引,用于报告目的
total tickets整数值在设置事件时设置,除非事件的容量发生变化,否则不会发生变化
tickets reserved整数值是保留但未购买的票数
售出的票数整数值是售出的票数。我假设被取消的订单相对较少。如果愿意,可以添加tickets paid整数值以跟踪订购但未付款的票数
当你看到有多少票可供出售时,你可以把预订和售出的票数从总票数中减去
现在,让我们来处理一张订票单。通常,您有一个Order表和一个OrderLineItem表
Order
-----
Order ID
User ID
Event ID
Order Timestamp
Status (Active, Paid, Cancelled)
OrderLineItem
-------------
OrderLineItem ID
Order ID
TicketCategory ID
Quantity
Ticket Price Per Ticket
订单表有一个关于用户ID、事件ID、订单时间戳和状态的唯一索引。OrderLineItem表在订单ID TicketCategory ID上具有唯一索引
您可以通过将数量乘以每张票的票价来计算订单行项目总数。您可以通过计算所有订单行项目总计来计算订单总额
预订表可以如下所示:
Reservation
-----------
Reservation ID
User ID
Event ID
TicketCategory ID
Quantity
Reservation Timestamp
您将拥有一个用户ID、事件ID、TicketCategory ID和唯一索引。我将把其他可能的唯一索引留给您
预订时,EventTicket表中的票证数量将减少
下单时,您首先检查是否已预订。如果是,则删除保留行并创建订单行。如果不是,则创建订单行。无论哪种方式,您都可以在EventTicket表中进行适当的调整。问题是,如何处理取消的订单?通过向订单行添加取消标志来回答。是否缺少像预订那样的中间表?可能如果您接受预订,您需要一个表来存储预订信息。谢谢。你能向我解释一下,我如何补充我的计划,使之在保留的情况下起作用吗?是应该在成功购买后才创建票证,还是应该在创建事件时将票证数量插入数据库而不使用用户ID?我没有足够的关于您的域的信息来进一步阐述。是一个活动或多个活动的门票。用户是否希望购买一组门票,如季票,每场比赛一张,或单票,仅限单场比赛?活动是否有指定的座位或仅限人数?我可能还有其他问题,但现在,这些问题已经足够了。门票总是只针对一个单一的活动,用户需要同时购买一张或多张门票,例如基本门票、专业门票,这些门票可以来自同一活动的不同门票类别。这些类别没有座位号,只是在跟踪其容量。提前感谢您的帮助!谢谢售票处怎么样?如何查找用户的已取消订单历史记录?@Fabio:SELECT from order,其中user Id=和Status=已取消