eugene_leshchinskiy
@eugene_leshchinskiy

Как лучше спроектировать таблицу?

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

Ну можете добавить столбцы на свое усмотрение. Получаете достаточную гибкость. Сомневаюсь что возникнут огромные проблемы из-за количества записей в таблице.
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
Достаточно быстро окажется, что надо как-то отслеживать поступление товаров, ремонт, списание и т.п.

В общем лучше сразу ориентироваться на документы поступления (откуда и считается кол-во всего), документы выдачи (сколько сейчас в прокате/аренде), документы возврата, документы выбытия и т.п.
Соответственно "набежит" по как минимум паре таблиц на каждую такую сущность (данные документа и строки документа).
Соответственно текущее состояние будет вычисляемым как сумма приходов минус суммы расходов, выдач, списаний), но в том числе будет доступна информация о движениях каждого элемента учета.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы