Таблица Реализовывать возврат продаж

#database-design

Вопрос:

Я создаю приложение для управления запасами для бизнеса электронной коммерции на основе наложенного платежа, которое имеет около 1000 продаж в день.

Когда пользователь (администратор или сотрудник) совершает новую продажу, он выбирает товар со склада, вводит заказанное количество и выбирает статус, если товары доставлены или возвращены, и для этого я добавил a $table->boolean('is_delivered'); в таблицу продаж

Моя таблица продаж выглядит так

         $table->id();
        $table->foreignId('warehouse_id')->constrained();
        $table->foreignId('product_id')->constrained();
        $table->foreignId('user_id')->constrained();
        $table->integer('quantity');
        $table->interger('product_price');
        $table->boolean('is_delivered');
        $table->timestamps();
 

Я признаю, что это ужасный дизайн, и я хочу сделать что-то лучшее с возвратами

Я думал создать новые returns таблицы, но тогда мне придется повторить и добавить warehouse_id , product_id , user_id , quantity и product_price столбцы

Могу ли я что-нибудь сделать для этого?

Комментарии:

1. конечно, вы можете попробовать. Например, вы можете создать дополнительную таблицу «SaleStatus» и поместить туда все возможные статусы,например «Заказано»,»Отправлено»,»Доставлено»,»Отменено»,»Возвращено». Затем добавьте внешний ключ между таблицей «Продажи»и таблицей «SaleStatus».

2. @Сергей спасибо, но мне нужно только два статуса, доставленных и возвращенных. Не было бы лучше, если бы я просто сохранил столбец статуса в таблице продаж вместо этого?

3. Я сильно подозреваю,что вам нужны эти два статуса только сегодня, завтра ваш клиент придет к вам и скажет, что он не может жить без статуса «Отправлен» (просто пример). На вашем месте я бы создал эту дополнительную таблицу

4. В этом есть смысл. Итак, вы предлагаете мне создать таблицу sale_statuses с упомянутыми четырьмя столбцами и добавить идентификатор sale_status_id в качестве внешнего ключа в таблицу продаж, верно?

5. не «четыре столбца», а «четыре строки».