顧客とその料金と支払いを保持するシステムのデータベース スキーマを作成したいと考えています。1 つのクエリだけを使用して、すべての顧客の合計料金と支払いのリストを後で取得できるようにするための推奨されるアプローチは何ですか?
単一のクエリは、次のような結果を返す必要があります。
NAME | TotalCharges | TotalPayments
John 80 100
Nick 100 90
料金用と支払い用の 2 つの別個のテーブルを作成することを考えています。
CUSTOMERS
-ID
-NAME
CHARGES
-ID
-CUSTOMER_ID
-AMOUNT
PAYMENTS
-ID
-CUSTOMER_ID
-AMOUNT
もう 1 つの方法は、次のように、料金と支払いの両方に対して 1 つのテーブルを作成し、それぞれに 1 つの列を使用することです。
CUSTOMERS
-ID
-NAME
CHARGES_AND_PAYMENTS
-ID
-CUSTOMER_ID
-CHARGE_AMOUNT
-PAYMENT_AMOUNT
もう 1 つの方法は、TRANSACTION_TYPE フラグを使用して、料金と支払いの両方に 1 つのテーブルを使用することです。0->Payment、1->Charge ですが、このアプローチを使用すると、1 つのクエリで顧客の料金と支払いの合計を取得することはできません (または取得できますか?)。
CUSTOMERS
-ID
-NAME
CHARGES_AND_PAYMENTS
-ID
-CUSTOMER_ID
-TRANSACTION_TYPE (Flag: 0=Payment, 1=Charge)
-AMOUNT
最適なアプローチはどれですか?