在数据库中设计月订阅系统的良好做法
我想知道如何在数据库中设计每月订阅软件系统.
这些系统在互联网上广泛使用,尽管我找不到关于数据库设计的很多东西. 在我的情况下,这些元素(也许还有一些我忘了)必须包括在内: >客户端 除了数据库设计之外,还可能有触发器需要设置这样做(?). 我的痛点: >我看不到一般的方式,这是全球的设计 注意 我自愿没有详细地披露我的需要,因为这样,辩论可以保持通用,对其他人更有用. 感谢帮助. 解决方法我会用这个模型你的客户 Client ------ Client ID Name ... 您的计划(您可以在需要时定义新计划). Plan ------ Plan ID Name Credits_per_month Price_per_month (Price_per_year) 您的订阅 Subscriptions ------ Subscription ID Client ID Plan ID Subscription_start_timestamp Subscription_end_timestamp 考虑到这个模型,我将每个客户端每个计划使用1行. 当客户订阅“Premium with 1st month free!”时,您的数据库将如下所示: Client ------ ID: 1; LastName: Foo; ... Plan ------ ID: 1; Name: Premium; Credits: -1 (unlimited); Price_per_month: 30 ID: 2; Name: Premium 1st month offer; Credits: -1; Price_per_month: 0 Subscription ------ ID: 1,Client ID: 1,Plan ID: 2,Start: 2014-05-07 08:00,End: 2014-06-06 07:59 ID: 1,Plan ID: 1,Start: 2014-06-07 08:00,End: 9999-12-06 07:59 当客户取消订阅7月1日时,请更新您的订阅表中的列,仅包含月份和年份(因为您已预先设定了日期和时间). Subscription ------ ID: 1,End: 2014-07-06 07:59 要知道客户端是否不取消订阅,您可以使用: Select Count(client.*) From Client client Inner Join Subscription sub On sub.client_id = client.id Where DATE_TODAY Between sub.start And sub.end 确保您不能同时为客户端订阅2个订阅. 这允许您自动处理您的应用程序中的每月订阅,但不能与您的银行/ paypal帐户一起处理. 但有些银行为您提供两项服务: 第二个将允许您处理每月订阅. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |