我想为保存客户及其费用和付款的系统创建一个数据库模式。推荐的方法是什么,以便我以后可以仅使用一个查询获得所有客户的列表以及他们的总费用和付款?
单个查询应返回如下结果:
NAME | TotalCharges | TotalPayments
John 80 100
Nick 100 90
我正在考虑创建两个单独的表,一个用于收费,一个用于付款。
CUSTOMERS
-ID
-NAME
CHARGES
-ID
-CUSTOMER_ID
-AMOUNT
PAYMENTS
-ID
-CUSTOMER_ID
-AMOUNT
另一种方法是为费用和付款创建一个表,每个表使用一个列,如下所示:
CUSTOMERS
-ID
-NAME
CHARGES_AND_PAYMENTS
-ID
-CUSTOMER_ID
-CHARGE_AMOUNT
-PAYMENT_AMOUNT
另一种方法是使用 TRANSACTION_TYPE 标志为费用和付款使用一个表。0-> 付款,1-> 收费,但如果我使用这种方法,我将无法使用一个查询(或者我可以吗?)获得客户的总费用和付款
CUSTOMERS
-ID
-NAME
CHARGES_AND_PAYMENTS
-ID
-CUSTOMER_ID
-TRANSACTION_TYPE (Flag: 0=Payment, 1=Charge)
-AMOUNT
哪个是最好的方法?