今天碰到个需求,需要查询所有级别的医院,看了下库表,分别是 机构类型类(t_OrgType) 机构类(t_Organ) 多对多的关系, 以及中间表 机构类型关系类(t_OrgTypeRelation) ,在此对中间表的概念做一个总结,下面是表结构
机构类型类(t_OrgType)
属性名称 |
数据元名称 |
数据元标识符 |
约束 |
类型 |
表示格式 |
允许值 |
Org_Type_ID |
机构类型ID |
|
|
S1 |
AN32 |
|
Org_Type_Code |
机构类型代码 |
|
|
S1 |
AN..10 |
|
Org_Type_Name |
机构类型名称 |
|
|
S1 |
AN..50 |
|
Card_Org_Flag |
制卡机构标志 |
|
|
S2 |
AN..2 |
0:否 1:是 |
Create_Time |
数据创建时间 |
|
|
DT |
DT15 |
|
Create_User_DR |
数据创建用户ID |
|
|
S1 |
AN32 |
|
Update_Time |
数据最后一次更新时间 |
|
|
DT |
DT15 |
|
Update_User_DR |
数据最后一次更新用户ID |
|
|
S1 |
AN32 |
|
|
|
|
|
|
|
|
机构类(t_Organ)
属性名称 |
数据元名称 |
数据元标识符 |
约束 |
类型 |
表示格式 |
允许值 |
Org_ID |
机构ID |
|
|
S1 |
AN32 |
|
Org_Code |
机构代码 |
|
|
S1 |
AN..10 |
|
Org_Name |
机构名称 |
|
|
S1 |
AN..50 |
|
Org_Short |
机构简称 |
|
|
S1 |
AN..50 |
|
Bank_Short |
金融机构英文简写 |
|
|
S1 |
AN..20 |
Eg:ICBC |
Bank_Status |
金融机构状态 |
|
|
S2 |
N1 |
0:未发卡、1:发卡 |
Manag_Leval |
管理机构级别 |
|
|
S2 |
N1 |
见6.1 |
Med_Leval |
医疗卫生机构等级 |
|
|
S3 |
N2 |
见6.26 |
Med_Tel |
医疗卫生机构联系电话 |
|
|
S1 |
AN..20 |
|
Med_Cate_Code |
医疗卫生机构类别代码 |
|
|
S1 |
AN..20 |
见6.27 |
MED_NATURE_CODE |
医疗卫生机构性质代码 |
|
|
S3 |
N2 |
见6.28 |
Org_Introduct |
机构简介 |
|
|
S1 |
AN..3000 |
|
Province_Code |
所在省份编码 |
|
|
S3 |
N6 |
见6.38 |
City_Code |
所在城市编码 |
|
|
S3 |
N6 |
见6.38 |
District_Code |
所在区/县编码 |
|
|
S3 |
N6 |
见6.38 |
Law_Person_Name |
机构负责人 |
|
|
S1 |
A..30 |
|
Law_Person_Tel |
机构负责人电话 |
|
|
S1 |
AN..20 |
|
Contact_Name |
机构联系人 |
|
|
S1 |
A..30 |
|
Contact_Tel |
机构联系人电话 |
|
|
S1 |
AN..20 |
|
Org_Addr |
机构联系地址 |
|
|
S1 |
AN..100 |
|
Super_Org_Code |
上级机构编码 |
|
|
S1 |
AN..10 |
|
Super_Org_Name |
上级机构名称 |
|
|
S1 |
AN..50 |
|
Fax_No |
传真号 |
|
|
S1 |
AN..20 |
|
|
邮箱 |
|
|
S1 |
AN..50 |
|
Web_Url |
网址 |
|
|
S1 |
AN..200 |
|
Postal_Code |
邮政编码 |
|
|
N |
N6 |
|
Available_Flag |
是否有效标志 |
|
|
S2 |
AN..2 |
0:无效 1:有效 |
Start_Date |
有效开始时间 |
|
|
D |
D8 |
|
End_Date |
有效结束时间 |
|
|
D |
D8 |
|
Issuer_Org_Code |
发卡机构代码 |
|
|
N |
N22 |
|
Notes |
备注 |
|
|
S1 |
AN..500 |
|
Create_Time |
数据创建时间 |
|
|
DT |
DT15 |
|
Create_User_DR |
数据创建用户ID |
|
|
S1 |
AN32 |
|
Update_Time |
数据最后一次更新时间 |
|
|
DT |
DT15 |
|
Update_User_DR |
数据最后一次更新用户ID |
|
|
S1 |
AN32 |
|
机构类型关系类(t_OrgTypeRelation)
属性名称 |
数据元名称 |
数据元标识符 |
约束 |
类型 |
表示格式 |
允许值 |
Org_Rel_ID |
机构类型关系ID |
|
|
S1 |
AN32 |
|
Org_Type_Code |
机构类型代码 |
|
|
S1 |
AN..10 |
|
Org_Code |
机构代码 |
|
|
S1 |
AN..10 |
|
Available_Flag |
是否有效标志 |
|
|
S2 |
AN..2 |
{0,1} |
Start_Date |
有效开始时间 |
|
|
D |
D8 |
|
End_Date |
有效结束时间 |
|
|
D |
D8 |
|
Create_Time |
数据创建时间 |
|
|
DT |
DT15 |
|
Create_User_DR |
数据创建用户ID |
|
|
S1 |
AN32 |
|
Update_Time |
数据最后一次更新时间 |
|
|
DT |
DT15 |
|
Update_User_DR |
数据最后一次更新用户ID |
|
|
S1 |
AN32 |
|
解决方案为三表联查,以中间表 Org_Type_Code为形参 查出t_Organ的一些必要属性
总结下中间表的作用
中间表是一个逻辑上的叫法,实质上它就是一个普通的库表( 为区分“临时表”),分析了经常的业务操作,发现大量的“赠删改查” 实际是以中间表为桥梁,
那么可不可以不用中间表,单纯的在两个表之间建立多对多的关系(通过主外键关联),事实可以,但是库表会存在大量的冗余数据,每个表会有nXn条记录,
明显不采用中间表会有2nXn(两个表加起来)条记录,有中间表的话为2n+nXn(三表加起来)条记录,更不论每个表的字段数会变成两个单表字段数相加
之和,并且没有中间表的话,两表直接关联,对于“增删改查”非常繁琐,特别是“删改”操作,多么痛的领悟!有中间表的话还是非常便利的,低耦合在哪里
都受欢迎。