his项目数据库分解

阅读数:1165 发布时间:2016-05-21 11:02:00

作者:zzl005 标签: mysql react.js 朱忠来005 分解训练

层级关系

地区———>医院——>科室——>医生——>订单——>病人
area_tbl,hosp_tbl,dep_tbl,doc_tbl,odr_tbl,pat_tbl

具体分解 area_tblhosp_tbl

因为这个 his 挂号项目是准备推广到全国的,所以,首先得有个地区表 area_tbl,存储细分到区、县、县级市一级的数据,id字段作为主键,还有 name 字段、还有一个 fid(fatherid) ,默认值是 0,代表中国。

地区下面又分为医院表 hosp_tbl,医院表分为 h_id字段,该字段作为主键,还有 h_nameh_pic 等用来描述该医院的字段,还有一个 类似于 area_tbl 中 fid 字段的字段为 id 字段,为什么还要有 这个 id 字段呢,举个例子,比如在这个 hosp_tbl 中有一条记录:

h_id= 40,h_name=丹阳市第三人民医院,h_rate=3,

hosp_tbl 表中,如果没有代表该医院所在地区的字段,即 id 字段,我们就无法查询到该医院属于哪个地区,也无法得到丹阳市这个地区所有的医院列表。所以在 hosp_tbl 表中,这个起到 fatherid 作用的 id 字段,对于hosp_tbl 表来说,跟 h_name,h_pic 等字段一样是一个描述医院情况的字段,代表所在地区,而在整个 his 数据库中来说,起到一个索引的作用,跟area_tbl 建立了联系,通过该字段可获知某地区的医院列表,医院数量等信息。
以下表格为示例,不是真实记录。
假设area_tbl 表中,有如下记录,id=23的是丹阳市,fid=0,中国。

id name fid
23 丹阳市 0
24 句容市 0
25 镇江市 0

假设hosp_tbl 表中,有如下记录,h_id=40 的是丹阳市第二人民医院,h_id=41 的是丹阳市第三人民医院,h_id=42 的是丹阳市中医院,他们的 id 字段值都是 23 表示都是丹阳地区的医院。而 h_id = 43代表的是句容市第一人民医院,id 字段值是 id=24,代表该医院属于句容市。

h_id h_name id
40 丹阳市第二人民医院 23
41 丹阳市第三人民医院 23
42 丹阳市中医院 23
43 句容市第一人民医院 24

那么假设现在有这么一个问题:

丹阳市有多少个医院?

答案就是:

只要在 hosp_tbl 表中,搜索 符合 id= 23 的有多少条记录就可以了。

这就是 在 hosp_tbl 表中,必须要有 id 字段的原因。

其他表之间的关系

根据上面对 area_tbl 表和 hosp_tbl 表的分析,我们继续分析另外几个表之间的联系。

医院表(hosp_tbl)和科室表(dep_tbl)

一个医院有多个具体的科室,比如外科,内科,耳鼻喉科,儿科等等。
对于 科室表 dep_tbl 来说,主要的字段跟医院表 hosp_tbl 差不多,比如,dep_id,dep_name,dep_range,dep_master,dep_desc,dep_pic,为了跟医院表 hosp_tbl 建立联系,还必须要有一个 h_id 字段,代表该科室所属的医院。同样的,要获知某个医院有多少个科室,只要知道这个医院的 h_id,然后在 科室表 dep_tbl 中查询符合的记录,即可得知。

科室表(dep_tbl)和医生表(doc_tbl

跟医院表和科室表的分析类似,这里就不重复了。

订单表(odr_tbl)

订单表中,除了有 odr_id,odr_desc,odr_time,odr_timeto,odr_pay 等字段外,还应该有就诊医院字段即 h_id,就诊科室字段 dep_id,主治医师字段 doc_id,还有表示这是哪个病人的订单的病人 id 字段 pat_id

病人表(pat_tbl

病人表中,主要有 pat_id,pat_name,pat_pid,pat_tel,pat_desc,pat_pic等字段,分别表示,病人id,姓名,身份证号,联系方式,病历,头像等。

几个问题
  1. 查询病人的病史,即他一共到各种医院的不同科室看了几次病?
    在订单表 odr_tbl中,通过该病人的 pat_id,查看有多少条记录
  2. 查询病人在某个医院的某个科室看了几次病,如何查询?
    在订单表中 odr_tbl中,通过该病人的id pat_id 和医院的id hosp_id和科室的id dep_id,查看所有记录
  3. 查看某地区的订单总量?
    先通过地区id id=XX 查询医院表 hosp_tbl,得到该地区的所有医院的 h_id ,然后,再通过该地区的所有医院id h_id,查询订单表 odr_tbl,有多少条记录,就说明该地区产生了多少订单。

相关文章推荐: