По идее в перемещениях товар перемещается между складами. Незачем перемещать товар между юзерами. Юзер может быть ответственный за перемещение, и быть указан, как userid в таблице перемещений.
Для того, чтобы переместить товар со склада на человека, можно просто завести склад, имеющий название как и имя человека.
Например:
Перемещение:
ИЗ: Склад Иванов. А.В.
В: Склад Погрузка на отправку.
Ответственный: Иванов А.В.
Это упростит логику, и не нужно будет разделять физические склады-помещения, от логических складов-людей.
Тогда будут таблицы:
Юзеры
Склады
Товары
Перемещения
А вот итоговый подсчет остатков на складах делать можно уже двумя способами:
1) Либо менять в таблице "склады" кол-во товаров, и параллельно создавать запись в таблице перемещения.
2) Либо вводить начальные остатки в таблицу складов, а вот окончательный подсчет делать на основании только одних лишь перемещений.
Выбирать уже вам, но я бы выбрал второй вариант, так как если в таблицу перемещений добавить поле проводки документа, то при окончательном подсчете остатков можно исключить непроведенные документы.
А это даст возможность работникам подготавливать и сохранять перемещения, и изменять их до того, как документ проведен и товар физически перемещен.