Я хочу создать схему базы данных для системы, в которой хранятся клиенты, а также платежи и платежи, которые они делают. Каков рекомендуемый подход, чтобы я мог позже получить список всех клиентов с их общей суммой платежей и платежей, используя только один запрос?Рекомендуемая схема таблицы для таблицы счетов клиентов?
Один запрос должен возвращать результат, как это:
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-> Charge, но если я использую этот подход, я не смог бы получить общие сборы и платежи за клиента с помощью одного запроса (или я могу?)
CUSTOMERS
-ID
-NAME
CHARGES_AND_PAYMENTS
-ID
-CUSTOMER_ID
-TRANSACTION_TYPE (Flag: 0=Payment, 1=Charge)
-AMOUNT
Какой лучший подход?
Вы * можете * получить желаемый результат с помощью третьего подхода в одном запросе. В случае, если вам также потребуется получить общую сумму (все платежи за вычетом всех платежей), третий подход будет самым гибким решением. –