標籤:png ext ble 等於 資料模型 主鍵 設計 lin str
這篇文章主要分析資料庫表的結構,以及表和表的關係。
如下:
供貨商方面的分析:
供貨商需要將自己供應的藥品資訊添加到供貨商藥品目錄中,藥品目錄中存在藥品說明供貨商要供應這些藥品,醫院按照供貨商供應藥品去採購。
功能分析:
1:供貨商添加藥品目錄
說明供貨商要供應這些藥品
向供貨商藥品目錄表插入一條資料
2:供貨商刪除藥品目錄
供貨商不再供貨從供貨商藥品目錄表刪除記錄,根據供貨商id和藥品資訊id刪除記錄
供貨商藥品目錄表:
Id:主鍵
供貨商id:外鍵,引用供貨商單位表的主鍵
藥品資訊id: 外鍵,藥品資訊表的主鍵
唯一約束:(供貨商id+藥品資訊id)
藥品監督方面的分析:
監督單位可以對供貨商供應的藥品進行控制,允許供貨商供貨,或不允許供貨商供貨。
原則:對於不同的業務分析時,優先考慮單獨建立表。
功能分析;
將供貨商供應藥品資訊添加到供貨商藥品目錄控製表
表示:監督單位要對供貨商供應的藥品進行控制
根據供貨商和藥品修改供貨狀態(允許供貨商供貨,或不允許供貨商供貨)
表示:監督單位執行控制
將供貨商供應藥品資訊從供貨商藥品目錄控製表刪除:
表示:監督單位不再對供貨商供應的藥品進行控制
供貨商藥品目錄控製表:
Id:主鍵
供貨商id:外鍵,引用供貨商單位表的主鍵
藥品資訊id: 外鍵,藥品資訊表的主鍵
供貨狀態:(1、正常、2、暫停供貨)
以上就是對兩個角色的分析:
我們看一下分析好之後怎麼去最佳化:
監督單位對供貨商進行控制,不受供貨商藥品目錄的影響,監督單位可以在任何時候對供貨商的藥品進行控制。
這種控制業務在功能分析流程上沒有問題,但是沒有多大意義,因為供貨商不供應此藥品,醫院也就不能採購。
在供貨商向自己藥品目錄添加藥品的同時,向供貨商藥品目錄控製表添加一條記錄。
供貨商藥品目錄維護功能分析:
供貨商添加藥品目錄
說明供貨商要供應這些藥品
向供貨商藥品目錄表插入一條資料
同時,供貨商藥品目錄控製表添加一條記錄
供貨商刪除藥品目錄
供貨商不再供貨從供貨商藥品目錄表刪除記錄,根據供貨商id和藥品資訊id刪除記錄
供貨商藥品目錄控制功能分析;
將供貨商供應藥品資訊添加到供貨商藥品目錄控製表
表示:監督單位要對供貨商供應的藥品進行控制
通過最佳化,此添加功能可以不要
根據供貨商和藥品修改供貨狀態(允許供貨商供貨,或不允許供貨商供貨)
表示:監督單位執行控制
將供貨商供應藥品資訊從供貨商藥品目錄控製表刪除:
表示:監督單位不再對供貨商供應的藥品進行控制
此功能去掉,不管是否對供貨商藥品進行控制,都在資料庫保留。
資料量是否很大?資料量不大,資料量=藥品目錄的總數*供貨商數量
最佳化圖解:
兩張表之間的關係:
接下來設計表:
存在業務關係: 供貨商要查詢目錄中藥品的供貨狀態?查詢方法:通過關聯供貨商藥品目錄控製表查詢,通過內連結查詢供貨商藥品目錄控制狀態。 --gysypml表中的資料在gysypml_control表中都存在--通過唯一約束關聯查詢(只能查詢到一條)--查詢記錄的條數等於gysypml表的查詢記錄條數--因為gysypml表主查詢表 select * from gysypml, gysypml_control where gysypml.ypxxid = gysypml_control.ypxxid and gysypml.usergysid = gysypml_control.usergysid --通過子查詢 select gysypml.*, (select control from gysypml_control where gysypml.ypxxid = gysypml_control.ypxxid and gysypml.usergysid = gysypml_control.usergysid) control from gysypml
對這個資料庫做個小結:
兩張表:
供貨商藥品目錄表:gysypml:
記錄了供貨商供應的藥品資訊,如果表中存在藥品是供貨商要供應的藥品,如果表中不存在藥品,供貨商不供應的藥品
醫院採購藥品時從此表找供貨商供應藥品找到說明供貨商要供應此藥品,還需要滿足監督單位允許供貨商供貨。(如何查詢是否允許供貨?通過供貨商id和藥品id查詢gysypml_control,查出供貨狀態)
醫院能採購的藥品:在gysypml存在且gysypml_control表中狀態為允許供貨。
供貨商藥品目錄控製表:gysypml_control
記錄了監督單位對供貨商供貨的控制狀態。
兩張表操作應該互不影響(因為兩張表屬於不同的業務);
兩張表進行最佳化:在向gysypml插入記錄的同時,向gysypml_control表插入一條記錄。
供貨商藥品目錄維護:
對gysypml操作:
添加記錄,說明供貨商要供應藥品。
向gysypml_control表插入一條記錄
刪除記錄,說明供貨商不再供應此藥品。
從gysypml_control表刪除一條記錄??不需要刪除
供貨商藥品目錄控制:
對gysypml_control操作:
根據供貨商id和藥品id更新供貨狀態(1:正常、2:暫停)
029醫學項目-模組三:藥品供應商目錄模組——資料模型的分析(建表)