精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一步一步設計你的數據庫之如何提取業務規則

運維 數據庫運維
一步一步設計你的數據庫之不可輕視的需求分析中我們通過多種方法來理解客戶的需求并撰寫了需求文檔。本文我們將回答三個問題。1. 為什么業務規則非常重要。2. 怎樣識別業務規則。3. 如何修改關系模型并隔離出業務規則。

引言:一步一步設計你的數據庫之不可輕視的需求分析中我們通過多種方法來理解客戶的需求并撰寫了需求文檔。本文我們將回答三個問題。1. 為什么業務規則非常重要。2. 怎樣識別業務規則。3. 如何修改關系模型并隔離出業務規則。

[[32301]] 

什么是業務規則

業務規則描述了業務過程中重要的且值得記錄的對象、關系和活動。其中包括業務操作中的流程、規范與策略。業務規則保證了業務能滿足其目標和義務。

生活中的一些業務規則可能是:

  1. 當顧客進入店內,最近的員工須向顧客打招呼說:“歡迎來到×××”。
  2. 當客戶兌換超過200元的獎券時,柜員須要求查看客戶的身份證并復印。當兌換的獎券金額小于25元時,無需客戶簽字。
  3. 早上第一個進辦公室的人需要把飲水機加熱按鈕打開。

本系列我們關注數據庫相關的業務規則,一些例子如下:

  1. 只有當客戶產生第一個訂單時才創建該客戶的記錄。
  2. 若一名學生沒有選任何一門課程,把他的狀態字段設為Inactive。
  3. 若銷售員在一個月中賣出10套沙發,獎勵500元。
  4. 一個聯系人必須至少有1個電話號碼和1個email郵箱。
  5. 若一個訂單的除稅總額超過1000元則能有5%的折扣。
  6. 若一個訂單的除稅總額超過500元則免運費。
  7. 員工購買本公司商品能有5%的折扣。
  8. 若倉庫中某貨品的存量低于上月賣出的總量時,則需要進貨。

從數據庫的視角來看,業務規則是一種約束。簡單的約束如:

所有訂單必須有一個聯系電話。

上述這類簡單的規則可以很容易的映射到關系數據庫定義中,為字段確定數據類型或設定某字段為必填(不能為NULL)。某些業務規則表達的約束會復雜些,如:

學生每天的上課時間加上項目時間必須在1至14小時之間。

我們可以通過check約束或外鍵約束來實現這類業務規則。對于一些非常復雜的業務規則,如:

一名教員每周不能少于30小時工作量,其中分為辦公時間、實驗時間和上課時間。每1小時的課需要0.5小時辦公時間進行備課。每1小時實驗需1小時辦公準備。每周指導學生論文時間不少于2小時。

類似上述的業務規則需要從多個表中收集數據,故在程序代碼中實現最為合適。

識別關鍵業務規則

記錄所有的業務規則并對這些規則進行分類能幫助我們更好的在系統中實現業務邏輯。

如何實現業務規則不僅與當前的業務邏輯有關,而且與該業務邏輯將來如何變化有關。當一個規則在將來很可能變化時,我們需要使用更復雜但更靈活的方式構建該規則。

舉例來說,假設公司只能向當地設有倉庫的城市發貨,這些城市包括:南京、長沙、西安、廣州。業務規則要求訂單中的發貨城市字段必須為NJ、CS、XA、GZ之一。

我們可以把該規則簡單的實現為check約束。但將來公司若在上海有了一個新倉庫,就必須從后臺數據庫端修改該check約束。若公司隨后設立更多新倉庫或業務規則變化為可以向沒有倉庫的城市發貨,每次我們都需要修改該約束。

考慮另一種實現該業務規則的方法——使用外鍵。我們創建一張ShippingCities表,其中存放值:NJ、CS、XA、GZ,并讓訂單表中的發貨城市字段外鍵引用ShippingCities表中的主鍵。這樣訂單的發貨城市列只能接受ShippingCities中存在的城市。當支持的發貨城市增加或減少時,只需要在ShippingCities中插入或刪除記錄。

兩種方式的實現難度差異不大,但前一種方式每次都需要修改數據庫結構,后一種只需要修改數據。修改數據不僅更省力而且技術要求也更低。

上述業務規則實現為check約束可能如下:

ShippingCity = ‘NJ’ or ShippingCity = ‘CS’ or ShippingCity = ‘XA’ or ShippingCity = ‘GZ’

上述代碼并不復雜,但只有熟悉數據庫的程序員從后臺才能修改。ShippingCitis表中的數據相對更易于理解,我們可以提供一個界面來讓用戶自己維護其中的城市。

要識別關鍵業務規則,我們可以問自己兩個問題。

第一、修改規則會有多困難。越是復雜的規則,修改起來越困難且更容易出錯。

第二、規則變化的可能性有多大。變化頻繁的規則需要額外的設計來更好的應對將來的變化。

需要特別注意的規則(關鍵業務規則):

  1. 枚舉值。例如:有效的發貨城市,訂單狀態(Pending, Approved, Shipped)等。
  2. 計算參數。例如:對500元以上的訂單免運費。這一數值可能在將來會調整為300元或600元。
  3. 有效參數。例如:項目組可由2至5人組成。某些項目是否可能由1個人完成或有更多人參與。
  4. 交叉記錄和交叉表檢查。例如:訂單中可訂購的貨品數量不能超過該貨品的當前庫存數。
  5. 可概括性約束。如果可預見到將來需應用一些類似的約束,我們可以考慮把這些約束抽象出來進行管理。例如:某保險公司最近主推保險產品A。對每月能賣出20份A產品的銷售人員給予1000元獎金。對于不同的保險產品在不同的時間段可能有不同的推廣獎勵規則。我們可以把產品名稱、編號、銷售量、獎金數額、促銷時間段提取出來放到一張獨立的表中作為計算獎金的參數。
  6. 非常復雜的檢查。有些檢查規則非常復雜,把這些規則放到程序代碼中實現更為容易和清晰。例如:學生選擇理學院的謂詞演算課程的前提是已通過理學院的命題演算課程或已通過社科院的邏輯I和II課程或者需要導師的允許。該規則在某些數據庫產品中可以通過表級的check約束實現,但放到程序中更易于維護和理解。

一些直接可以在數據庫中實現的業務規則:

  1. 固定枚舉值。例如:性別(男、女),用手習慣(左撇子、右撇子)。
  2. 數據類型要求。每個字段具有確定的數據類型是關系型數據庫的重要特性之一。濫用通用的數據類型(如string)對性能和數據防錯都會帶來損害。
  3. 必填值。例如:會員必須有手機聯系方式。
  4. 合理性檢查。合理性檢查設定的范圍基本不會變化。例如:商品的價格大于等于0。

作為軟件從業人員不要拒絕或回避變化。世界上唯一不變的就是變化。在收集業務規則時多去了解該規則的業務背景與歷史變化歷程,而不是逼迫客戶保證規則不會變化。盡可能發現所有的業務規則并記錄下來。對這些業務規則按變化的可能性和修改難度進行分類,精心設計那些將來可能變化且修改困難的規則。

#p#

提取關鍵業務規則

識別并分類業務規則之后,我們需要在數據庫中或數據庫外來實現關鍵業務規則。我們可以參考如下方法:

1. 若規則為檢驗一組有效值時,把該規則轉化為外鍵約束。先前舉例中的有效發貨城市就是一個很好的例子。創建ShippingCities表,填入允許的發貨城市。然后把Orders表的ShippingCity列設為外鍵,引用ShippingCities表的主鍵。

2. 若規則為參數可能變化的計算式時,把這些參數提取到一張表中。例如:一個月內賣出總價超過100萬元汽車的銷售員能獲得500元獎金。把參數100萬元和500元提取到一張表中,如果需要甚至可以把一個月的時間段也作為參數提取出來。

我還見過一些軟件系統在數據庫中有一張通用的參數表。該通用參數表中存放系統需要的各種參數,一些是用于計算、一些是作為檢驗、另一些決定系統的行為。每一條記錄有兩個字段:Name和Value。例如需要確定一名銷售員能獲得多少獎金,我們先要查找Name字段為BonusSales的記錄,檢查該銷售員的銷售額是否達到了Value字段的金額,若答案是肯定的再查找Name字段為BonusAward的記錄來確定獎金數額。這種設計另有一好處,在程序啟動時可以把通用參數表讀入內存的某集合中,此后使用參數值時就無需再次連接數據庫。

3. 若邏輯或計算規則很復雜時,則提取到代碼中進行實現。這里說的代碼可以是應用程序端代碼,還可以是數據庫端存儲過程。把規則放到代碼中實現的意義在于業務規則與數據庫表結構分離了,規則的變化不會影響到數據庫表結構。通過結構化編程或面向對象編程來實現復雜的規則更易于維護。

舉一個綜合性的例子:

一本關于數據庫設計的書籍賣出前5000本的版稅為5%,5000本至10000本之間的版稅為7%,超過10000本后的版稅為10%,不同類型書籍的版稅可能不同。

上述規則比較復雜且包含多個可能變化的參數,故使用第1、2條方法。我們可以通過存儲過程來實現該規則,并把參數隔離到一張參數表中進行維護。創建的參數表為RoyaltyRates,并通過BookId與Books關聯(如圖1所示)。這樣為不同書籍創建新的版稅規則就非常容易了。

 

圖1 參數表RoyaltyRates與Books表的關系

多層應用的概念大家都不會陌生。三層應用是最常見的分層方法。對于復雜的業務邏輯一般會在中間層(即業務層)中實現。對于一些基本的驗證,如必填信息、數字有效區間等,需要在最上層用戶界面以及最底層數據庫端進行雙重檢驗。數據庫端的約束是阻隔臟數據進入系統的最后一道防線,而用戶界面處的檢驗可以避免錯誤數據傳輸到系統后端才被拒絕,節省了系統資源。

注:關于多層應用的更多資料請參見最后的“總結與參考”部分。

[[32302]] 

主要內容回顧

1. 業務規則決定了業務如何運行,其涵蓋從簡單明了的入門打卡到復雜的獎金計算公式。

2. 對于數據庫而言,業務規則將影響到數據模型。業務規則確定了每個字段的域(值的類型和范圍),是否是必須的,以及該字段要滿足的其他條件。

3. 理解業務規則并識別那些需要特別處理的關鍵規則至關重要。

4. 有些規則簡單且基本不變,它們可以很容易的用數據庫特性來實現。其他的一些規則可能復雜或時常變化,我們可以把它們從數據庫中邏輯的或物理的隔離出來(隔離到參數表、存儲過程或業務層中),使它們易于修改。

 

多層應用參考

