代元平,郑君芳
首都医科大学基础医学院 生物化学与分子生物学系,北京 100069
医学实验文档管理系统的数据库设计与实现
代元平,郑君芳
首都医科大学基础医学院 生物化学与分子生物学系,北京 100069
目的提高对医学实验文档、原始数据尤其是大文件的管理效率,增强安全性和保密性。方法在数据库管理软件(SQL server 2008)平台下遵循数据库规范化设计方法,利用跨平台的面向对象的程序设计语言(Java)开发医学实验文档管理系统数据库。结果利用该系统实现了对医学实验文档及原始数据进行上传、下载及权限管理和自动备份等管理功能。结论本研究所采用的方法是将实验研究过程中的原始数据和文件直接以二进制的形式保存到数据库,有效地保证了数据的安全性和保密性。
医学文档管理系统;SQL server数据库;Java程序语言;医学实验文档
近年来,随着多媒体技术和计算机网络的飞速发展,数据库系统的发展十分迅速,应用领域愈来愈广。良好的数据库设计不仅能够节省数据的存储空间,保证数据的完整性,而且还能够方便地进行数据库应用系统的开发与管理[1]。
医学实验文档管理系统的数据库主要是管理用户以及在医学项目的实验研究过程中生成的所有文件,包括原始记录文件、临时文件以及最终的结果文件。这些文件的类型主要包括PPT、Word、Excel、PDF、tiff文件及各种类型的图片和专用文件。对于上述文件的管理,一般采取的方法是将上述文件保存在服务器的某个硬盘中的文件夹下面,而将文件的路径保存在数据库中。采取这种方式的优点是能减轻数据库的压力,在上传和下载文件时速度快。缺点是文件的安全性和保密性不够好,尤其是当服务器出现问题时,文件很容易丢失,而且无法恢复。
本研究所采用的方法是将实验研究过程中的原始数据和文件直接以二进制的形式保存到数据库中,而不是保存在服务器的硬盘中。本文采用的是SQL server 2008数据库,数据库的安全性比较高,而且在设计数据库时实行数据库自动备份,因此数据不易丢失。此外,还对实验数据的上传、查询以及下载进行权限设置,根据用户的不同权限提供不同的功能,有效地保证了数据的安全性和保密性。
1.1 功能需求分析
医学实验文档管理系统是依据医学实验研究的需要而建立的辅助化信息管理系统。该系统是以医学实验项目为核心,对实验项目相关的各种数据文档以及涉及的用户进行有效的管理,旨在提高管理效率的同时增强信息的安全性和可靠性。医学实验文档管理系统的功能需求因各个实验室的具体情况而有所不同,本研究以首都医科大学的实验室为例,经过调查分析其功能需求如下[2-3]:
(1)用户管理。基于系统安全性、共享性以及高效的管理性考虑,要求系统根据用户不同的操作需求,为各类用户提供相应的操作权限。用户管理主要的功能:① 添加用户,只有添加到该系统中的用户才能访问该系统;② 设置用户的权限,可以将用户的权限设置为普通用户、实验的设计者、实验负责人以及项目主管其中之一或者这些权限的组合;③ 删除用户,当用户不在该系统中时,主管要删除该用户,使得该用户无法再登录到该系统,从而保证系统的安全性与可靠性;④ 修改用户密码,当用户忘记自己的密码时,可以通过向主管申请,由主管来将该用户的密码重置为系统默认的密码,然后用户登录到系统后再修改自己的密码。
(2)项目管理。其主要功能是:① 创建项目以及项目下的子项目,当主管接到一个新的项目时,可在该系统中创建该项目,以及该项目下的若干个子项目;② 分配项目及其子项目,在新建项目时,主管要指定该项目的负责人,然后由该项目的负责人将该项目的所有子项目分配到具体的实验的设计者手中;③ 修改项目状态,当项目结束时,主管要将项目的状态改为“完成”,此时该项目的所有参与者(主管除外)都不能再对该项目做任何修改,也不能下载该项目的任何信息;④ 修改项目权限,该系统中的用户需要参考系统中的其他项目时,此用户需要向主管提出申请并得到授权后,此项目中的相应子项目才对该用户开放并自动地记录此用户的个人信息及查看的项目信息。在该用户参考完毕后,再由主管将开放的项目关闭。
(3)上传实验文档。其主要功能是:实验的设计者在做项目实验的过程中会得到实验相关的一系列原始数据(条件优化、过程记录、结果分析和结论),它们会以PPT、Word、Excel、tiff文件、图片或者专用文件的形式存储,实验的设计者需要及时将这些文档上传到该数据库中,以防止数据的丢失和泄露。同时,在设计者负责的子项目完成之前,其他的所有用户对该子项目均不可见,直到该子项目实验完成后,相应的项目负责人或者主管才能对该子项目进行相应的操作,进而防止实验结果被篡改。
(4)查询。其主要功能是:① 查询项目文档,经主管授权哪些项目对哪些用户开放后,那些用户便可以在该系统中查询到相应开放的项目的详细信息,如项目名称,项目中开放的所有子项目,每个子项目下的所有文件名等等;② 下载项目文档,当用户查询到自己需要的文档时,既可以单个文档进行下载,也可以批量的进行下载。在下载的同时该系统会记录用户的个人信息、下载的文件及下载的具体时间,能有效提升系统对所有文档的安全性和保密性管理。
根据功能分析,该系统的总体功能结构,见图1。
图1 系统的总体功能结构图
1.2 数据需求分析
根据功能分析,医学实验文档管理系统的数据信息主要有:① 用户信息;② 实验项目信息;③ 项目原始数据及文档信息;④ 项目权限及用户下载信息。
系统内所有的数据均由数据库统一管理,数据的共享与交换由各个功能模块通过数据访问技术来实现,以此来满足系统的数据功能需求[4-5]。
数据库设计是医学实验文档管理系统的核心,其设计合理与否直接影响数据库应用系统的软件架构及数据处理的效率。在对系统的总体功能分析的基础上,本文利用SQL server 2008数据库进行该系统的数据库设计。下面主要从数据库的概念结构设计、逻辑结构设计和数据表及完整性的设计与实现三方面进行介绍。
2.1 概念结构设计
经过上述的需求分析后,先将需求分析得到的结果抽象为用户观点的概念模型并用实体关系(E-R)图进行表示。根据需求分析,可以抽象出用户信息、实验项目信息、项目文档信息、项目权限、下载信息等5类实体,各个实体之间的具体联系,见图2[4-5]。
图2 实体关系E-R图
2.2 逻辑结构设计
上述的E-R模型是用户的模型,独立于任何一个具体的数据库管理系统,而数据库的逻辑结构设计的任务是根据概念结构的E-R关系图,按照一定的转换规则将其转换成数据模型的过程,即在关系数据库管理系统中,将所有的实体和相应的联系转化为一系列的关系模型。医学实验文档管理系统的关系模型转换如下。① 用户信息(用户姓名、用户ID、用户密码、用户类别);② 实验项目信息(项目名称、项目编号、子项目名称、子项目编号、项目负责人ID、子项目负责人ID、项目开始时间、项目完成时间、子项目开始时间、子项目完成时间);③ 项目文档信息(文件编号、子项目编号、文件名称、文件类型、文件二进制流、上传时间);④ 项目权限(项目编号、子项目编号、开启时间、关闭时间、开放对象ID、开放状态);⑤ 下载信息(下载者ID、文件编号、下载时间、下载次数)。
在规范化理论的基础上对上述所有关系模式进行分析,得出上述关系模式中没有多余的函数依赖,是规范程度很高的关系模式[6]。
2.3 数据表及完整性的设计与实现
数据表是数据库管理系统的基础,是数据库中所有数据的载体,数据表设计的合理与否直接关系到数据库管理系统性能的优劣,因此数据表的设计对数据库管理系统的设计至关重要。本文对用户信息表(Table_user)、实验项目信息表(Table_project_infor)、项目文档信息表(Table_ project_document)、项目权限信息表(Table_project_public)、下载信息表(Table_download)进行介绍。
(1)用户信息表(Table_user)的结构及其完整性设计。用户信息表的字段及类型为:用户ID(Int)、用户姓名(nvarchar)、密码(nvarchar)、用户类别(nvarchar)。该表记录系统中的所有用户,表中的用户ID及用户姓名都具有唯一性,用户在系统中进行相应的操作时,系统只凭借用户ID及其用户类别为用户提供相应的功能。在实验项目信息表、项目权限信息表及下载信息表的相应字段中将用户ID作为其外键进行字段约束,以提高数据库的完整性。
(2)实验项目信息表(Table_project_infor)的结构及其完整性设计。实验项目信息表的字段及类型为:子项目编号(nvarchar)、子项目名称(nvarchar)、项目名称(nvarchar)、项目编号(nvarchar)、项目负责人ID(Int)、子项目负责人ID(Int)、项目开始时间(datetime)、项目完成时间(nvarchar)、子项目开始时间(nvarchar)、子项目完成时间(nvarchar)。该表记录系统中所有项目的详细信息,其中子项目编号是系统识别最小项目的唯一凭据,在项目文档信息表、项目权限表的相应字段中将该字段作为其外键进行字段约束,确保子项目的唯一性。
(3)项目文档信息表(Table_project_document)的结构及其完整性设计。项目文档信息表的字段及类型为:文件编号(nvarchar)、子项目编号(nvarchar)、文件名称(nvarchar)、文件类型(nvarchar)、文件二进制流(varbinary)、上传时间(datetime)。该表记录系统中所有医学实验文档的具体信息,其中文件编号为主键,子项目编号是实验项目信息表中子项目编号的外键,文件二进制流是实验文档具体内容的二进制形式,下载转换后可恢复为原来的文件。
(4)项目权限信息表(Table_project_public)的结构及其完整性设计。项目权限信息表的字段及类型为:项目编号(nvarchar)、子项目编号(nvarchar)、开启时间(datetime)、关闭时间(datetime)、开放对象ID(Int)、开放状态(nvarchar)。该表记录系统中项目的开放情况,开放状态字段的约束为用户定义完整性约束,该字段内容为0时表示该项目对该开放对象不可见,反之则表示可见。只有在该表中记录的项目及其相应的用户且开放状态为1时,相应的用户才能对相应的项目信息进行查询下载。
(5)下载信息表(Table_download)的结构及其完整性设计。下载信息表的字段及类型为:下载者ID(Int)、文件编号(nvarchar)、下载时间(datetime)、下载次数(nvarchar)。该表记录用户下载文档的次数及时间,更全面地保证系统数据的安全性。
上述表间的关联关系图(图3),清晰地表述了数据库中各表结构、表间关联关系及完整性的设计与实现。
在数据库中写入项目名称、子项目名称以及用户姓名这类数据时,由于数据很小,写入的过程中不会出错。但将实验的文档写入到数据库中时,对于几十兆甚至上百兆的大文件在写入的过程中容易出错,原因是SQL server 2008数据库在每执行一条结构化查询语言(SQL)语句时有时间限制,当一次写入数据的时间超过该时间时,SQL server 2008数据库就会显示一条日志已满的错误信息,表示此次上传数据失败。
图3 表间关联关系图
对于上述问题,解决的办法是在后台将大文件依次分成多段,即按顺序每次读取一定大小的数据写入到数据库中,直到该文档上传完毕。SQL增强了更新(update)语句,提供了用于MAX列的Write方法。Write方法可以只修改字符串中的一部分数据而不会重载整个字符串。Write方法接受3个参数:@expression,@offset,@length。@ expresstion参数替换目标值中从@offset位置开始的@ length个单位(字符/字节)的字符。当@offset的值为null时,该函数将@expression的内容截取@length个单位(字符/字节)添加到字符串的末尾。下面是实现该系统功能的一段代码:
该段代码执行的功能是:每次只读取文件中的length个单位(字符/字节)。如果文件是第一次写入到数据库中,则利用insert into语句直接将读取的语句写入到数据库中;如果该文件不是第一次被读取,因为set文件.write(?,null,"+length+")语句中Write的@offset的值为null,所以会将本次读取的length个单位(字符/字节)的数据添加到上次添加的数据的末尾。以此类推,当文件的所有数据都被写入到数据库中时,结束本次的上传行为。通过上述方法,能够有效地保证无论多大的文件都能成功的保存到SQL server 2008数据库中。
在对医学实验文档管理系统进行功能需求分析及用户数据需求分析的基础上,先利用数据库规范化设计方法对医学实验文档管理系统的数据库及其完整性进行设计[7-8],并在SQL server 2008平台下得以实现,再采用跨平台编程语言JVAV进行系统控制程序的编制,进而完成了该系统的开发。本文不仅实现了小文件在SQL server 2008数据库中的上传与下载,而且解决了在SQL server 2008中上传与下载大文件易出错的问题,有效地提高了医学实验文档管理的效率、原始数据与文档的信息安全及保密性。
[1]李彬,何静,张岩.管理信息系统的数据库设计[J].光盘技术,2008,(1):24-26.
[2]杜久升,王莉,侯争,等.露天矿卡车调度系统数据库设计与实现[J].金属矿山,2015,(9):105-111.
[3]杨利娟.城市地理信息系统中基础数据库设计与实现研究[J].科技资讯,2014,(29):31-32.
[4]闫永康.医院信息系统网络与数据库设计[D].河北:河北北方学院,2013.
[5]时世栋,张唯,高巧红,等.高等数学在线考试系统数据库的设计与实现[J].数字技术与应用,2014,(1):168.
[6]吴莉霞.基于教学管理系统的数据库及其完整性的设计与实现[J].宝鸡文理学院学报(自然科学版),2013,33(3):61-64.
[7]杨燕红,刘长兴,蒋阅峰.数据保护技术在医院信息系统数据库中的应用[J].中国医疗设备,2015,30(9):96-98.
[8]林树泽,李渊.Oracle数据库进阶-高可用性,性能优化和备份恢复[M].北京:清华大学出版社,2011:140-143.
Design and Implementation of Database for Medical Experiment Document Management System
Objective To improve the efficiency,security,and confidentiality level in the management of medical experiment documents and original data,especially the management of large fles.Methods By following the standardized database design method in the Structured Query Language (SQL) Server 2008 database platform,a medical laboratory document management system was developed with Java programming language,which was object-oriented and could utilize the cross platform.Results The use of the database management system could realize functions such as data uploading and downloading,authority management,automatic backup,andetc.Conclusion The method adopted in this research was to save the original data and document in the experimental process to the database in binary,which effectively ensured the effciency and confdentiality in the management of medical experiment data and document.
medical document management system;Structured Query Language server database;Java programming language;medical experiment document
DAI Yuan-ping,ZHENG Jun-fang
Department of Biochemistry and Molecular Biology,Basic Medical College of Capital Medical University,Beijing 100069,China
TP311.52
A
10.3969/j.issn.1674-1633.2016.04.023
1674-1633(2016)04-0093-04
2015-12-14
2016-02-03
作者邮箱:dyphaohao9201128@126.com