供货商需要将自己供应的药品信息添加到供货商药品目录中,药品目录中存在药品说明供货商要供应这些药品,医院按照供货商供应药品去采购。
监督单位可以对供货商供应的药品进行控制,允许供货商供货,或不允许供货商供货。
操作流程:
第一步:使用供货商登陆系统,点击“供货商药品目录维护”
显示了供货商药品目录 信息。
供货商药品目录控制:
第一步:卫生局进入供货目录控制页面
列出所有供货商供应的药品
数据库表结构、及表与表的关系。
1.2.1 供货商药品目录维护(增、删、改、查)
供货商需要将自己供应的药品信息添加到供货商药品目录中,药品目录中存在药品说明供货商要供应这些药品,医院按照供货商供应药品去采购。
功能分析:
供货商添加药品目录
说明供货商要供应这些药品
向供货商药品目录表插入一条数据
供货商修改药品目录
供货商删除药品目录
供货商不再供货从供货商药品目录表删除记录,根据供货商id和药品信息id删除记录
供货商药品目录表:
Id:主键
供货商id:外键,引用供货商单位表的主键
药品信息id: 外键,药品信息表的主键
唯一约束:(供货商id+药品信息id)
1.2.2 供货商药品目录控制
监督单位可以对供货商供应的药品进行控制,允许供货商供货,或不允许供货商供货。
原则:对于不同的业务分析时,优先考虑单独创建表。
功能分析;
将供货商供应药品信息添加到供货商药品目录控制表
表示:监督单位要对供货商供应的药品进行控制
根据供货商和药品修改供货状态(允许供货商供货,或不允许供货商供货)
表示:监督单位执行控制
将供货商供应药品信息从供货商药品目录控制表删除:
表示:监督单位不再对供货商供应的药品进行控制
供货商药品目录控制表:
Id:主键
供货商id:外键,引用供货商单位表的主键
药品信息id: 外键,药品信息表的主键
供货状态:(1、正常、2、暂停供货)
1.2.3 数据模型优化
1.2.3.1 设想:将供货状态添加到供货商药品目录表:
结构如下:
Id:主键
供货商id:外键,引用供货商单位表的主键
药品信息id: 外键,药品信息表的主键
唯一约束:(供货商id+药品信息id)
供货状态:(1、正常、2、暂停供货)
是否可行?需要再将上边业务功能进行论证。
供货商药品目录维护功能分析:
供货商添加药品目录
说明供货商要供应这些药品
向供货商药品目录表插入一条数据
供货商修改药品目录
供货商删除药品目录
供货商不再供货从供货商药品目录表删除记录,根据供货商id和药品信息id删除记录
问题:业务冲突,供货商操作影响了监督单位的操作
供货商药品目录控制功能分析;
将供货商供应药品信息添加到供货商药品目录表
表示:监督单位要对供货商供应的药品进行控制
问题:业务冲突,供货商不想供应此药品,结果记录也存在了
总结:
将供货商药品目录信息和供货商药品目录控制信息存在业务冲突。
供货商药品目录维护和供货商药品目录控制是两个不同的业务。
1.2.3.2 进行如下优化:
监督单位对供货商进行控制,不受供货商药品目录的影响,监督单位可以在任何时候对供货商的药品进行控制。
这种控制业务在功能分析流程上没有问题,但是没有多大意义,因为供货商不供应此药品,医院也就不能采购。
在供货商向自己药品目录添加药品的同时,向供货商药品目录控制表添加一条记录。
供货商药品目录维护功能分析:
供货商添加药品目录
说明供货商要供应这些药品
向供货商药品目录表插入一条数据
同时,供货商药品目录控制表添加一条记录
供货商删除药品目录
供货商不再供货从供货商药品目录表删除记录,根据供货商id和药品信息id删除记录
供货商药品目录控制功能分析;
将供货商供应药品信息添加到供货商药品目录控制表
表示:监督单位要对供货商供应的药品进行控制
通过优化,此添加功能可以不要
根据供货商和药品修改供货状态(允许供货商供货,或不允许供货商供货)
表示:监督单位执行控制
将供货商供应药品信息从供货商药品目录控制表删除:
表示:监督单位不再对供货商供应的药品进行控制
此功能去掉,不管是否对供货商药品进行控制,都在数据库保留。
数据量是否很大?数据量不大,数据量=药品目录的总数*供货商数量
优化图解:
供货商药品目录表 向供货商药品目录表插入记录的同时向控制表也插入一条记录
|
供货商药品目录控制表 控制状态(插入时采用默认值:根据用户需求确定为“通过”) |
1.2.3.3 表结构
供货商药品目录控制表:GYSYPML_control
1.2.3.4 表之间的关系
两个表之间没有数据级别的关系,存在业务关系。
供货商药品目录表 Id: Ypxxid:药品信息id Usergysid:供货商id |
两个表之间没有数据库级别的关系 |
供货商药品目录控制表 Id: Ypxxid:药品信息id Usergysid:供货商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
1.2.4 数据库操作小结
两张表:
供货商药品目录表:gysypml:
记录了供货商供应的药品信息,如果表中存在药品是供货商要供应的药品,如果表中不存在药品,供货商不供应的药品
医院采购药品时从此表找供货商供应药品找到说明供货商要供应此药品,还需要满足监督单位允许供货商供货。(如何查询是否允许供货?通过供货商id和药品id查询gysypml_control,查出供货状态)
医院能采购的药品:在gysypml存在且gysypml_control表中状态为允许供货。
供货商药品目录控制表:gysypml_control
记录了监督单位对供货商供货的控制状态。
两张表操作应该互不影响(因为两张表属于不同的业务);
两张表进行优化:在向gysypml插入记录的同时,向gysypml_control表插入一条记录。
供货商药品目录维护:
对gysypml操作:
添加记录,说明供货商要供应药品。
向gysypml_control表插入一条记录
删除记录,说明供货商不再供应此药品。
从gysypml_control表删除一条记录??不需要删除
供货商药品目录控制:
对gysypml_control操作:
根据供货商id和药品id更新供货状态(1:正常、2:暂停)