首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >信用计算使用的系统设计

信用计算使用的系统设计
EN

Software Engineering用户
提问于 2018-07-17 01:58:08
回答 1查看 128关注 0票数 1

我们正在实施一个系统,在这个系统中,用户可以购买用于两个项目的“信用”。我希望能就如何实施这一制度提出建议。我们有两种消费信贷方式: ItemA和ItemB。

例如,在购买信贷时,用户可以批量购买信贷,从而降低信贷成本(这不是真正的成本,只是一个例子):

代码语言:javascript
复制
Cost     | Cost ItemA (each)  | Cost ItemB (each)
-----------------------------------------------
$400     | 16c                | 10c 
$800     | 12c                | 8c
$1200    | 8c                 | 4c

一个示例场景:

一个用户获得了400美元的学分,然后在下周购买了1200美元的学分。这意味着他们可能在16c (ItemA)和10c (ItemB)时各有400美元的学分,在系统中还有8c (ItemA)和4c (ItemB)的1200个学分。

用户将在系统中看到的是,他们总共有1600美元的学分(1200+400)可用,当他们消费信贷,它将减少总额的支出,例如:

代码语言:javascript
复制
- Spend 2000 of ItemA 
  Reduce by $320 (16c each), $80 remaining of first credit buy

$1280 overall remaining

- Spend 2000 of ItemB 
  Reduce by $80 (10c each) 800 credits
  Reduce by $48 (4c each) 1200 credits

我们有一个数据库来存储学分,它将以密钥的形式分发,该密钥包含它包含的学分数量以及验证检查。花费的项目(如ItemA或ItemB )也将存储在数据库中。

您将如何在数据库表结构和逻辑上实现上述内容,以计算剩余和花费的学分?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2018-07-17 15:23:12

你需要的是一张列有商品及其基本价格的表格,然后把它与给定数量的数量和折扣表结合起来。

公式为:调整后的价格=基准价格-给定数量的折扣

样本“物品”表:

代码语言:javascript
复制
+------------------------+
| Items                  |
+----+------+------------+
| Id | Name | Base Price |
| 1  | A    | 16         |
| 2  | B    | 10         |
+----+------+------------+

和一张用来计算折扣的表格:

代码语言:javascript
复制
+-------------------------------+
| Item Discounts                |
+---------+----------+----------+
| Item ID | Quantity | Discount |
| 1       | 25       | 0        |
| 1       | 67       | 4        |
| 1       | 150      | 8        |
| 2       | 40       | 0        |
| 2       | 100      | 2        |
| 2       | 300      | 6        |
+---------+----------+----------+

这为您在定义折扣(和重新定义折扣)方面提供了很大的灵活性,而无需重新设计应用程序。折扣变成了数据驱动。

创建一个数据库视图来平平这两个表,并计算折扣价格,使您的工作在应用程序级别上更容易:

代码语言:javascript
复制
+-------------------------------------------------------------+
| Item Discounts View                                         |
+---------+----------+----------+------------+----------------+
| Item ID | Quantity | Discount | Base Price | Discount Price |
| 1       | 25       | 0        | 16         | 16             |
| 1       | 67       | 4        | 16         | 12             |
| 1       | 150      | 8        | 16         | 8              |
| 2       | 40       | 0        | 10         | 10             |
| 2       | 100      | 2        | 10         | 8              |
| 2       | 300      | 6        | 10         | 4              |
+---------+----------+----------+------------+----------------+

“折扣价格”是项目的基本价格与每一行当前折扣之间的差额。这可以在数据库视图中自动计算,查询价格可以非常简单:

代码语言:javascript
复制
SELECT "Discount Price"
FROM "Item Discounts View"
WHERE "Item ID" = 1
  AND "Quantity" <= 
ORDER BY "Quantity" DESC
LIMIT 1;

由于这是适当的正常化,调整一个项目的基本价格将级联到视图,所有的价格(包括折扣)将立即调整。它还为您提供了一个数据集,以便在将事务拆分时引用(前25个是16c,接下来的67个是12c,等等)。

这种数据库视图有一个额外的好处,就是可以作为数据源向购物者显示,告知他们在进行交易之前可以得到的折扣。市场部可能会喜欢的。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/375312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档