首页 > 代码库 > 029医疗项目-模块三:药品供应商目录模块——数据模型的分析(建表)

029医疗项目-模块三:药品供应商目录模块——数据模型的分析(建表)

这篇文章主要分析数据库表的结构,以及表和表的关系。

如下:

 

 

供货商方面的分析:

供货商需要将自己供应的药品信息添加到供货商药品目录中,药品目录中存在药品说明供货商要供应这些药品,医院按照供货商供应药品去采购。

 

功能分析:

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医疗项目-模块三:药品供应商目录模块——数据模型的分析(建表)