天天看點

AgileEAS.NET平台開發執行個體-藥店系統-資料庫設計開篇 大綱設計每個功能子產品的資料庫設計總結藥店系統-資料庫設計文檔更多交流

         上篇,我們分析了,功能需求和非功能性的需求,本篇我們就來看下,如何設計資料庫,當然資料庫的設計也是有一些技巧性而已,不過大家經常做資料庫設計的朋友都 知道,如果我們的資料庫設計完全符合資料庫要求的第三範式的話,那麼我們可能在通過ORM架構來使用這個資料庫設計的時候,會有不友善的地方,因為ORM在多表關聯 上的處理或者說是支援的并不好,是以我們常常在資料庫設計的時候,會允許在表中存在備援字段,這樣我們能夠在查詢的過程中可以很友善的讀取資料,而不用關聯查詢, 當然也有不錯的方案去處理這方面的需求,比如通過視圖等。         下面我們就來看看,如果設計藥店系統的資料庫,後面我們會附上資料庫設計文檔的下載下傳。
         1、設計功能子產品的資料庫設計。          2、分析設計的合理性。
         我們本節将會根據上篇的需求文檔來進行資料庫的設計,來分析每個子產品的資料庫設計,我們采取的方式還是從整體上去考慮,我們在每個子產品都要使用的公共的基礎設 計等是否需要單獨維護和管理等。          下面我們來分析下我們需要設計出的單獨的表:           下面我們來分析下每個子產品的資料庫表的設計:            藥品字典:            當然上面的有些字段并沒有完全的展現出來,具體的一些補充設計,大家可以基于這個基礎之上進行完善和改進。            供應商:             供應商資訊主要是為了藥品的采購和退藥提供幫助,有了供應商資訊後,後期可以直接進行撥款操作,當然這是根據這種按消耗付給供應商錢成為可能,HIS醫院系統 一般都會有這樣的機制。               藥品類型的維護,友善後期進行擴充和編輯等,一般不推薦直接删除藥品類型,會造成資料的丢失和失效性,建議可設計啟用禁用字段。               藥品入庫一方面是需要引用藥品字典表中的藥品資訊,還要儲存供應商資訊,同時還要引用藥品類型。                這裡的藥品出庫,就是藥店系統中的顧客發藥,裡面需要儲存顧客的姓名,發藥日期,數量,等等,這樣可以為後期的顧客退藥提供幫助。                  庫存管理,是所有子產品的藥品資料流的流入或流出。                   供應商退藥,主要是藥店退藥到供應商,記錄藥店退供應商的藥品記錄明細。                    顧客退藥。必須包含退藥的顧客姓名和數量,日期等資訊,友善後期的統計查詢等,并詳細記錄明細資訊。                     詳細記錄,調價原因,調價的藥品數量,調價日期,新舊價格等資訊。                   記錄報損的數量,原因,日期等。                盤點表記錄盤點的資訊,賬目庫存與實際庫存資訊,記錄盤點的日期,盤點記錄的狀态,是否進行過調整操作等。                藥店系統目前涉及到的主要子產品都已經涵蓋,大家可以從上面的設計中看到很多的備援資訊,比如關于藥品資訊的内容,有很多的内容都備援。主要是為了友善 基礎資訊的讀取,防止過多的關聯查詢,當然通過視圖也可以解決,但是還是會在編碼中使用起來會有一定的不友善,當然,備援字段會造成資料庫實體存儲太大,當然如果 說我們的資料的數量級很大的話,可能我們需要在設計的時候,考慮這個方面的要求,當我們的資料量不是太大的時候,可能我們更講究效率優先。
           通過上面的資料庫設計文檔,我們發現了以下的幾點,我們在每個表裡面都儲存了藥品的如下幾個字段的資訊:            我們是否應該直接儲存藥品字典中的主鍵資訊,然後其他表裡面直接引用藥品字典中的主鍵作為外鍵即可,那麼可能有這樣的一個好處,如果我們後期維護一個藥品字 典後,資訊變更後,所有的藥品資訊,都會跟着同步,但是也有一個不好處,也許我們有時候需要保留原有的藥品字典資訊時,用于跟蹤曆史記錄時,就會出問題。而且。維 護時。我們必須要關聯藥品字典表,當然建立視圖可以解決。             并且我們在設計資料庫時,對于像基礎資料這些資訊時,一定要設計為不要輕易删除的字段,僞删除比較好,例如我們添加如下字段。         當然不删除會造成備援資料太多,但是删除後會造成部分資料的資訊錯誤,或者說無效的引用,那麼我們如何來做,上面我們在每個表中都儲存相關的藥品資訊,從側面 也能避免删除基礎資料時造成的無法找到引用的問題等。          資料庫設計的過程中還有很多的其他的技巧,把二個都縱向變化的因素,我們會單獨通過一個關聯表來維護這二個都變化的因素之間的關聯關系。具體的應用還有很多, 當然我的水準也是有限,不一定是很有道理,歡迎大家拍磚,如果部分内容有錯誤或者不正确,還請大家指正。
         本文主要給出了藥店系統的資料庫設計,當然可能我的資料庫設計不符合正常的實際使用,不足之處還請大家多多指點,如果你有更好的設計的思路,還請指出,我會不 斷的改進。
<a href="http://www.agilelab.cn/downloads/fx/AgileEAS.NET%E5%B9%B3%E5%8F%B0%E5%BC%80%E5%8F%91%E5%AE%9E%E4%BE%8B-%E8%8D%AF%E5%BA%97%E7%B3%BB%E7%BB%9F-%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BE%E8%AE%A1%E6%96%87%E6%A1%A3.pdf"></a>
如果您在使用AgileEAS.NET開發平台中有什麼問題,請使用如下幾種聯系方式或者溝通方式。 1、郵箱方式: 2、QQ交流群: AgileEAS.NET平台交流群:120661978(超級群)[建立]  AgileEAS.NET平台交流群:125643764(進階群)[建立]  AgileEAS.NET平台交流群:147168308(進階群)[建立]

本文轉自 hot的fans  51CTO部落格,原文連結:http://blog.51cto.com/2435232/543645