日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

把業(yè)務(wù)邏輯變成數(shù)據(jù)結(jié)構(gòu)和SQL語句的例子。自然

系統(tǒng) 2074 0

?

??? 更正:和大家交流了一下,發(fā)現(xiàn)現(xiàn)在就叫做架構(gòu)有一點大,還是叫做框架更準(zhǔn)確一些,就叫做 自然框架 吧。

??? 目前自然框架的內(nèi)容包括三個部分:使用自定義控件快速實現(xiàn)增刪改查和導(dǎo)出Excel、通用權(quán)限、個性化設(shè)置。

?

??? 上一篇里? 球球 ?同學(xué)詢問“ 不太明白需求是怎么轉(zhuǎn)化為數(shù)據(jù)庫的。比如一個最簡單的會員例子,累計1萬消費(fèi)以上是一級會員,5000消費(fèi)以上是2級會員,買商品屬于1級會員的8折,屬于2級會員的9折,這個業(yè)務(wù)邏輯要怎么轉(zhuǎn)化成數(shù)據(jù)庫?” 那我就以這個作為例子說一下吧。

?

???? 根據(jù)這個需求我們可以得到以下幾個已知條件
1、有會員信息——會員表。
2、會員要有等級,建立一個會員等級表。
3、會員的等級是依據(jù)累計消費(fèi)金額而定。5000元以上是二級會員,10000元以上是一級會員。
4、有產(chǎn)品信息——產(chǎn)品表。
5、會員購買產(chǎn)品可以享受折扣,折扣根據(jù)會員的級別而定。

?

??? 問題
1、會員級別的確定?
2、如何獲得會員購買商品的折扣?

我們可以在數(shù)據(jù)庫里面建立四個表:【會員表】、【會員等級表】、【產(chǎn)品表】、【會員享受的折扣表】。
【示意圖】。

?

?

?

(這里的商品表怎么還有商品等級ID呢?折扣表里面也有?這個后面的需求擴(kuò)展里面的,本來要做兩套圖的,俺就偷懶了)

?

??? 回答
1、會員級別是依據(jù)會員的消費(fèi)累計金額來確定的,那么當(dāng)前的會員消費(fèi)金額就是已知條件,我們可以把它作為函數(shù)的參數(shù),于是我們可以寫一個函數(shù):

?

private ? int ?SetMemberLevelID( int ?memberID, int ?money)
????????{
????????????DataAccessLayer?dal?
= ? new ??DataAccessLayer();
????????????
????????????
// 依據(jù)累計的消費(fèi)金額,確定會員的等級
????????????sql? = ? " SELECT?TOP?1?會員級別ID?FROM?Demo_會員級別表?WHERE?(消費(fèi)金額?<? " + ?money? + " ) " ;
????????????
string ?會員級別ID? = ?dal.RunSqlGetID(sql);

????????????
// 修改會員的等級
????????????sql? = ? " update?Demo_會員表?set?會員級別ID?=? " ? + ?會員級別ID? + ? " ?where?memberID=? " ? + ?memberID.ToString();
????????????dal.RunSql(sql);

????????????
????????}

?

?

??? 當(dāng)然我們也可以把第一個SQL語句作為一個子查詢,加在第二個SQL語句里面。
??? 或者如果我們可以知道會員原先的級別的話,我們可以先做一下比較,會員級別變化的時候在修改會員的等級。

?

2、這個就簡單了,會員享受的折扣是和等級相關(guān)的,我們有了會員享受的折扣表,寫一條SQL語句就出來了。

?

sql? = ? " select?折扣?from?Demo_會員級別折扣表?where?會員級別ID?=?1 " ;

?

?

??? 不知道這個是不是求求想要的。

?

??? 功能擴(kuò)展

???? 這個會員折扣的例子,讓我想起來了去年看的一篇帖子,和這個很像,區(qū)別在于商品也是分等級的,不同的會員等級對應(yīng)不同的產(chǎn)品等級可以享受不同的折扣,比如會員有三個等級——一級、二級、三級,產(chǎn)品有兩個等級——優(yōu)等、一般。
那么就會出現(xiàn)一個笛卡爾乘積的形式:


一級會員購買優(yōu)等商品享受九折,
一級會員購買一般商品享受八折,
二級會員購買優(yōu)等商品享受九五折,
二級會員購買一般商品享受八五折,
三級會員購買優(yōu)等商品享受九九折,
三級會員購買一般商品享受九折。

?

??? 以前的那個帖子的要求就是如何依據(jù)會員的等級和商品的等級來判斷享受的折扣。

??? 我們看看如何來解決這個問題。我們的商品表里面加上商品等級字段,在【會員享受的折扣表】里面也加上一個商品等級ID字段。剩下的就不用說了吧,只需要稍稍改一下那個SQL語句就可以了。

?

sql? = ? " select?折扣?from?Demo_會員級別折扣表?where?會員級別ID?=?1?and?商品級別ID?=?1 " ;

?

??? 如果您也看多那篇帖子的話,您會發(fā)現(xiàn)那篇帖子用了好長的代碼才解決,當(dāng)然人家是用了OO的方法,好像解決的還挺巧妙地,我的OO水平還不夠,沒有看懂。

?

FAQ

1、為什么要建立【會員等級表】、【商品等級表】?
???? 因為建立表以后,就可以做一個維護(hù)程序讓客戶自己維護(hù)這兩個級別。

2、為什么要建立【會員享受的折扣表】?
??? 理由同上,我們也可以做一個維護(hù)程序,這樣享受什么樣的折扣,客戶就可以隨時修改了。

?

ps: 博客園北京俱樂部第三次技術(shù)活動(2009/05/23) ?

?

把業(yè)務(wù)邏輯變成數(shù)據(jù)結(jié)構(gòu)和SQL語句的例子。自然架構(gòu)改成自然框架


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久治县| 南郑县| 大英县| 都安| 绥芬河市| 安西县| 宁国市| 阜新市| 浙江省| 格尔木市| 孟州市| 昌乐县| 宜春市| 津南区| 湄潭县| 泾阳县| 曲周县| 岱山县| 双牌县| 日土县| 阿坝县| 永胜县| 平罗县| 清河县| 会东县| 赣州市| 昌黎县| 龙海市| 那坡县| 金坛市| 珲春市| 吉安市| 府谷县| 朝阳市| 林芝县| 南江县| 凤城市| 丹棱县| 梁山县| 美姑县| 洛川县|