Schema for product prices based on membership level

database-designschema

I need to model the following scenario:

  • Customers have 3 options of annual memberships: [basic:$0,silver:$50,gold:$100]
  • We have a supplier with product A at a cost of $30 per unit. (We will have multiple suppliers with multiple products)
  • Sell price based on level of membership for product A is A=[basic:$90,silver:$50,gold:$35]

Questions

  1. So far this is the model I have come with and am looking for validation from more experienced dbas (see diagram below)
  2. With this model I have to input a price per product/membership/supplier. If management wants to apply a flat discount 20% off for all products of supplier B for customer with membership Silver this will break my logic. Not being requested but I can see it comming. Is there a way of having both scenarios in the schema? I have no idea how.
  3. Last but not least, the membership is a product customers need to buy in order to get some discount. By default all customers begins with Basic level. with this in mind how can I accommodate membership in my Product and Product_price??? the product_price table already takes in the membership on account so it is a kind of circular reference?

enter image description here

Best Answer