把业务逻辑变成数据结构和SQL语句的例子。自然架构改成自然框架

    更正:和大家交流了一下,发现现在就叫做架构有一点大,还是叫做框架更准确一些,就叫做自然框架吧。

    目前自然框架的内容包括三个部分:使用自定义控件快速实现增删改查和导出Excel、通用权限、个性化设置。

    上一篇里 球球 同学询问“不太明白需求是怎么转化为数据库的。比如一个最简单的会员例子,累计1万消费以上是一级会员,5000消费以上是2级会员,买商品属于1级会员的8折,属于2级会员的9折,这个业务逻辑要怎么转化成数据库?”那我就以这个作为例子说一下吧。

根据这个需求我们可以得到以下几个已知条件: 1、有会员信息——会员表。 2、会员要有等级,建立一个会员等级表。 3、会员的等级是依据累计消费金额而定。5000元以上是二级会员,10000元以上是一级会员。 4、有产品信息——产品表。 5、会员购买产品可以享受折扣,折扣根据会员的级别而定。

    问题: 1、会员级别的确定? 2、如何获得会员购买商品的折扣?

我们可以在数据库里面建立四个表:【会员表】、【会员等级表】、【产品表】、【会员享受的折扣表】。 【示意图】。

(这里的商品表怎么还有商品等级ID呢?折扣表里面也有?这个后面的需求扩展里面的,本来要做两套图的,俺就偷懒了)

    回答: 1、会员级别是依据会员的消费累计金额来确定的,那么当前的会员消费金额就是已知条件,我们可以把它作为函数的参数,于是我们可以写一个函数:

private int SetMemberLevelID(int memberID,int money)
         {
             DataAccessLayer dal = new  DataAccessLayer();
 
 //依据累计的消费金额,确定会员的等级
             sql = "SELECT TOP 1 会员级别ID FROM Demo_会员级别表 WHERE (消费金额 < "+ money +")";
 string 会员级别ID = dal.RunSqlGetID(sql);
 
 //修改会员的等级
             sql = "update Demo_会员表 set 会员级别ID = " + 会员级别ID + " where memberID= " + memberID.ToString();
             dal.RunSql(sql);
 
 
         }

    当然我们也可以把第一个SQL语句作为一个子查询,加在第二个SQL语句里面。     或者如果我们可以知道会员原先的级别的话,我们可以先做一下比较,会员级别变化的时候在修改会员的等级。

2、这个就简单了,会员享受的折扣是和等级相关的,我们有了会员享受的折扣表,写一条SQL语句就出来了。

sql = "select 折扣 from Demo_会员级别折扣表 where 会员级别ID = 1";

    不知道这个是不是求求想要的。

功能扩展

     这个会员折扣的例子,让我想起来了去年看的一篇帖子,和这个很像,区别在于商品也是分等级的,不同的会员等级对应不同的产品等级可以享受不同的折扣,比如会员有三个等级——一级、二级、三级,产品有两个等级——优等、一般。 那么就会出现一个笛卡尔乘积的形式:

一级会员购买优等商品享受九折, 一级会员购买一般商品享受八折, 二级会员购买优等商品享受九五折, 二级会员购买一般商品享受八五折, 三级会员购买优等商品享受九九折, 三级会员购买一般商品享受九折。

    以前的那个帖子的要求就是如何依据会员的等级和商品的等级来判断享受的折扣。

    我们看看如何来解决这个问题。我们的商品表里面加上商品等级字段,在【会员享受的折扣表】里面也加上一个商品等级ID字段。剩下的就不用说了吧,只需要稍稍改一下那个SQL语句就可以了。

sql = "select 折扣 from Demo_会员级别折扣表 where 会员级别ID = 1 and 商品级别ID = 1";

    如果您也看多那篇帖子的话,您会发现那篇帖子用了好长的代码才解决,当然人家是用了OO的方法,好像解决的还挺巧妙地,我的OO水平还不够,没有看懂。

FAQ

1、为什么要建立【会员等级表】、【商品等级表】?      因为建立表以后,就可以做一个维护程序让客户自己维护这两个级别。

2、为什么要建立【会员享受的折扣表】?     理由同上,我们也可以做一个维护程序,这样享受什么样的折扣,客户就可以随时修改了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术视野

4种简单的方法保护您的公司免受网络攻击

就在过去的一年里,网络攻击已经成为几乎每个人和组织面临的可怕现实。无论是个体受害者还是任何规模的企业或政府组织,黑客窃取信息的行为都在发生,威胁迫在眉睫。

933
来自专栏域名资讯

工信部资质审批了Donuts注册局旗下的21顶级域域名注册

工信部官网公布:.center/.video/.social/.team/.show/.cool/.zone/.world/.today/.cit...

3855
来自专栏安恒信息

美国欲放弃互联网控制权 希望修复国际关系

继被曝出大量的互联网监控项目之后,现在,美国试图通过放弃对互联网的控制来重新修复其跟其他国家之间的国际关系。据外媒报道,美国商务部于日前宣布,他们将于美国当地时...

3559
来自专栏ytkah

公众平台自动回复支持插入微信卡券 多图文消息可嵌入卡券

  微信卡券作为锁住老客户、吸引新用户的工具,一直是微商的不二法宝,微信团队也极重视卡券功能的开发,昨晚微信发布“微信卡券功能支持关键词自动回复、多图文嵌入卡券...

3075
来自专栏企鹅号快讯

360勒索软件威胁形势报告:中小企业成黑客聚焦目标

2017年,包含WannaCry、Petya的勒索病毒攻击事件已爆发过多次,这些勒索软件攻击皆是在全球范围内爆发的大规模攻击。勒索软件攻击下,部分企业计算机、服...

2128
来自专栏较真的前端

Github遭受史上最严重的DDoS攻击,峰值高达1.3Tbs

2659
来自专栏云市场·精选汇

案例 | 广东省浙江商会互联网运作模式探究

广东省浙江商会于2005年6月18日在广州正式成立,经广东省民政厅核准注册登记的非营利性服务、中介和协调机构,商会会员分别来自浙江省的各个地区,具有较强的行业代...

1972
来自专栏企鹅号快讯

博览安全圈:印度10亿公民信息仅售8美元

【IT168 资讯】为了响应国家号召,加强全民网络安全意识,我们会经常性的为大家奉上最具代表性的安全事件。 1、黑客盯上平昌冬奥会 2018年2月9日,第23届...

22010
来自专栏域名资讯

域名Deskbike.com刚注册没多久就以五位数结拍

大家进行域名投资,主要是看中域名未来可能会带来巨大收益。最近,米市接连传出域名高价交易的消息,也是振奋着不是投资人的心。无论域名以何种价格成交,其自身...

2039
来自专栏程序员互动联盟

淘宝上的黑客技术书籍能学到真正的黑客技术吗?

黑客技术的高低和什么书籍,更不会合在哪里买的书籍有直接的关系,决定黑客能力主要是表现在两个方面

1132

扫码关注云+社区

领取腾讯云代金券