Я изо всех сил пытаюсь создать свою базу данных. Моя база данных включает финансовые операции многих видов, которые будут использоваться для расчета балансов пользователей. Разные транзакции имеют разную структуру, и на данный момент я храню их в разных таблицах. Когда дело дошло до подсчета баланса пользователя, я понял, что это большой беспорядок, поскольку мне нужно было выбрать много разных несогласованных строк из нескольких таблиц и сложить их все вместе. Поэтому я подумал, что если я создам одну таблицу, которая будет суммировать транзакцию (например, сумму и идентификатор пользователя, которому она принадлежит) и будет ссылаться на более подробную запись и иметь поле для указания, какая это транзакция. Как оказалось: то, что я пытался реализовать, называется «полиморфными ассоциациями», и нет способа реализовать его с помощью MySQL надежным способом. Есть некоторые обходные пути, но ни один из них не гарантирует целостность данных на том уровне, на котором я хочу. В конце концов я настолько отчаялся, что начал смотреть на другие СУБД, но ни одна из них, похоже, не подходит и для моего случая.
У вас есть какие-либо рекомендации? Может быть, мне не стоит бояться писать большие и растущие функции для расчета балансов пользователей? Или я должен пойти с лучшим вариантом моделирования полиморфных ассоциаций в MySQL и оставить небольшой риск несогласованности данных? Или, может быть, существуют СУБД, которые могут решить мою проблему без обходных путей?
Структура, которую я сейчас имею Некоторые транзакции связаны напрямую с пользователем, а другие - через другую таблицу. Моя цель - вычислить сумму всех транзакций для одного пользователя, и было бы действительно большим и растущим оператором SQL, чтобы получить все строки для каждого типа транзакции.
Вот как я хочуон должен быть структурирован
То есть я хочу иметь одну таблицу для более простых вычислений, но эта таблица должна обеспечить, чтобы существующая запись существовала.