資訊唯一性原則
本人偶然間想到,Google了半天也沒有找到相似的東西。在此拋磚引玉,望各位不吝賜教。
資訊唯一性原則是解耦合與促進一致性的資料結構設計方法。一個資訊只出現一次,其他地方只是引用。
比如客戶買書《xxx》這一業務,需要進行兩次相關操作,即書店將《xxx》這種書的數量減1,客戶賬戶中《xxx》這種書的數量加1。需要注意,這裡是《xxx》,是指一個種類,後面建模時提到的《xxx》是具體的賣出的那一本。
這個過程缺一不可,如果只讓書店減1,忘記了客戶加1,則客戶買不到書;反之,則是賣出的數量會超過書店的存貨。
在資料庫領域,採用ACID方式來解決,就是事務。將書店減1和客戶加1看作一個整體,其中一個操作失敗,就算這兩個操作整體失敗。這樣可以保證一致性。
你會發現,這一業務中,資料需要從兩處地方配合起來說明買賣的數量。這就產生了一個耦合。但通常我們認為這種耦合是天經地義的。
不過,耦合就意味著大量驗證,保持資訊唯一性原則或許可以減輕驗證的負擔。
經過分析,我們發現,這裡的加1減1實際上是買賣的那本《xxx》書的數量屬性。上面在處理業務時將賣出的那本《xxx》書忽略掉了,只將他其中的一個屬性儲存在了變數中。
在整個買賣過程中,《xxx》書的交換,其本質是賣出那本《xxx》書的所有人發生了變化。從書店變為了客戶。
因此,在資訊唯一性原則下,首先要建立賣出《xxx》書的實體,然後定義其數量和所有人。買賣的過程,就是所有人屬性發生變化了的過程。
這樣,書店的《xxx》這種書的總數,和客戶的《xxx》這種書的總數,就從直接影響業務的資料,變成了一個隨時可以重算的統計結果。他們共同受所有《xxx》書實體的所有人屬性和數量屬性的影響。
這樣,原來需要ACID事務支援的買賣業務,就變成了一個普通的業務。
同樣的道理,客戶付錢也是一樣。付款可以將人民幣建立一個實體,其數量就是《xxx》本書的賣出價格(可能會涉及打折等因素,與標價不一致,是每一本賣出《xxx》書的特有屬性)。
書的交換和錢的交換是同時發生的,但在資訊唯一性原則下並不需要ACID支援。如果書的所有人發生了變化,而錢忘記了。則在統計的過程中,應付賬款與已付賬款就有一個差額,賣家很容易判斷和發現。此時客戶可以再次付款,直到付款成功。反之,錢付了,而書忘了變換所有人,則也有差額,客戶的付款就變為了預付款。客戶可以用這個款項再去買書,直到買到為止。
資訊唯一性原則的本質在於,實事求是的將客觀世界發生的事情告訴計算機,記錄下每一個與業務相關的現象。這些現象作為計算的基礎。如果計算機忘了處理一些現象,那麼說明其認識的世界是殘缺的,但殘缺的世界也是可解釋和理解的。人類能夠修復其認識上的缺陷,從而保證其正確性。
資訊唯一性原則是解耦合與促進一致性的資料結構設計方法。一個資訊只出現一次,其他地方只是引用。
比如客戶買書《xxx》這一業務,需要進行兩次相關操作,即書店將《xxx》這種書的數量減1,客戶賬戶中《xxx》這種書的數量加1。需要注意,這裡是《xxx》,是指一個種類,後面建模時提到的《xxx》是具體的賣出的那一本。
這個過程缺一不可,如果只讓書店減1,忘記了客戶加1,則客戶買不到書;反之,則是賣出的數量會超過書店的存貨。
在資料庫領域,採用ACID方式來解決,就是事務。將書店減1和客戶加1看作一個整體,其中一個操作失敗,就算這兩個操作整體失敗。這樣可以保證一致性。
你會發現,這一業務中,資料需要從兩處地方配合起來說明買賣的數量。這就產生了一個耦合。但通常我們認為這種耦合是天經地義的。
不過,耦合就意味著大量驗證,保持資訊唯一性原則或許可以減輕驗證的負擔。
經過分析,我們發現,這裡的加1減1實際上是買賣的那本《xxx》書的數量屬性。上面在處理業務時將賣出的那本《xxx》書忽略掉了,只將他其中的一個屬性儲存在了變數中。
在整個買賣過程中,《xxx》書的交換,其本質是賣出那本《xxx》書的所有人發生了變化。從書店變為了客戶。
因此,在資訊唯一性原則下,首先要建立賣出《xxx》書的實體,然後定義其數量和所有人。買賣的過程,就是所有人屬性發生變化了的過程。
這樣,書店的《xxx》這種書的總數,和客戶的《xxx》這種書的總數,就從直接影響業務的資料,變成了一個隨時可以重算的統計結果。他們共同受所有《xxx》書實體的所有人屬性和數量屬性的影響。
這樣,原來需要ACID事務支援的買賣業務,就變成了一個普通的業務。
同樣的道理,客戶付錢也是一樣。付款可以將人民幣建立一個實體,其數量就是《xxx》本書的賣出價格(可能會涉及打折等因素,與標價不一致,是每一本賣出《xxx》書的特有屬性)。
書的交換和錢的交換是同時發生的,但在資訊唯一性原則下並不需要ACID支援。如果書的所有人發生了變化,而錢忘記了。則在統計的過程中,應付賬款與已付賬款就有一個差額,賣家很容易判斷和發現。此時客戶可以再次付款,直到付款成功。反之,錢付了,而書忘了變換所有人,則也有差額,客戶的付款就變為了預付款。客戶可以用這個款項再去買書,直到買到為止。
資訊唯一性原則的本質在於,實事求是的將客觀世界發生的事情告訴計算機,記錄下每一個與業務相關的現象。這些現象作為計算的基礎。如果計算機忘了處理一些現象,那麼說明其認識的世界是殘缺的,但殘缺的世界也是可解釋和理解的。人類能夠修復其認識上的缺陷,從而保證其正確性。
相關文章
- 資訊化應用制度原則
- 資訊化專案管理的原則專案管理
- 應用敏感資訊的 6 個配置原則
- 寶貝詳情頁的優化原則——資訊圖優化
- 企業資訊化管理戰略及原則(轉)
- OCP原則——開閉原則
- 製作資訊圖時要遵循的10條原則——資料資訊圖
- 企業O2O營銷原則——資訊圖
- 設計原則:開閉原則(OCP)
- 設計原則:介面隔離原則(ISP)
- SOLDI原則之DIP:依賴倒置原則
- 設計原則之【介面隔離原則】
- 設計原則-依賴反轉原則
- oop原則OOP
- 設計原則之【依賴反轉原則】
- 設計原則之【單一職責原則】
- 設計原則之【開放封閉原則】
- 設計原則之【裡式替換原則】
- 軟體設計原則—介面隔離原則
- 軟體設計原則—合成複用原則
- 乾貨|企業資訊化管理的五大原則
- (原)BOM斷階原則
- 開閉原則——物件導向程式設計原則物件程式設計
- 物件導向設計原則之開閉原則物件
- 軟體設計原則—依賴倒轉原則
- 開閉原則
- 《原則》總結
- SOLID原則Solid
- Unix原則-KISS
- 開發原則。
- SOLID 原則Solid
- 處世原則
- 排版六原則
- 鉛筆的原則
- 80/20原則
- 設計原則
- 物件導向設計的六大原則(SOLID原則)-——里氏替換原則物件Solid
- 物件導向設計原則之合成複用原則物件