Всем привет) Есть магазин аренды товаров. В нем есть некоторые товары, я допустим собираюсь хранить их в таблице items. Задача состоит в том, чтобы отслеживать текущее количество товара и сколько едениц было арендовано. Для этого я собираюсь ввести 2 столбца current_amount - для текущего количества, и rented_amount - для арендованного. Все вроде бы ок, но меня преследует мысль, что это неправильно. Нужно проверять очень много зависимостей всяких, есть вероятность сделать ошибку. Мб есть способ спроектировать получше? Или вообще изменить таблицу? Например, для каждой еденицы товара - своя строка в таблице, и добавить флажок is_rented (но тогда получится очень много данных). Спасибо
Для правильного вопроса надо знать половину ответа
Зависит от типа учёта в магазине. Если учитывается каждый экземпляр оборудования, то и отдельную строку придётся заводить для каждого экземпляра. Если же учёт идёт обобщённый, то достаточно общего количества и количества в аренде. Дополнительно можно завести таблицу с записями о выдаче и возврате оборудования и счётчик арендованного менять триггером AFTER INSERT.
Если вы добавите 2 столбца о которых вы говорите, то это будет сильно ограниченное решение. Естественно все зависит от целей и задач. Но на вскидку из озвученного можно предложить создать отдельную таблицу, примерно такую:
Rent
item_id - ид товара (index)
rent_date - дата начала ренты
return_date - дата возврата
client_id - если есть таблица клиентов
staff_id - сотрудник кто оформил
rate_id - тариф если есть таблица тарифов
Ну можете добавить столбцы на свое усмотрение. Получаете достаточную гибкость. Сомневаюсь что возникнут огромные проблемы из-за количества записей в таблице.
Достаточно быстро окажется, что надо как-то отслеживать поступление товаров, ремонт, списание и т.п.
В общем лучше сразу ориентироваться на документы поступления (откуда и считается кол-во всего), документы выдачи (сколько сейчас в прокате/аренде), документы возврата, документы выбытия и т.п.
Соответственно "набежит" по как минимум паре таблиц на каждую такую сущность (данные документа и строки документа).
Соответственно текущее состояние будет вычисляемым как сумма приходов минус суммы расходов, выдач, списаний), но в том числе будет доступна информация о движениях каждого элемента учета.