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

简介:     更正:和大家交流了一下,发现现在就叫做架构有一点大,还是叫做框架更准确一些,就叫做自然框架吧。     目前自然框架的内容包括三个部分:使用自定义控件快速实现增删改查和导出Excel、通用权限、个性化设置。

 

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

    目前自然框架的内容包括三个部分:使用自定义控件快速实现增删改查和导出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、为什么要建立【会员享受的折扣表】?
    理由同上,我们也可以做一个维护程序,这样享受什么样的折扣,客户就可以随时修改了。

 

ps: 博客园北京俱乐部第三次技术活动(2009/05/23) 

 

相关文章
|
3天前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
70 0
|
1月前
|
消息中间件 缓存 NoSQL
Redis各类数据结构详细介绍及其在Go语言Gin框架下实践应用
这只是利用Go语言和Gin框架与Redis交互最基础部分展示;根据具体业务需求可能需要更复杂查询、事务处理或订阅发布功能实现更多高级特性应用场景。
181 86
|
3天前
|
人工智能 JavaScript 前端开发
GenSX (不一样的AI应用框架)架构学习指南
GenSX 是一个基于 TypeScript 的函数式 AI 工作流框架,以“函数组合替代图编排”为核心理念。它通过纯函数组件、自动追踪与断点恢复等特性,让开发者用自然代码构建可追溯、易测试的 LLM 应用。支持多模型集成与插件化扩展,兼具灵活性与工程化优势。
34 6
|
6月前
|
人工智能 自然语言处理 数据可视化
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
|
3月前
|
存储 移动开发 JavaScript
快应用推广连接底层技术与架构以及如何结合自身系统分销的推广逻辑和技术对接-优雅草卓伊凡|果果|Ant
快应用推广连接底层技术与架构以及如何结合自身系统分销的推广逻辑和技术对接-优雅草卓伊凡|果果|Ant
96 4
快应用推广连接底层技术与架构以及如何结合自身系统分销的推广逻辑和技术对接-优雅草卓伊凡|果果|Ant
|
2月前
|
人工智能 自然语言处理 JavaScript
Github又一AI黑科技项目,打造全栈架构,只需一个统一框架?
Motia 是一款现代化后端框架,融合 API 接口、后台任务、事件系统与 AI Agent,支持 JavaScript、TypeScript、Python 多语言协同开发。它提供可视化 Workbench、自动观测追踪、零配置部署等功能,帮助开发者高效构建事件驱动的工作流,显著降低部署与运维成本,提升 AI 项目落地效率。
246 0
|
3月前
|
人工智能 搜索推荐 数据安全/隐私保护
快应用推广联盟分销逻辑及技术架构深度解析-优雅草卓伊凡|果果|Ant
快应用推广联盟分销逻辑及技术架构深度解析-优雅草卓伊凡|果果|Ant
125 2
|
3月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
294 0
|
9月前
|
机器学习/深度学习 安全 算法
十大主流联邦学习框架:技术特性、架构分析与对比研究
联邦学习(FL)是保障数据隐私的分布式模型训练关键技术。业界开发了多种开源和商业框架,如TensorFlow Federated、PySyft、NVFlare、FATE、Flower等,支持模型训练、数据安全、通信协议等功能。这些框架在灵活性、易用性、安全性和扩展性方面各有特色,适用于不同应用场景。选择合适的框架需综合考虑开源与商业、数据分区支持、安全性、易用性和技术生态集成等因素。联邦学习已在医疗、金融等领域广泛应用,选择适配具体需求的框架对实现最优模型性能至关重要。
1639 79
十大主流联邦学习框架:技术特性、架构分析与对比研究
|
5月前
|
Java 开发者 Spring
Spring框架 - 深度揭秘Spring框架的基础架构与工作原理
所以,当你进入这个Spring的世界,看似一片混乱,但细看之下,你会发现这里有个牢固的结构支撑,一切皆有可能。不论你要建设的是一座宏大的城堡,还是个小巧的花园,只要你的工具箱里有Spring,你就能轻松搞定。
215 9
下一篇
日志分析软件