Вы правы, я думаю, что таблица CouponType подойдет для вашей проблемы.
Две таблицы: Купоны и Типы купонов. Сохраните CouponTypeId в таблице купонов.
Так, например, у вас будет запись о купоне, называемая «скидка 50%», если вы будете ссылаться на процент от записи купона с типом купона, и оттуда вы сможете определить логику для получения 50% от стоимости товара.
Так что теперь вы можете создавать неограниченные купоны, если это купон типа суммы в долларах, он возьмет столбец «сумма» и будет рассматривать его как сумму в долларах. Если это процент в процентах, он будет обрабатываться как процент, а если это сделка «х для 1», он будет воспринимать значение как х.
- Table Coupons
- ID
- name
- coupon_type_id # (or whatever fits your style guidelines)
- amount # Example: 10.00 (treated as $10 off for amount type, treated as
# 10% for percent type or 10 for 1 with the final type)
- expiration_date
- Table CouponTypes
- ID
- type # (amount, percent, <whatever you decided to call the 2 for 1> :))