Usage of Discount Coupon depends on the pricing policy of the company. \\ If the pricing policy is 'free + pay per course', then the discount coupons can be used while purchasing a product. \\ If the pricing policy is 'free + paid membership subscription', then the coupon can be used for the membership subscription. A Discount Coupon will have the following properties Coupon code, discount, quantity, redeemed count, created date and expiry date DB schema for discount coupon Table Name: **coupons** ^ Column_name ^type ^ Description ^ | id | integer | primary key | | code | varchar | A unique value | | quantity | integer | Number of times the coupon can be used | | redeemed_count | varchar | number of times the coupon is used | | discount | varchar | discount in percentage | | expiry_date| date_time | date on which the coupon will expire | | created_at | date_time | date of which the coupon was created | | updated_at| date_time | coupon properties updated date | | deleted_at| date_time | when this coupon was deleted | Table Name: **product_coupons** ^ Column_name ^type ^ Description ^ | id | integer | primary key | | coupon_id | varchar | A unique value | | product_type | integer | type of the product. this can be 'Course', 'Certification', 'LiveEvent', or Subscription | | product_id | varchar | On which product, this coupon can be used | | created_at | date_time | date of which the coupon was created | | updated_at| date_time | coupon properties updated date | Table Name: **coupon_usages** ^ Column_name ^type ^ Description ^ | id | integer | primary key | | user_id | integer | id of the user who used the coupon | | coupon_id | integer | references the coupon. | | product_id | integer | On which product, this coupon was used | | product_type | varchar | type of the product, this can be 'Course', 'Certification', 'LiveEvent', or Subscription | | order_id | integer | Order id | | created_at| date_time | date of which the coupon was created | | updated_at | date_time | |