@Silm

Как лучше организовать базу данных веб сервиса типа «домашняя бухгалтерия»?

Захотелось реализовать, что называется из интереса и для опыта, web-сервис для ведения домашней бухгалтерии.

Таких приложений не мало, функционал для пользователей выглядит, как правило, в общих чертах так:
  • возможность создать несколько счетов/кошельков
  • возможность создавать операции: приход/расход/перевод(с одного счета на другой) для каждого кошелька
  • возможность редактировать совершенные операции
  • отчеты и графики за выбранные периоды

Выглядело на первый взгляд не сложно, пока я не начал детально продумывать базу данных и то как будет работать приложение.

Представим что сервисом пользуется множество пользователей в течении длительного срока. При этом используется MySQL и была выбрана банальная архитектура с такими таблицами: пользователи, счета, операции

Проблема: таблица операций со временем сильно разрастется, сложные выборки (по периоду времени для нескольких кошельков пользователя) станут, как мне кажется, очень затратными и медленными.

И вообще мне кажется не логичным хранить в одной таблице операции разных пользователей, пересекающихся выборок ведь не будет...

Так как лучше спроектировать базу (или базы) данных в таком проекте?
  • Вопрос задан
  • 3794 просмотра
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
префиксы в именах таблиц с данными такого типа:
user1_operations
user2_operations
Ответ написан
@V_Tjuryakin
Перфекто
Приветствую, я сделал бы таким образом, который вы описали, потому-что варианты созданий отдельный таблиц или БД не подходит. Представьте потом какие будут мучения с миграцией.
В вашем случае необходимо стартовать именно с Вашей архитектурой, в добавок вы можете всегда использовать кэш и сделать репликацию mysql, для начала master-slave.

Тем самым, запросы будут выполняться так же к бд, но заносится в кэш, к примеру (на сутки, а если изменение произошло сбросить кэш по этому ключу).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы