У меня следующий случай.
Резервирование, это резервирование может быть отменено, оно может быть вновь создано, может быть подтверждено, что оно может быть отклонено.
Возможны разные причины отмены. Допустим, резервирование истекло или, возможно, оно не было обработано в течение определенного периода времени или по какой-либо другой причине.
Для подтверждения бронирования необходимо выполнить несколько суб-транзакций. Это означает, что в самом Подтверждении есть поток. Решение, с которым пришла моя команда, - это своего рода рабочий стол с различными статусами. Что хорошо. Я почувствовал необходимость однозначно идентифицировать состояние резервирования, объявив поле ReservationStatus, которое отображает определенные варианты статусов, которые уже определены в таблице. В этом случае статус бронирования будет НОВЫЙ, ПОДТВЕРЖДЕН, ОТМЕНЕН, ОТКЛОНЕН. Каждое состояние будет отображать определенные варианты статусов в рабочей таблице.
Моя команда была убеждена, что это добавляет дополнительную сложность. Я думаю, что это наоборот, это упрощает поток. Он также объявляет естественный дискриминатор и полиморфизм. Мы должны использовать очереди и асинхронные процессы.
Как я могу на самом деле подтвердить, что у нас должен быть такой столбец, в котором, по-видимому, аргументов, которые я уже упоминал, было недостаточно, и глубоко внутри я знаю, что я прав:)?