Nat*_*ade 5 mysql schema database-design
我建立了一个电子商务数据库,我正在添加订阅。请参阅下面的简化结构。
orders
id, customer_id
order_items
id, order_id, product_id
invoices
id, order_id
subscriptions
id, customer_id, product_id, run_date
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是该invoices表需要一个order_id但订阅只会生成一张发票。我可以将原件order_id放在订阅表中以跟踪沿袭,但随后会变得混乱,因为该invoices表将具有重复的订单 ID。我试图消除order与order_items和保持invoices表格并添加一个invoice_items完全表绕过订单ID,但我认为它更有意义,让他们因为人们还可以购买正规产品,如T恤,而这些都是技术上的订单。是否有推荐的方法来构建表格以便正确生成发票?订单是否应该用于单次购买的产品而发票仅用于订阅?
您发现很难解释这一事实表明设计、期望或感知的要求存在问题。
是否Subscriptions自动付款,例如通过信用卡?这就是为什么 anInvoice看起来没有必要吗?或者其他什么原因。
您当前的状态是:
Customers可以通过以下两种方式之一购买您的产品:
Orders要求Invoices。也许您需要向他们开具账单才能获得付款。Subscriptions没有Invoices。也许订阅是通过信用卡、PayPal 等自动支付的。既然aCustomer决定如何与你互动,那Customer可能有几个Subscriptions,也可能有地方Orders。我认为客户可以随时取消Subscription。
因此,您和您的客户都有理由保留订单和履行的完整跟踪(无论是Invoice或Subscription)。这意味着您确实可能想要Invoice某种类型的,甚至是Subscriptions.
有两种方法可以处理这个问题,即将它们视为同一事物或视为两个不同的事物。
Subscriptions创建一个Invoice用于履行订阅实例。订阅Invoice可以有一个不同的方案(例如 SUB-Number-Date)来识别订阅,Invoice而不是您使用的方案Invoice(Order 例如 INV:InvoiceNumber)。[我猜订阅Invoice会被标记为已付款。]
创建一个Subscriptions带有订阅标头的日志和一个跟踪每次履行的日志。这使您可以跟踪每次完成的详细Customers信息Subscriptions。如果提前取消订阅,可以将其用于退还客户未使用的金额。
您的组织如何看待您Customers(个人或企业)将帮助您确定最适合您业务的方法。
我该怎么办?我倾向于将Order Invoice与更复杂的分开Subscription Invoice。当需要时,可以为您的公司和客户生成订单、订阅和(退货、重新发货等)的总体摘要。
| 归档时间: |
|
| 查看次数: |
4989 次 |
| 最近记录: |