第一篇:基于Java EE的Web系统中数据库设计技术研究论文
摘 要:数据库设计是Web系统设计中的核心内容之一,也是Web系统实现的基础,是在特定的数据库模式下来构建数据库应用系统,使之能较好地存储数据,满足用户的实际应用需求。数据库结构设计的优劣对应用系统的使用效率具有较大的影响。一个设计良好的数据库结构不但能很好的保证数据完整性与一致性,而且还可以有效的提高数据存储效率。
关键词:数据库设计;Web系统;数据库概念;逻辑设计
随着计算机技术的发展,特别是计算机网络技术的快速发展,网络成为了人们工作和生活不可或缺的一部分。网络技术的应用使得计算机之间通信、信息共享成为可能,而数据库技术在Web系统中的应用则为人们提供了数据存储、信息检索、信息分析等功能,从而使得工作更高效地进行。
在Web系统设计的过程中,数据库设计毋庸置疑占有重要地位,数据库设计是Web系统实现的基础,也是Web系统设计的关键环节之一,是在特定数据库模式下来构建数据库应用系统,使之能较好地存储数据,满足用户的实际应用需求。数据库结构设计的优劣对应用系统的使用效率有较大影响。一个设计良好的数据库结构不但能很好的保证数据完整性与一致性,还可以有效提高数据存储效率。同时在进行Web系统的数据库设计的时候,还要做到系统开销小、易于管理和维护,后续系统开发方便、快捷、易扩充等。笔者以高职院校课程成绩管理系统中的数据库设计为例进行分析研究。课程成绩管理系统中数据库设计的方法与要求
数据库设计即是庞大的系统工程项目,也是多学科技术综合体现。通常有属性主导型和实体主导型两种方法,属性主导型主要是从归纳数据库应用的属性出发,在归并数据实体时维持属性间的函数依赖关系;实体主导型则先寻找对数据库应用有意义的实体开始,通过定义属性来定义实体。高职院校课程成绩管理系统数据库设计是根据学院的实际情况要求,以数据库设计理论为依据,来设计数据库的全局逻辑结构和与用户的局部逻辑结构。既要结合高职院校教学运行需求的实际情况,也要充分考虑到学院规模和教学管理的发展变化状况及学院各职能部门的各级管理要求。系统中具体的实体主要有教师实体、学生实体、课程实体、班级实体和成绩实体等。数据库编码设计
数据库编码设计是指对所需处理事务对象的代码化设计,以方便计算机进行信息处理。根据当前高职院校教学运行的实际情况,在进行编码的时候可以采用连续码、组群码等方法来进行。连续码主要是采用阿拉伯数字进行展开,连续编号,一项一个。如对学生的学号进行编码。组群码主要是用特定号码组来构成一个特定的项目群,使用连续数字代码来表示具体的项目的。如高职院校中的系部,就可以用01、02等来分别表示不同的系部,如01代表信息系,02代表建筑系等。学生学号编码可以采用九位代码进行标识,其中前四位代表入学年级,第五位代表学习层次,后四位代表学生注册报道系统中的顺序。如201411640,即表示该生为2014年入学的第1640个报道注册的大专学生。数据库概念设计
概念设计是现实世界与计算机世界的中介,既独立于数据库的逻辑结构,也独立于数据库管理系统。高职院校课程成绩管理系统中涉及到的数据实体有:系统管理员、学生、教师、课程、班级、学生课程与成绩等。根据对系统功能模块设计分析和实体与属性的关系,课程与成绩管理系统的E-R图,见图1。
图1 课程与成绩管理系统的E-R图数据库逻辑设计
基于上面分析,通过MySQL辅助图形化界面工具SQLyog来进行数据库设计,涉及到的数据表主要有以下六个:系统管理员表(Admin)(用户名,姓名,密码),主要用来存放系统管理员的基本信息;教师信息表(Teacher)(教师编号,教师姓名,教师密码,所属系部,职称,专兼职,其他信息),主要用来存放任课教师的基本信息;学生信息表(Student)(学生学号,姓名,密码,性别,籍贯,系部,专业,教学班,联系电话,电子邮箱),主要用来存放学生的基本信息;课程信息表(Course)(课程编号,课程名称,学分数,课程性质,开出系部),主要用来存放学期开设课程的基本信息;班级信息表(Class)(教学班编号,教学班名称,任课教师,课程,开课地点,开课时间段),主要用来存放课程教学班的基本信息;学生课程与成绩表(Enrol)(学生学号,教学班级,是否接受,成绩,学分),主要用来存放学生所选择的课程与成绩信息。结 语
在基于Java EE的Web系统中,当数据库表设计好后,还要进行映射文件创建和持久化类创建,创建的映射文件扩展名为.xml,主要是通过Hibernate辅助工具自动生成。通过以上分析可知,此数据库设计不但可以很好的保证数据完整性与一致性,有效的提高数据存储效率,还能做到系统开销小、易于管理和维护,后续系统开发方便、快捷、易扩充等。
参考文献
[1]孙未未.数据库处理——基础、设计与实现[M].北京:电子工业出版社,2011.[2]熊才权.数据库原理与应用[M].湖北:华中科
第二篇:数据库防火墙技术研究
数据库防火墙技术研究
数据库防火墙是继防火墙、下一代防火墙等网关类安全产品之后,专门针对于数据存储的核心介质——数据库的一款安全防护产品。
关于数据库安全可以分为两个层面,一方面是来自于外部的威胁,比如说来自黑客的攻击、非法访问等,第三方运维人员的不当操作和非法入侵;另外一部分是来自于内部的威胁。数据库防火墙部署于数据库之前。必须通过该系统才能对数据库进行访问或管理。数据库防火墙除提供网络防火墙的基本隔离功能以外,还提供独立的连接授权管理、访问授权管理、攻击保护、连接监控、审计等功能。部署该产品以达到牢牢控制数据库入口,提高数据应用安全性的目的。目前,国内首款专业数据库防火墙产品是安华金和数据库防火墙DBFirwall。
数据库防火墙的产品价值
1、屏蔽直接访问数据库的通道
数据库防火墙部署介于数据库服务器和应用服务器之间,屏蔽直接访问的通道,防止数据库隐通道对数据库的攻击。
2、二次认证
应用程序对数据库的访问,必须经过数据库防火墙和数据库自身两层身份认证。
3、攻击保护
实时检测用户对数据库进行的SQL注入和缓冲区溢出攻击。并报警或者阻止攻击行为,同时详细的审计下攻击操作发生的时间、来源IP、登录数据库的用户名、攻击代码等详细信息。
4、安全审计
系统能够审计对数据库服务器的访问情况。包括用户名、程序名、IP地址、请求的数据库、连接建立的时间、连接断开的时间、通信量大小、执行结果等等信息。并提供灵活的回放日志查询分析功能,并可以生存报表。
5、防止外部黑客攻击威胁
黑客利用Web应用漏洞,进行SQL注入;或以Web应用服务器为跳板,利用数据库自身漏洞攻击和侵入。通过限定更新和删除影响行、限定无Where的更新和删除操作、限定drop、truncate等高危操作避免大规模损失。数据库防火墙防护能力
数据库防火墙产品具有主动防护能力。针对对数据库的风险行为和违规操作做相应的防护与告警。分析当前各类数据库所受威胁和防火墙的应对防护能力包括如下几项功能:
防御数据库漏洞与SQL注入
威胁:外部黑客攻击,黑客利用Web应用漏洞,进行SQL注入;或以Web应用服务器为跳板,利用数据库自身漏洞攻击和侵入。
防护:通过虚拟补丁技术捕获和阻断漏洞攻击行为,通过SQL注入特征库捕获和阻断SQL注入行为。
防止内部高危操作
威胁:系统维护人员、外包人员、开发人员等,拥有直接访问数据库的权限,有意无意的高危操作对数据造成破坏。
防护:通过限定更新和删除影响行、限定无Where的更新和删除操作、限定drop、truncate等高危操作避免大规模损失。
防止敏感数据泄漏
威胁:黑客、开发人员可以通过应用批量下载敏感数据,内部维护人员远程或本地批量导出敏感数据。
防护:限定数据查询和下载数量、限定敏感数据访问的用户、地点和时间。
审计追踪非法行为
威胁:业务人员在利益诱惑下,通过业务系统提供的功能完成对敏感信息的访问,进行信息的售卖和数据篡改。
防护:提供对所有数据访问行为的记录,对风险行为进行SysLog、邮件、短信等方式的告警,提供事后追踪分析工具。
数据库通讯协议解析
各类数据库防火墙产品,对于数据库风险行为和违规操作进行安全防护的基础。都来自于数据库通讯协议的解析。通讯协议解析的越精准,数据库的防护工作越周密安全。换言之,数据库通讯协议解析的强弱是评价一款数据库防火墙产品优略的关键。下面就数据库通讯协议解析原理做一下相关介绍。
从数据通讯交互来讲,数据是以包(Packet)的形式在网络中进行传输的。一个包通常由2大部分组成:控制部分(metadata)和数据部分。从包的结构中,可以得到数据的“源地址(Source Address)”和“目标地址(Destination Address)”,“源端口(Source Port)”和“目标端口(Destination Port)”。防火墙正式基于这些信息对数据库进行防护。当一个包(如来自数据库客户端)通过防火墙时,防火墙会基于一定的规则对该包进行检查,如检查包的发送者是不是合法的IP(如合法的数据库客户端),包的目标是不是特定的数据库服务器?如果检查通过,包会被允许穿过防火墙。如果检查未通过,则该包会被丢弃(Drop)(发送者什么都不知道,犹如石沉大海),或者会给发送者返回(反馈)错误信息(reject)。我们把前面描述的这种防御方式叫“包过滤”。“包过滤”可工作在OSI模型
(见下图)的最底下3层或者4层。
“包过滤”又可分为“有连接(stateful)”和“无连接(stateless)”两种。“有连接(stateful)”是指防火墙会记录通过的连接状态信息,维护相应的连接状态数据库,基于同一连接的数据包可免于重复检查,这样将提高数据包传输效率,“无连接(stateless)”是对每一个数据包进行检查,通常意义上会导致网络响应缓慢,这两种方式各有优缺点。
安华金和数据库防火墙(DBFirewall)实现了对主流数据库类型通讯协议的“双向、全协议解析”,重要的解析内容包括:SQL语句、参数化语句句柄、SQL参数、应答结果信息、结果集结构信息、结果集数据等。
SQL语句的解析和表达是实现对SQL语句攻击行为控制的关键;SQL注入的检查、应用sql语句的放行,都依赖于sql语句的解析和特征捕获。传统的技术,往往采用正则表达式的方式,但该方式存在巨大的技术缺陷,一是正则匹配过程性能地下,二是对于复杂的参数情况容易产生匹配错误,三是通过语句的变体容易欺骗。
DBFirewall为了有效扑获SQL语句的特征,以及为了快速地对SQL语句进行策略判定,以实现数据库防火墙的高效处理,提供了专利性的SQL语法特征技术,实现了对SQL语句的重写。
SQL重写是在不改变原SQL语句的语义的情况下,DBFirewall对捕捉到的SQL语句进行重写,替换原语句中的参数值。
SQL重写是一个抽象的过程,便于管理和操作。SQL重写包括以下几个方面: 除了单双引号内的内容,小写字母全部变为大写字母; 准确区分正负号和加减号;
将SQL语句中的数值、单引号引起的字符串各自重写为统一的占位符;
将注释、换行重写为空格,将连续的空格合并为1个,去掉运算符两端等不影响语义的空格 以如下SQL语句为例:
Select +0.25 * money,sum(id)From “testdb”.accounts
Where id = ' G1792 ' or name!=‘’/*this message come from Lisa*/ XSeure-DBF在SQL重写的基础上,根据SQL语法,对SQL进行了多级分类。SQL多级分类是将具有相同操作行为的不同语句合并为一类,为SQL信息的查看和策略的定制提供了便利,且SQL分类编码操作后,易于后续的计算、操作和存储。
SQL分类主要分为三级,分类的方向由细到粗,即二级分类是在一级分类的基础上进行的,三级分类是在二级的基础上进行的。
一级分类
基于目前的SQL重写,即替换所有的可变“参数”数据为固定的“参数(例如,#)”,并且将所有谓词全部大写化(格式化为大写字母)等。也就是说,一级分类的输出是经过“重写”后的SQL语句。 二级分类
在一级分类的基础上,对所有的谓词、函数、比较运算符进行编码后,生成摘要的字符串编码,该编码就是SQL的二级分类码。 三级分类 在二级分类的基础上,对所有的谓词比较运算符进行编码后,生成的摘要字符串编码,该编码就是SQL三级分类码。
根据SQL分类的原则,假如有如下SQL语句:
1:SELECT salary*1.5 FROM employees WHERE job_id ='PU_CLERK';2:SELECT salary*2 FROM employees WHERE job_id='SA_MAN';3:SELECT employee_id FROM department WHERE department_name = 'HR';4:SELECT department_id FROM employees WHERE salary <5000;5:SELECT sum(salary)FROM employees WHERE job_id ='PU_CLERK';6:SELECT max(salary)FROM employees WHERE job_id='PU_CLERK';那么按照分类码,DBFirewall看到的分析SQL,由三级到一级如下呈现: SELECT FROM WHERE = SELECT FROM WHERE = SELECT SALARY*0 FROM EMPLOYEES WHERE JOB_ID='#' SELECT EMPLOYEE_ID FROM DEPARTMENT WHERE DEPARTMENT_NAME='#' SELECT SUM FROM WHERE = SELECT SUM(SALARY)FROM EMPLOYEES WHERE JOB_ID='#‘ SELECT MIN FROM WHERE = SELECT MIN(SALARY)FROM EMPLOYEES WHERE JOB_ID='#‘
SELECT DEPARTMENT_ID FROM EMPLOYEES WHERE SALARY<0 SELECT MIN FROM WHERE < SELECT DEPARTMENT_ID FROM EMPLOYEES WHERE SALARY<0 SQL语句格式化重写后的结果为:
SELECT 0*MONEY,SUM(ID)FROM “testdb”.ACCOUNTS WHERE ID=’#’ OR NAME!=’’ 正式基于精准的数据库通讯协议解析,数据库防火墙才能对数据库进行周密的防护。黑白名单机制
数据库防火墙进行数据库防护的过程中,除了利用数据通讯协议解析的信息设置相应的风险拦截和违规sql操作预定义策略以外,常用的防护方式也包括通过学习模式以及SQL语法分析构建动态模型,形成SQL白名单和SQL黑名单,对符合SQL白名单语句放行,对符合SQL黑名单特征语句阻断。
安华金和数据库防火墙除了通过制定黑白名单和相应的策略规则之外,配合利用禁止,许可以及禁止+许可的混合模式规则对数据库进行策略设置,从而对数据库进行防护。
许可规则禁止规则优先禁止规则放行阻止放行阻止 “禁止规则”负责定义系统需要阻止的危险数据库访问行为,所有被“禁止规则”命中的行为将被阻断,其余的行为将被放行。
“许可规则”负责定义应用系统的访问行为和维护工作的访问行为,通过“许可规则”使这些行为在被“禁止规则”命中前被放行。
“优先禁止规则”负责定义高危的数据库访问行为,这些策略要先于“许可规则”被判断,命中则阻断。数据库漏洞防护
在数据库的防护过程中,除了对数据库登录限定,恶意sql操作拦截,以及批量数据删改进行安全防护以外。数据库自身存在的一些漏洞缺陷所引发的安全隐患,也在数据库防火墙的防护范围之内。对于这些风险行为进行周密而严谨的防护也是数据库防火墙价值体现的重点项。
之前在CVE上公开了2000多个数据库安全漏洞,这些漏洞给入侵者敞开了大门。数据库厂商会定期推出数据库漏洞补丁。数据库补丁虽然能在一定程度上弥补数据库漏洞,降低数据库遭受恶意攻击的风险度。但是数据库补丁也存在许多适用性问题。主要包括以下三点:
漏洞补丁针对性高,修补范围存在局限性。
包发布周期过长,存在数据泄露真空期 补丁修复过程中存在兼容性隐患
数据库补丁漏洞修补周期长,风险大,消耗大量资源
区别于oracle防火墙对虚拟补丁技术的空白,安华金和数据库防火墙和McAfee数据库防火墙功能点上都添加了数据库漏洞防护技术,以完善产品,力求达到对数据库的全面防护。
虚拟补丁技术可以在无需修补DBMS内核的情况下保护数据库。它在数据库外创建了一个安全层,从而不用打数据库厂商的补丁,也不需要停止服务和回归测试。通过监控所有数据库活动,并用监控数据与保护规则相比较,从而发现攻击企图。当比较结果与规则匹配时,就发出一个警报,并在指定的时间内终止可疑会话、操作程序或隔离用户,直到这个可疑的活动被审查通过。
安华金和数据库防火墙的漏洞防护技术——虚拟补丁通过控制受影响的应用程序的输入或输出,来改变或消除漏洞。是在数据库的前端进行控制或告警的一种技术。它是一种透明的对数据库进行保护的方法,不需要重启数据库或进行大范围应用系统的回归测试。
本文针对当前数据安全领域的现状与发展趋势向大家做了一些简要的论述,从数据库防火墙的崛起,从国际到国内市场,到Oracle,McAfee再到安华金和,有一点我们可以达成共识,数据库安全在信息安全中的整体价值地位逐步凸显。数据库防火墙作为针对数据库的安全的专项产品,作为维护数据库的堡垒屏障已经起到了不可或缺的作用。
第三篇:在线答题系统数据库设计
在线答题系统(选择题、判断题)数据库设计
选择题由choice_question和choice_answer组成,分别用于存储选择题的题目信息和考生的答题记录。
choice_question的各列分别用于存储题目的序号(主键,自增)、分数、题目、选项ABCDE、正确答案。
choice_answer中的user_id、ques_id、answer分别表示用户id、题目id,作为外键分别指向qs_user表中的id和choice_question表中的id,为了提高当用户修改题目答案,即修改answer的速度,我们将user_id和ques_id作为主键,并建立索引。
判断题部分的judge_answer和judge_question设计思路和选择题部分是一样的。
config表用户保存考试的开始和结束时间。
所谓的修改考试的开始和结束时间,不过是不断update这条记录罢了。
qs_admin,用户保存管理员的用户名和密码,管理员的密码加密规则是这样的。
密文
=
sunstr(md5(明文+“gxdr“),5,20);
qs_user用于存储考生的信息
lock用户标识考生是否交卷,grade用于记录考生的成绩。
第四篇:在线答题系统数据库设计
在线答题系统(选择题、判断题)数据库设计
选择题由choice_question和choice_answer组成,分别用于存储选择题的题目信息和考生的答题记录。
choice_question的各列分别用于存储题目的序号(主键,自增)、分数、题目、选项ABCDE、正确答案。choice_answer中的user_id、ques_id、answer分别表示用户id、题目id,作为外键分别指向qs_user表中的id和choice_question表中的id,为了提高当用户修改题目答案,即修改answer的速度,我们将user_id和ques_id作为主键,并建立索引。
判断题部分的judge_answer和judge_question设计思路和选择题部分是一样的。config表用户保存考试的开始和结束时间。所谓的修改考试的开始和结束时间,不过是不断update这条记录罢了。qs_admin,用户保存管理员的用户名和密码,管理员的密码加密规则是这样的。密文 = sunstr(md5(明文+“gxdr”),5,20);qs_user用于存储考生的信息
lock用户标识考生是否交卷,grade用于记录考生的成绩。
第五篇:图书管理系统数据库设计
数据库设计.................................................................2 3.1 专门术语的定义...................................................2 3.1.1 系统中常用的术语(或使用频率较高的术语).........................2 3.1.2 表格定义及规范.................................................2 3.1.2.1数据约定.....................................................2 3.1.2.2表和表字段命名规范:.........................................3 3.2 数据设计.........................................................3 3.2.1 数据流程图设计.................................................3 3.2.2实体关系结构设计...............................................4 3.3安全保密设计.....................................................6 3.3.1 逻辑上的安全保密...............................................6 3.3.2 物理上的安全保密...............................................6 3.4 表格与功能模块相关性分析.........................................7 3.5 表格定义.........................................................7 数据库设计
3.1 专门术语的定义
暂无
3.1.1 系统中常用的术语(或使用频率较高的术语)暂无
3.1.2 表格定义及规范 3.1.2.1数据约定
所有数据项都用英文、汉语拼音或缩写表示,数据库名称除外。
所有字段在设计时,除以下数据类型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary、varbinary外,必须有默认值。字符型的默认值为一个空字符值串;数值型的默认值为数值0;逻辑型的默认值为数值0;
其中:系统中所有逻辑型中数值0表示为“假”;数值1表示为“真”。datetime、smalldatetime类型的字段没有默认值,必须为NULL。当字段定义为字符串形时建议使用varchar而不用nvarchar。建议在大多数表中(如报销单,申请单),应都有以下字段: 字段名说明类型默认值 CreatorID创建者int CreatedTime创建时间DatetimeNULL 字符集采用 UTF-8,请注意字符的转换。
所有数据表第一个字段都是系统内部使用自动序列主键列,自增字段,不可空,名称为:id,确保不把此字段暴露给最终用户。
除特别说明外,所有字符串字段都采用varchar(50)类型,(无论汉字还是英文,都算一个字符)。
除特别说明外,所有小数的字段都采用 decimal(18,2)的形式表达。
除特别说明外,所有日期格式都采用 datetime 格式(根据需要提取时间格式); 除特别说明外,所有整形都采用 bigint 格式。除特别说明外,所有字段默认都设置为 null。3.1.2.2表和表字段命名规范:
命名规则约束的范围包括:数据库的命名、表的命名及字段的命名。数据库相关的命名规则采用与通常的编程的变量命名规则原则一致,具体要求如下: 1)字段名及表名为典型的名词结构; 2)中文名称要求语言精练、文法严谨;
3)望文知意、易懂易用,禁止采用如:A002这种命名;
4)主体采用拼音字母的首写字母拼写构成,基于惯常法可适度采用无词义歧义性的英文命名;
5)长度不少于3个字母,不大于12个字母;
6)在对于拼音首字母类似的字段和表,为区别,添加下划线和数字如男性人数:NXRS,女性人数:NXRS_2。
3.2 数据设计
绘制数据流程图的目的是为了方便开发人员与用户的交流,以及为系统的设计提供依据。数据流程图的绘制过程通常采用自顶向下,逐层分解,直到功能细化为止,形成若干层次的数据流程图。3.2.1 数据流程图设计
0层数据流图
1层数据流图
3.2.2实体关系结构设计
图书实体关系
读者实体关系
图书借阅关系实体
用户实体关系
图书类别实体关系
3.3安全保密设计
3.3.1 逻辑上的安全保密
1、系统对非法使用者的安全保密处理措施
2、系统对正常使用者的安全保密处理措施
3、系统对管理员的安全保密 3.3.2 物理上的安全保密
1、数据库系统异常时的还原处理措施
2、设备遭异常毁坏时的安全防护措施
3、数据参数做到及时更新,保证系统正常运行
3.4 表格与功能模块相关性分析
3.5 表格定义
a.图书信息表
b.读者信息表
c.借阅表
d.管理员_书籍
e.管理员_学生