1. 談談對于企業級系統架構的理解(http://www.cnblogs.com/liping13599168/archive/2011/05/11/2043127.html)

2. Multitier architecture(http://en.wikipedia.org/wiki/Multitier_architecture)

3. Software Architecture, Architects and Architecting(http://www.bredemeyer.com/)

原文鏈接:http://www.cnblogs.com/DBFocus/archive/2011/06/08/2075795.html

【編輯推薦】

  1. 數據庫設計,你了解多少 
  2. 一步一步設計你的數據庫之不可輕視的需求分析

 

責任編輯:艾婧 來源: DBFocus的博客
相關推薦

2011-10-13 10:18:50

設計數據庫

2011-03-28 13:47:12

數據庫設計

2011-04-25 15:22:26

數據庫設計

2011-05-10 09:19:55

數據庫設計

2011-05-30 14:07:36

2011-04-11 14:51:25

數據庫設計

2018-03-07 15:24:41

PythonMySQL

2009-07-06 19:29:37

云計算私有云服務器虛擬化

2012-03-22 10:33:33

思杰XenDesktop

2022-08-29 15:19:09

CSS煙花動畫

2021-03-17 07:07:21

系統程序員SDI

2017-11-29 11:14:52

離線緩存URL協議緩存

2017-09-28 09:40:36

圖像分類準確率

2013-03-18 16:09:27

JavaEEOpenfire

2023-09-05 07:52:43

2017-08-24 08:31:41

2015-10-08 11:25:55

2020-02-02 19:53:57

數據庫數據庫優化SQL優化

2022-09-30 15:37:19

Web網站服務器

2017-07-15 21:10:58

CTOCEO技術
點贊
收藏

51CTO技術棧公眾號

国产精品扒开腿做爽爽爽a片唱戏| 欧美一级片一区| 亚洲视频第二页| 伊人春色在线观看| 91在线观看地址| 国产成人涩涩涩视频在线观看| 精品手机在线视频| 91精品国产自产精品男人的天堂 | 日本亚洲一区二区| 欧美成人精品不卡视频在线观看| 日韩 中文字幕| 57pao成人永久免费| 精品国产鲁一鲁一区二区张丽 | 99精品视频免费观看视频| 国产视频在线一区二区| 在线免费观看av网| 综合日韩av| 亚洲精品福利视频网站| 欧美黑人3p| 成人乱码一区二区三区| 老司机免费视频一区二区三区| 欧美国产乱视频| 狂野欧美性猛交| 日韩精品a在线观看91| 91精品国产综合久久精品图片| 黄色片久久久久| 色黄网站在线观看| 中日韩av电影| 精品在线不卡| 国产香蕉在线观看| 国产一区在线观看视频| 国产精品电影网站| 日韩欧美国产亚洲| 自拍偷拍欧美| 精品国偷自产在线| 精品人妻中文无码av在线| 美女一区2区| 欧美电影免费提供在线观看| 手机视频在线观看| 日韩免费va| 欧美日韩美女视频| 91黄色在线看| 亚洲欧美成人影院| 亚洲欧美日韩中文字幕一区二区三区| 欧洲一区二区在线 | 97精品国产露脸对白| 亚洲精品免费网站| 国产精品区在线观看| 日本视频在线一区| 国产精品男人爽免费视频1| 国产午夜精品久久久久| 亚洲少妇一区| 欧美在线视频观看| 在线观看国产亚洲| 国产精品入口| 欧美一区在线直播| 午夜婷婷在线观看| 国产精品综合| 日本在线精品视频| 中国老头性行为xxxx| 麻豆精品一区二区综合av| 国产日韩欧美在线| av片免费播放| 成人福利电影精品一区二区在线观看| 成人9ⅰ免费影视网站| 国精产品一品二品国精品69xx | 精品欧美乱码久久久久久| 丰满人妻一区二区三区53视频| 久久91视频| 69堂精品视频| 欧美图片自拍偷拍| 青青草久久爱| 国产亚洲精品一区二区| 免费黄色国产视频| 欧美影院一区| 97久久精品人搡人人玩| 日韩色图在线观看| 免费精品视频最新在线| 亚洲aaaaaa| 天天干天天爽天天操| 久久久91精品国产一区二区精品| 午夜精品视频在线观看一区二区| 婷婷在线视频| 亚洲成av人影院| 国产一级不卡毛片| 国产精品日本一区二区不卡视频| 欧美伊人精品成人久久综合97| 欧美大胆a视频| 可以直接看的黄色网址| 好吊日精品视频| 78m国产成人精品视频| jizz国产在线| 国产成人无遮挡在线视频| 国产精品视频一区二区三区经| 青青草在线免费观看| 国产精品久99| 国产97在线 | 亚洲| 日韩中文视频| 3751色影院一区二区三区| 亚洲av综合色区无码另类小说| 香蕉人人精品| 久久久国产精品免费| 国产欧美一区二区三区在线看蜜臂| 日本视频免费一区| 国产在线欧美日韩| 日本高清视频在线播放| 精品成人av一区| 一区二区三区四区毛片| 蜜臀av免费一区二区三区| 久久国产精品亚洲| 中文字幕乱伦视频| 99久久婷婷国产| 可以在线看黄的网站| 台湾佬成人网| 亚洲国产精品成人精品| 夫妻性生活毛片| 久久精品天堂| 国产精品一区视频| 黄色网址视频在线观看| 欧洲国内综合视频| 波多野结衣视频播放| 91精品成人| 国产精品久久久久999| 天天色棕合合合合合合合| 亚洲日本va午夜在线影院| 欧美伦理视频在线观看| 牲欧美videos精品| 欧美激情在线有限公司| 国产情侣一区二区| 中文字幕av一区二区三区高| 男人日女人bb视频| 风间由美一区二区av101| 久久亚洲国产成人| 91av久久久| 欧美经典一区二区| 热久久精品国产| 亚洲精品小区久久久久久| 国内揄拍国内精品| 国产99久久九九精品无码免费| 国产精品看片你懂得| www黄色在线| 伊人精品一区| 热门国产精品亚洲第一区在线| 色一情一乱一区二区三区| 亚洲自拍另类综合| 国产成人av片| 亚洲国产精品第一区二区三区| aa成人免费视频| 男人添女人下部高潮视频在线观看 | 欧美性大战久久| 欧美多人猛交狂配| 天堂av在线一区| 欧美日韩在线观看一区| 中文日产幕无线码一区二区| 日韩精品免费在线视频| 天天操中文字幕| 久久品道一品道久久精品| 免费av网址在线| 精品国产91| 国产精品久久久久免费a∨大胸 | 欧洲在线一区| 日本一区二区在线播放| eeuss影院www在线观看| 欧美久久久影院| 永久免费看黄网站| 成人小视频免费在线观看| 国产精品久久久久9999爆乳| 国产精品成人自拍| 日韩av免费在线| 亚洲欧美视频一区二区| 欧美一二三四区在线| 欧美成人三级视频| 99精品1区2区| 手机看片福利日韩| 国产二区精品| 国产不卡一区二区在线观看| 是的av在线| 伊人久久久久久久久久| 一区二区国产欧美| 一区二区三区精品在线| avtt香蕉久久| 蜜桃视频一区二区| 99中文字幕在线观看| 国产无遮挡裸体免费久久| 欧美在线播放视频| 日本在线www| 亚洲成成品网站| 波多野结衣黄色| 一区二区免费在线| 性少妇bbw张开| 国产一区在线看| 六月丁香婷婷在线| 91超碰国产精品| 欧美高清性xxxxhd| 看亚洲a级一级毛片| 91精品国产色综合久久不卡98口 | 色综合久久久888| 精品无人乱码| 精品久久久久99| 日本一区二区三区久久| 亚洲成av人综合在线观看| 黑人と日本人の交わりビデオ| 丰满白嫩尤物一区二区| 一区二区三区国产免费| 禁久久精品乱码| 亚洲伊人婷婷| 青青草原在线亚洲| www.久久久| 激情久久一区二区| 5278欧美一区二区三区| fc2ppv国产精品久久| 亚洲欧洲日产国码av系列天堂| 精品国产无码一区二区| 在线亚洲高清视频| 国产精品国产三级国产专区52| 一区二区三区欧美在线观看| 国模无码视频一区| 日本一极黄色片| 成人综合一区| 国产伦精品一区二区三区高清| 国产一区二区色噜噜| 久久久综合av| 国产理论在线观看| 伊人久久男人天堂| 性xxxxbbbb| 亚洲电影av在线| 精品二区在线观看| 欧美日韩在线播放三区四区| 国产成人亚洲精品自产在线| 亚洲男人的天堂在线观看| 日本不卡一区视频| 久久这里只精品最新地址| 国产综合内射日韩久| 国产一区二区三区久久悠悠色av| 国产97色在线 | 日韩| 亚洲一区不卡| 少妇人妻在线视频| 激情欧美亚洲| 国产精品久久久久久久乖乖| 午夜精品免费| 久久久久久久久网| 仙踪林久久久久久久999| 日韩亚洲不卡在线| 国产在线观看91一区二区三区 | 成人免费观看cn| 欧美精品一线| 国产一区二区片| 午夜欧美理论片| 国产精品无码免费专区午夜| 欧美日韩国产精品一区二区亚洲| 欧美黄网在线观看| 欧美日韩国产一区精品一区| 水蜜桃在线免费观看| 欧美激情aⅴ一区二区三区| 懂色av粉嫩av蜜臀av| 一区二区免费不卡在线| 国产精品88久久久久久妇女| 中文在线日韩| www.av91| 国产精品亚洲欧美| 日韩手机在线观看视频| 日韩高清欧美激情| 尤物国产在线观看| 久久99国产精品久久99果冻传媒| 黄色小视频免费网站| 国产一区二区在线观看免费| 中文字幕亚洲日本| 成人av免费在线播放| xxxx黄色片| 久久精品一级爱片| 国产日产在线观看| 亚洲欧美另类图片小说| www.youjizz.com亚洲| 欧美日韩在线一区| 伊人久久国产精品| 日韩欧美国产成人一区二区| 日本人妻丰满熟妇久久久久久| 亚洲乱码av中文一区二区| 第三区美女视频在线| 久久视频在线播放| av免费不卡国产观看| 日韩免费在线免费观看| 日韩午夜电影免费看| 成人免费在线看片| 欧美热在线视频精品999| 一区二区不卡在线| 黄色免费成人| 激情综合网婷婷| 国产一区二区伦理| 人妻在线日韩免费视频| 中文字幕一区在线观看视频| 国产在线视频你懂的| 欧美性极品少妇精品网站| 国产又黄又粗又长| 亚洲精品久久久久久久久久久久久| 国产大学生校花援交在线播放| 欧美成人一区二区三区电影| 在线观看特色大片免费视频| 成人深夜直播免费观看| 露出调教综合另类| 手机成人av在线| 国产欧美激情| 无码人妻一区二区三区在线视频| 99久久伊人久久99| 日韩欧美123区| 色婷婷亚洲综合| 内射后入在线观看一区| 在线性视频日韩欧美| 2001个疯子在线观看| 国产日韩欧美日韩| 中文精品一区二区| 免费的av在线| 奇米色一区二区| 99re久久精品国产| 夜夜嗨av一区二区三区四季av| 欧美性猛交xxxx乱大交hd | 日本一卡二卡四卡精品| 久久99久久99精品中文字幕 | 在线观看国产91| 日韩在线视频第一页| 久久久精品国产网站| 亚洲1234区| 久久精品五月婷婷| 国内精品久久久久久久影视麻豆| 在线观看国产一级片| 国产亚洲一本大道中文在线| 男人的天堂一区二区| 日韩三级.com| sm国产在线调教视频| 成人激情春色网| 爽成人777777婷婷| 男女男精品视频站| 久久久久国产精品麻豆| 日韩av片在线播放| 精品免费国产一区二区三区四区| 成人看av片| 91久久久久久国产精品| 久久激情电影| 午夜两性免费视频| 国产色91在线| 啪啪小视频网站| 国产性猛交xxxx免费看久久| 日韩三区免费| 神马影院我不卡午夜| 久久国产免费| aa一级黄色片| 色偷偷一区二区三区| 国产中文字幕在线看| 国产精品流白浆视频| 欧美色女视频| 男女无套免费视频网站动漫| 久久综合色播五月| 久久久久久久久黄色| 夜夜嗨av色综合久久久综合网| 色天使综合视频| 四虎永久国产精品| 久久99精品久久久久久动态图| 亚洲视频重口味| 欧美一区二区三区视频在线 | 亚洲一区欧美一区| 欧美自拍偷拍第一页| 5566日本婷婷色中文字幕97| 色婷婷狠狠五月综合天色拍 | 国产一二三四在线| 欧美va亚洲va香蕉在线| sm捆绑调教国产免费网站在线观看| 国产免费高清一区| 国产精品久久国产愉拍| 欧美老熟妇乱大交xxxxx| 色94色欧美sute亚洲线路一ni| 成a人v在线播放| 亚洲bt天天射| 国产精品综合| 1024在线看片| 日韩网站在线看片你懂的| 麻豆免费在线| 亚洲国产一区二区在线 | 日韩无码精品一区二区| 色综合久久中文字幕| 午夜在线播放| 国产欧美一区二区三区不卡高清| 欧美一区=区| 国产人与禽zoz0性伦| 欧美mv和日韩mv国产网站| 三级中文字幕在线观看| 亚洲一区二区在| 大白屁股一区二区视频| 日批视频免费在线观看| 久久精品国产久精国产一老狼| 成人三级毛片| 日韩一级理论片| 亚洲综合色视频| 国产片在线观看| 国产久一道中文一区| 日韩不卡在线观看日韩不卡视频| 免费中文字幕在线| 亚洲精品综合久久中文字幕| 2020国产精品小视频| 国产l精品国产亚洲区久久| 亚洲精品午夜久久久|