1.XMLType字段的优缺点
XMLType字段的数据,查询使用不如普通类型字段方便,需要理解和掌握XPath和ORACLE的XML函数(对开发和技术服务人员来说,技术难度更大),查找性能相对较差,也无法通过字段类型和长度、数据库约束来进行数据的规范化限定。一般情况下,不建议使用XMLType字段(应采用关系型表来存储)。
它最大的优点在于扩展灵活、存储集中(有利于提升性能)。
2. XMLType字段的适用场景
我们规定,目前只允许在以下三种情况使用:
1) 对象的层次和属性较多,并且预计未来变化的可能性较大,主体业务中没有或几乎很少有针对这些属性的统计查询和关联查询。
这种情况使用XMLType字段,主要是为了方便扩展,避免频繁变动数据结构(子表和字段的不断增加)。
例如:院感系统中记录医护人员暴露后的紧急干预措施,包括了皮肤暴露、利器损伤、黏膜暴露等几大类信息,属性很多,并且,随着业务认识的深入和应用推广,可能还会不断增加一些信息。
这类信息,基本上是存档查询,没有统计和关联查询需求。
如果通过创建子表和字段来存储,就可能非常多,并且,将来可能要不断扩展,结构不稳定。
2) 绝大部分业务过程中的读写访问都是以单个对象为单位进行,没有或几乎很少存在一次涉及多个对象的情况,并且通常会一次性访问该对象的几乎所有信息或一组紧密关联的信息。常见的有表单对象、文档对象、配置信息。
这种情况使用XMLType字段,主要是为了达到集中存储、减少IO的目的。
例如:电子病历,业务中的大量查询和写入,都是以一份病历这种单个对象为单位,每次查询都需要查出一份病历的所有信息。
3) 用于存储同一数据性质的多条记录,这些记录的属性很少,仅仅是用于存档备查,查询时通常一次查出所有记录,没有或几乎很少有针对这些属性的统计查询和表间关联查询。
这种情况使用XMLType字段,主要是为了减少子表(只有一两个字段的子表)数量,也能达到集中存储、减少IO的目的。
如果需要快速判断数据状态或获取最近一条记录的信息,应该另外创建一个字段来记录。
例如:人员证书的启用、停用信息,一个人可能多次停用,产生多条记录,只需要记录时间,以备查,为了快速判断是否停用,另外创建了一个字段”是否停用”。
3. XMLType字段的设计规范
1) 按XML规范,必须有且只有一个根元素。
2) 子元素与属性的选择
属性不能再扩展下级,也不能存储名称相同(值不同)的多条数据,访问也相对麻烦一些。有些数据既可以存储在子元素中,也可以存储在属性中。为了规范化,我们规定:
对象的非紧密关联信息,以及可能重复或扩展下级的情况,通过元素及子元素来存储信息,不使用属性。属性一般用来存储一个对象的相对完整、紧密关联的一组信息。
例如:
助手医生可能有多个,甚至可能将来会存储编码、科室等信息。
应该使用张医生 doctor_primary>
罗医生 doctor_associate>
刘医生 doctor_associate>
不应使用
associate1=”罗医生”
associate2=”刘医生”>医生列表
如果要存储手术记录中的手术医生这个对象的编码、科室等紧密相关的一组附加信息,则通过属性来存储,而不是子元素。
应该使用:
张医生
< doctor_ associate code=”002” dept=”内科”>罗医生
doctor_ associate>
< doctor_ associate code=”003” dept=”内科”>刘医生
doctor_ associate>
不应使用:
张医生001
< dept >内科
罗医生002
< dept >内科
刘医生003
< dept >内科
3) 元素及子元素名称要求使用英文命名,全部使用小写字母,以般以英文的全称表示,多个单词之间用下划线_分隔。
不采用中文名,是由于有些Oracle版本,导出时会出现乱码。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/117319/viewspace-1418222/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/117319/viewspace-1418222/