Захотелось реализовать, что называется из интереса и для опыта,
web-сервис для ведения домашней бухгалтерии.
Таких приложений не мало, функционал для пользователей выглядит, как правило, в общих чертах так:
- возможность создать несколько счетов/кошельков
- возможность создавать операции: приход/расход/перевод(с одного счета на другой) для каждого кошелька
- возможность редактировать совершенные операции
- отчеты и графики за выбранные периоды
Выглядело на первый взгляд не сложно, пока я не начал детально продумывать базу данных и то как будет работать приложение.
Представим что сервисом пользуется множество пользователей в течении длительного срока. При этом используется MySQL и была выбрана банальная архитектура с такими таблицами: пользователи, счета, операцииПроблема: таблица операций со временем сильно разрастется, сложные выборки (по периоду времени для нескольких кошельков пользователя) станут, как мне кажется, очень затратными и медленными.
И вообще мне кажется не логичным хранить в одной таблице операции разных пользователей, пересекающихся выборок ведь не будет...
Так как лучше спроектировать базу (или базы) данных в таком проекте?