zoukankan      html  css  js  c++  java
  • 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:暂停)

  • 相关阅读:
    .Net业务搭配实用技术栈(转)
    基于WebGL/Threejs技术的BIM模型轻量化之图元合并
    设计模式之六大原则
    osgearth介绍
    OSG中的示例程序简介
    共有49款Windows GUI开发框架开源软件 【转】
    地球坐标系与投影方式的理解(关于北京54,西安80,WGS84;高斯,兰勃特,墨卡托投影)(转)
    c#串口编程(转)
    c++消息队列的实现
    SQL总结 连表查询
  • 原文地址:https://www.cnblogs.com/shenxiaoquan/p/6123920.html
Copyright © 2011-2022 走看看