我正在开展一个项目,我正在努力寻找一种方法将我的定价计划表与客户联系起来。
id name description price days
1 Free the free plan 0.00 0
2 Silver the silver plan 49.99 365
3 Gold the gold plan 99.99 365
我的第一个想法是将计划ID作为外键添加到customers表中。但我还需要知道什么时候到期日(根据购买日期和所选计划的日期)。
答案 0 :(得分:0)
当尝试做这样的事情时,最好保持彼此抽象的表格。
user_pricing_plans - the table name
pricing_plans_id - the id for the record you want to associate with a user
user_id - the id of the user
date_expiration - the date the plan will expire
date_purchased - the date the plan was purchased
按照这样的方法,如果需要添加额外信息,您可以更改此表。你也可以在将来跟另一张桌子采用类似的方法。
所有这一切的关键是将您的关注点(数据)分成不同的容器。
编辑:为了暗示我为什么要分离表是个好主意,我在user_pricing_plans表中添加了date_purchased作为字段。
一个dba我知道曾经说过" mysql不是开发人员的地方 - 他们试图创建表来处理他们的代码。表用于表示数据。您的代码应该被编写为使用数据和代表它们的模式 - 而不是相反的方式"
答案 1 :(得分:0)
我不知道为什么我不能在帖子中的最佳答案中添加评论。
正如@Jonathon Hibbard 几年前指出的那样,将定价计划和用户模型之间的数据分开还有另一个原因。
您曾经有用户拥有一个计划,然后选择另一个计划,这就是所谓的“历史”。为了实现这一点,第三张表非常重要。
在我看来,更重要的是,一件事是你的定价表,另一件事是你对每个客户的最终价格。您认识的人、亲密的客户想要“特价”价格,这第三张表让您有机会为一个固定价格的计划和许多其他用例设置不同的价格。
把你的主要计划表想象成一个产品,用户是客户,第三方是票,应用“临时定价”,偶尔折扣或其他什么。