Мне нужно добавить таблицу купонов в свою базу данных. Есть 3 типа купонов: процентные, суммовые или 2 к 1.
Пока что я придумал таблицу купонов, которая содержит эти 3 поля. Если процентное значение не равно нулю, то это купон такого типа.
Я считаю, что это неправильный способ. Стоит ли мне создать таблицу CouponType и какой вы ее увидите? Где бы вы хранили эти значения?
Любая помощь или подсказка приветствуются!
Спасибо,
Teebot

Вы правы, я думаю, что таблица CouponType подойдет для вашей проблемы.
Две таблицы: Coupons и CouponTypes. Сохраните CouponTypeId внутри таблицы Coupons.
Так, например, у вас будет запись купона под названием «Скидка 50%», если она будет ссылаться на процент от записи типа CouponType, и оттуда вы можете определить логику, чтобы вычесть 50% стоимости товара.
Итак, теперь вы можете создавать неограниченное количество купонов. Если это купон на сумму в долларах, он возьмет столбец «сумма» и будет рассматривать его как сумму в долларах. Если это процентная скидка, он будет рассматривать его как процент, а если это сделка «x за 1», он будет рассматривать значение как x.
- 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> :))
Вы могли бы это сделать, но тогда столбец суммы используется для хранения двух разных типов данных. Это укусит вас дальше по дороге. Вы заменили 2 столбца на один столбец и соединение - я бы оставил 2 столбца!
Я бы определенно создал таблицу поиска CouponType. Таким образом, вы избежите использования всех NULL и разрешите использование большего количества типов купонов в будущем.
Купон coupon_id INT имя VARCHAR coupon_type_id INT <- Внешний ключ
CouponType coupon_type_id INT type_description VARCHAR ...
Или, я полагаю, у вас может быть столбец типа купона в таблице купонов CHAR (1)
В будущем у вас может появиться гораздо больше разных типов купонов. С ними также может быть связана другая бизнес-логика - никогда не знаешь. В этом случае всегда полезно делать все правильно, так что да, определенно, создайте поле типа купона и связанную с ним таблицу словаря.
Большое спасибо, mwilliams. Я определенно иду туда. спасибо вам всем за ваши ответы