Как правильно организовать базу данных SQLITE - очень много данных по дате
Хочу сделать что-то вроде книги записи расходов.Каждый пользователь сможет записать сколько и на что он сегодня потратил.
Например: Вчера: еда - 500 топливо - 400 аптека - 150
Сегодня: Еда 300, развлечения - 700, одежда - 1500, топливо 500.
Потом это все суммируется за определенный период, и выдается отчет. Еда - 800, топливо - 900 и т.д.
Как новичок, я вижу структуру только в одном виде: Для каждого пользователя создается отдельная таблица, в которую уже идут записи, где вместо ID - дата.
Но это нормально, если будут пользоваться десяток человек, если сотни? Как правильно ее организовать?
Кроме, того, могут быть расходы, для которых нет колонки в БД, и она будет создаваться самостоятельно, например пользователь пишет "подарок маме 2000". И я создаю колонку podarok_mame, и записываю в него значение 2000 для этой даты.
Ответы (1 шт):
Для каждого пользователя создается отдельная таблица
Это абсолютно неправильно. Нужно использовать две таблицы:
- Таблица пользователей (ID, ФИО)
- Таблица расходов (ID, User_ID, DataAction, Pay)
И основная таблица (Расходы) ссылается на таблицу пользователей.
я создаю колонку podarok_mame, и записываю в него значение
Это абсолютно неправильно. Надо расширить основную таблицу расходов так:
- ID записи в этой таблице
- User_ID - кто соврешил расход - ссылка на таблицу пользователей
- DataAction - дата соврешения расхода
- Pay - сумма платежа
- Type - За что платим (Еда, топливо, мама...) Ссылка на таблицу типов платежей
Таким образом, получаем БД из трёх таблиц, в которой может быть неограниченное число пользователей и неограниченное число видов платежей.
Настоятельно рекомендую Вам прочить любую книжку по проектированию СУБД. Именно не про программирование, а про проектирование.
Например: В.В. Кирилов, "Основы проектирования реляционных БД"
Для начала, разберитесь, что такое первая, вторая и третья нормальные формы таблиц. Ну и про реляционную алгбру тоже надо иметь представление.