gpt4 book ai didi

sql - 在 SQL 中设计多种类型的支付模式?

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:12 24 4
gpt4 key购买 nike

我有一个支付系统,我可以在其中为一个订单进行两种类型的支付。

  1. 在线 - 移动支付
  2. 离线 - 现金/支票

我记入了 4 个表格,为了简单起见,我只概述了重要的列,而不是所有内容。

List of table Names

Payment
CashPaymentDetails
ChequePaymentDetails
MobilePaymentDetails

Schema Details

CashPaymentDetails
cash_id int
cash_amount decimal(18,2)

ChequePaymentDetails
cheque_id int
cheque_amount decimal(18,2)
cheque_type

MobilePaymentDetails
mobile_id int
mobile_amount decimal(18,2)

Payment
payment_id int
payment_amount decimal(18,2)
fk_cash_id int (foreign key reference to CashPaymentDetails table)
fk_cheque_id (foreign key reference to ChequePaymentDetails table)
fk_mobile_id (foreign key reference to MoblePaymentDetails table)

用户可以使用现金/支票/手机,只有一种支付模式,这使我的两个外键为 NULL,我觉得这是开销,因为如果继续我有 10 种不同类型的支付方式,9 个 Fk 引用将为 NULL .

付款

Payment_id payment_amount fk_cash_id fk_cheque_id fk_mobile_id
1 300 1 NULL NULL
2 200 NULL 1 NULL
3 400 NULL NULL 1

创建此架构的最佳设计应该是什么?

最佳答案

为PaymentMethod创建表并在Payments表中引用其PK,然后根据付款方式,您可以在相应的付款方式表中进行适当的输入。我还在 [CashPaymentDetails]、[ChequePaymentDetails] 和 [MobilePaymentDetails] 表中添加了 Payment_id。

Schema Details

[PaymentMethods]
Payment_Method_id int
Payment_Method_Description varchar(50) -- ("cash", "cheque", "mobile" etc)

[Payment]
Payment_id int
Payment_Method_id int
payment_amount decimal(18,2)


[CashPaymentDetails]
cash_id int
payment_id int
cash_amount decimal(18,2)

[ChequePaymentDetails]
cheque_id int
payment_id int
cheque_amount decimal(18,2)
cheque_type

[MobilePaymentDetails]
mobile_id int
payment_id int
mobile_amount decimal(18,2)

关于sql - 在 SQL 中设计多种类型的支付模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39150948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com