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:暂停)

时间: 2024-12-31 05:28:03

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

029医疗项目-模块三:药品供应商目录模块——Dao层:基本的查询语句的编写

我们安装显示的要求: 我们能看到显示的目录里面有:供货企业的名字(这个数据来自于供货商的表[usergys]),流水号,通用名,剂型(这些都来自药品信息表),供货的状态(这个呢在gysypml_control中其实就是一个数字1或者0,但是我们要显示的是正常或者暂停 啊,这样的话这个信息就要查找数据字典表dictinfo才能达到这个功能的 ).... 所以我们在查上面要显示的内容的时候:要关联的表有 gysypml, usergys, gysypml_control, ypxx,dictinfo

034医疗项目-模块三:药品供应商目录模块——供货商药品目录(批量)添加药品的功能---------Service

这篇文章我们重点介绍Service层.因为Dao层就是用Gysypml逆向生成的Mapper就可以了.所以这里重点讲解Service层. 业务逻辑如下: 1:我们从前端页面传入有两个值:1:usergysid(供应商的id),2:YPPxxID(药品的目录id) 我们看一下我们要插入数据的表: 我们要做的就是把这两个字段插入. 2:我们看这样表的设计: 这里有这么一个约束,那就是YPXXID和USERGYSID两个字段成为一个主键.

028医疗项目-模块三:药品供应商目录模块——需求分析

我们先讲一下这个模块的需求,要实现什么样的功能. 1:供应商需要将自己供应的药品信息添加到供应商的药品目录中,药品目录中存在药品:那就说明供应商要供应这些药品,医院可以按照供货商的供应的商品去采购. 2:监督单位呢可以对供货商的药品进行控制.比如说停止供货商的继续供应等. 操作流程: 供货商的角度: 第一步:使用供货商登录系统.然后点击"供货商药品目录维护" 显示了供货商药品目录信息: 第二步: 向供货商药品目录添加药品,添加的药品表示供货商要供应的药品. 供货商查询药品目录 ,从里边

032医疗项目-模块三:药品供应商目录模块——Service层和Action层和调试

我们上一篇文章讲了Dao层代码: 这一篇我们讲解Service层和Action层: Service层: 分为接口和实现类,我们主要看实现类:GysemplServiceImpl package yycg.business.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import yycg.business.dao.mapper.Gysypml

031医疗项目-模块三:药品供应商目录模块——sql补充知识

这个补充知识有一个点很有必要,视屏上的老师提出一点: 内链接关联查询: 如果表A和表B有一个外键关联 ,可以通过外键进行内链接查询 select dictinfo.*, dicttype.typename from dictinfo, dicttype where dictinfo.typecode = dicttype.typecode --不通过外键,通过groupid查询用户类型的代码结果集,只能查询出一条记录,可以使用内链接 select sysuser.*, dictinfo.info

044医疗项目-模块四:采购单模块—采购单保存(Dao,Service,Action三层)

我们上上一篇文章(042医疗项目-模块四:采购单模块-采购单明细添加查询,并且把数据添加到数据库中)做的工作是把数据插入到了数据库,我们这篇文章做的是042医疗项目-模块四:采购单模块-采购单明细添加查询,并且把数据添加到数据库中这里没有写采购量,我们这篇文章做的就是把采购量写进入,也就是Updata之前的那个记录.这样采购单里面的记录就完整了. 如下: Dao层:用的是逆向工程生成的:yycgdmxMapper.updateByPrimaryKeySelective(yycgdmx_updat

1.模块2.循环导入问题及解决思路3.区分py文件的两种类型4.模块的查找顺序5.模块的绝对导入与相对导入6.项目开发的目录规范

一.模块 什么是模块? 模块就是一系列功能的结合体 模块的三种来源: 1.内置的(python解释器自带的) 2.第三方的(别人写的) 3.自定义的(你自己写的) 模块的四种表现形式: 1.使用python编写的py文件(也就是意味着py文件也是可以称之为模块 2.已被编译为共享库或DLL的或C++扩展(了解) 3.把一系列模块组织到一起的文件夹(文件夹下有一个__init__.py文件,该文件夹称之为包) 4.使用C编写并连接到Python解释器的内置模块 模块选择 1.用别人写好的模块(内置

ItelliJ基于Gradle创建及发布Web项目(三)

关键字:web 多模块 用惯了eclipse傻瓜式的配置,开始web部署真的不习惯. 一.现象: 项目发布了,死活找不到依赖模块中的类. 二.排查 确定F4->Artifacts->Output Layout中添加了模块out 然并卵-- 三.原因 现在知道了,还是自己配置的out比较乱,web项目的classes输出到"项目路径/build"中,而模块的classes输出到项目路径/out中了. 打包的时候看起来抛弃了模块的classes. 四.解决 先规范一下,找找ec

【Android的从零单排开发日记】之入门篇(三)——Android目录结构

本来的话,这一章想要介绍的是Android的系统架构,毕竟有了这些知识的储备,再去看实际的项目时才会更清楚地理解为什么要这样设计,同时在开发中遇到难题,也可以凭借着对Android的了解,尽快找出哪些模块和设计能够帮助解决该问题.但想了一下,这毕竟是入门篇,若没有实际项目开发经验的人看了之后肯定是一头雾水,所以就决定将其搁浅到大家熟悉Android之后再为大家介绍. 那么今天的主题是Android的目录结构,将系统架构比作人的骨骼架构的话,目录结构就像是人的各个器官,彼此功能各不相同,却能有序地