Вопрос проектирования банковской базы данных
Я пытаюсь создать базу данных для банков. Я создал таблицу для каждого счета, депозита, текущего счета, а также для способов оплаты чеков, дебетовых карт и наличных.
Мой вопрос заключается в том, как я должен обрабатывать транзакции между таблицами, зная, что транзакции возможны между всеми таблицами?
Например, клиент может снять деньги с помощью дебетовой карты, перевести деньги с текущего счета в кредит или внести деньги на проверку с помощью чека.
Мое первое решение состоит в том, чтобы создать одну таблицу транзакций для всех транзакций и кардинальности (0...1 n), чтобы был только один тип платежа и один счет, поэтому я должен пойти с ним или просто создать таблицу транзакций для каждого отношения между двумя столами?
1 ответ
Если "Я создал таблицу для каждой учетной записи, займа, депозита, текущего счета" означает, что у вас более четырех таблиц, значит, вы делаете что-то очень-очень неправильно. У вас должна быть одна таблица для клиентов и одна таблица для транзакций. Транзакция - это перевод денег с одного счета на другой, поэтому простая таблица транзакций будет содержать поля id, дата транзакции, кредитный счет, дебетовый счет, сумма. В бухгалтерском учете часто бывают транзакции, в которых участвуют несколько кредитных и дебетовых счетов, поэтому их нельзя поддерживать в простой схеме транзакций, описанной выше.
Если вы хотите представлять ссуды, то вам, вероятно, понадобятся еще две таблицы: одна таблица содержит атомарные детали всех ссуд (указана дата, счет получателя, общая сумма, номинальная процентная ставка и т. Д.), А другая таблица содержит прогнозируемые выплаты по каждому кредиту.
Нет необходимости в дополнительных таблицах, представляющих депозиты или чековые счета: они могут быть представлены в виде счетов с полем типа, обозначающим их тип.