数据定义分析
数据定义分析的任务是确定系统安装和正常运行期间数据库、基本表、视图、索引等对象的创建、修改与删除等需求。数据定义分析为数据库并发处理设计提供依据。
数据定义分析很有必要。首先,虽然数据库系统的上述对象是开发人员在数据库实现时创建的,但是一些通用性较强的数据库系统相当一部分对象是在系统安装或者正常运行时创建的。例如,为了提高数据库的运行速度,证券交易管理系统按月份存储数据,即每个月份的数据存储在该月份对应的数据库中;于是每个月1号之前需要建立一个对应该月的数据库。其次,数据库运行期间可能存在修改某个对象的需求。例如,学生成绩管理系统在运行期间由于系统升级,学生基本信息需要增加一个数据项。最后,在数据库运行期间可能存在删除某个对象的需求。例如,一些临时建立的对象在不使用时需要删除。
- 可以从以下几个方面进行数据定义分析:
- 对象命名时是否考虑了时间因素?如是,则可能有创建需求。
- 数据库系统在运行过程中,为了提高数据处理的速度,可能需要创建临时表,用于存储数据处理的中间结果。
- 由于应用系统的复杂要求,需要在应用程序中动态地创建视图,以简化系统对数据操作的语句。
数据操纵分析
- 数据操纵分析主要是数据插入、修改、删除、查询、统计和排序等方面的分析。
- 数据更新分析
- 数据更新是指对数据库中的数据进行各种更新操作,包括对数据进行插入、修改、删除等操作,从而使数据库中的数据发生变化。
- 数据插入:数据插入是在原有数据的基础上增加新的数据。插入的数据可以是一个表中的一条或者多条记录。在关系数据库中数据插入语句有两种使用形式:一种是使用常量,一次插入一个记录。另一种是利用查询的结果集,一次插入多个记录。
- 数据删除:数据删除是将对原有的不需要的数据执行删除操作,从而达到减少数据使数据得到更新的目的。在对数据执行删除操作时,若需要删除的数据和其他表中的数据有关联,则为了保证数据的完整性和一致性,通常也需要将相关数据进行删除更新操作。
- 数据修改:数据修改是指对原有数据中的部分数据或者全部数据进行修改操作,从而使数据满足新要求而实现数据更新的目的。在关系数据库中,数据经常需要执行修改操作,以符合新的要求。例如,在学生基本信息表中,当某个学生的专业发生变化时,就需要修改原来所登记的专业信息以达到更新的目的。
- 数据查询分析
- 数据查询分析的任务是确定系统正常运行期间,根据数据字典、应用系统需求及用户的需求,确定哪些属性作为数据查询的选择条件构造依据,并根据系统对数据查询响应时间要求的快慢,合理地完成索引等对象的创建、修改与删除等操作。
- 一般可以从以下几个方面进行数据查询分析:
- 根据系统需求分析的结果及各类用户对数据查询的需求,分析应用系统需要哪些实体集的属性作为系统查询的条件,如某工厂管理系统要求依据职工的岗位、职位等属性进行数据的查询。
- 根据分析比较,确定数据查询速度的快慢,合理地针对某些属性设计索引,以加快查询响应时间。
- 数据统计和排序分析
- 所谓排序是指将一组杂乱无章的数据按一定的规律顺次排列起来。比如,按人名的笔画数、工资额、销售业绩由高到低排列等等。为了使数据更具有层次感,需要对基本表中的数据进行分类汇总,将数据库中的记录按某个字段分类后进行汇总统计,统计方式包括求和、求平均值、计数、求最大(小)值等。
- 分组(类)统计的例子有:
- 按照销售代表、生产线、销售区域或季度分组进行销售情况统计。
- 按照公司部门(分公司)、生产线或季度分组进行财务情况统计。
- 按照部件、供应商和生产厂家分组进行投资情况统计。
数据完整性分析
- 完整性分析是基本表设计的重要基础,它是找出保证数据库中数据满足一致性、正确性和有效性的需求,其目的是防止错误的数据进入数据库。数据完整性分析的主要任务是确定数据项取值范围、关键字、数据关联
- 一致性 一致性是指表示同一事实的两个数据应当一致。例如,学生成绩管理系统中各个学院保存的学生成绩应该和学校教务处保存的学生成绩一致。
- 正确性 正确性是指数据必须正确无误的。例如,数值型数据中只能含有数字而不能含有字母。
- 有效性 有效性是指数据必须在其定义域之内。例如,性别的定义域为集合{男,女},性别必须在此定义域中取值。
- 数据项取值范围
- 数据项取值是有取值范围限制的,这种限制可以在某种程度上减轻应用程序逻辑查错的负担。例如,在职工基本信息中,根据习惯职工年龄一般为正整数,在输入年龄时,如果不小心输入为负数或者是小数时,数据库系统就会自动提示出错,不充许数据输入。
- 数据项取值范围一般在数据字典的数据项词条中说明。
- 关键字
- 关键字是能够唯一标识一个实体的一个或一个以上的无冗余数据项(或数据结构)。关键字在数据库设计中也称为主码,没有两个实体具有相同关键字。如果关键字是由一组数据项(或数据结构)组成,则其中不能含有多余的数据项(或数据结构)。例如,在学生基本信息中,学号就是关键字,学号确定后,学生的其他数据项的值也就确定了。而且,虽然姓名+学号也能唯一确定一个学生,但其中的姓名是多余的。
- 关键字一般通过分析描述实体的各数据项,从这些数据项中挑选一个或多个作为关键字。因此,关键字可能不止一个。例如,也可以用公民身份证号码作为学生基本信息的关键字。
- 数据关联
- 数据关联是指两个或多个对象之间的联系。这里,对象是指数据项、数据结构、基本表、视图。数据关联分为算术关联、集合关联、逻辑关联三类。
- 算术关联:算术关联是通过算术运算符把两个或多个对象联系起来。常用的算术运算有4种,它们是加、减、乘、除。例如,金额=单价×数量。
- 集合关联:集合关联是通过集合运算符把两个或多个对象联系起来。常用的集合运算有并、交、包含、属于等。
- 逻辑关联:逻辑关联是通过逻辑运算符把两个或多个对象联系起来。常用的逻辑运算有与、或、非、大于、等于、小于等。
数据安全性分析
-
数据库的安全性和计算机系统的安全性,包括计算机硬件、操作系统、网络系统等的安全性、是紧密联系、相互支持的,因此在讨论数据库的安全性之前首先讨论计算机系统安全性的一般问题。
-
数据库安全性分析主要关心数据库用户及其权限、数据加密需求、病毒防护需求、防非法访问需求。
-
数据安全的概念
数据库的安全性是指保护数据库,以防止不合法的使用造成的数据泄密、更改或破坏。不合法的使用是指不具有数据操纵权限的用户进行了越权的数据操纵。DBMS通过种种防范措施防止用户越权使用数据库,其安全保护措施是否有效是数据库系统的主要性能指标之一。
-
数据访问权限
- 数据访问权限指数据定义、数据操纵、数据控制、数据组织与存取、数据库建立与维护、运行管理等的权限。在数据库系统开发中,可以通过视图、SQL命令、数据库应用系统模块功能等来控制用户数据访问权限。数据访问权限分析一般要结合数据库应用系统功能分析进行,并在数据字典中适当体现出来。
- 数据库系统的用户、用户组和角色及其数据访问权限的合理设置是保障数据安全的重要手段。
数据库系统的用户与角色
-
用户 数据库系统的用户分为两类:DBMS用户、数据库应用系统用户。
- DBMS用户是通过直接登录DBMS、并在DBMS中完成数据定义、数据操纵、数据控制、数据库建立与维护等各种DBMS操作的用户,如SQL Server中的dbo。
- 数据库应用系统用户是通过登录数据库应用系统、使用数据库应用系统中的功能模块来完成数据访问的用户。
- 在数据库系统开发中,数据库应用系统用户可用外部实体来描述。
-
用户组 用户组也称为权限组,就是把若干权限相同的用户编为一组。在数据库应用系统中,系统管理员需要为每个用户分配权限。如果采取为每个用户逐一分配权限的方式,则权限分配是一件繁琐、耗时的工作。利用用户组的概念,系统管理员可以把权限相同的用户设为一组,并为该组赋予所需的各种权限;当为某用户分配权限时,如果该用户属于一个存在的用户组,系统管理员就可以采用把该用户设为这个存在用户组等方式把该组权限赋给该用户。
-
角色 角色就是用户的身份。例如,在学生成绩管理系统中,通过分析,可以获得个人成绩查询角色、教师评价角色、成绩填写角色、成绩修改角色、学籍管理审批角色等。
- 角色本质上是一个权限组,因此有时把角色和用户组当作一个概念。
- 在数据库系统开发中,角色可用外部实体来描述。
- 可以在系统开发阶段由系统开发人员定义用户组、角色并设置它们的权限,也可以在系统运行阶段由系统管理员定义用户组、角色并设置它们的权限。用户的定义与权限设置一般在系统运行阶段由系统管理员完成。
-
DBMS的角色与用户
下面以SQL Server 2012为例,分析DBMS的角色与用户权限。SQL Server 2012的角色 SQL Server 2012的角色分为两类:服务器级角色、数据库级角色。
- 服务器级角色。SQL Server服务器级角色管理SQL Server服务器上的权限,其权限作用域为服务器范围。
- 服务器级角色又分为固定服务器角色、用户定义的服务器角色两类。固定服务器角色由SQL Server自动提供,拥有完成常见任务的基本权限,但其权限无法更改。用户定义的服务器角色由用户自行创建和分配权限。
- 数据库级角色。数据库级角色管理数据库中的权限,其作用域为数据库范围。数据库级角色又分为固定数据库角色、用户定义的数据库角色两类。固定数据库角色等由SQL Server自动提供,拥有完成常见任务的基本权限,但其权限无法修改。用户定义的数据库角色由用户自行创建和分配权限。
- 固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。SQL Server 提供了9种固定数据库角色,如表2-5所示。
- SQL Server 2012的登录名 SQL Server 2012的登录名是连接 SQL Server 实例的个人或进程的标识,其作用域是整个数据库引擎。要使用SQL Server,必须先用登录名登录SQL Server服务器。可以基于 Windows主体(所谓Windows 主体是指Windows用户及其角色,如域用户、本地用户、Windows域组)创建登录名,或者也可创建一个并非基于 Windows 主体的登录名(如SQL Server 登录名)。
- SQL Server 2012的数据库用户 SQL Server 2012的数据库用户是连接到数据库的登录名标识,其作用域是数据库。数据库用户允许使用与登录名相同的名称。由于数据库中的权限是向数据库用户而不是登录名授予和拒绝授予的,登录名必须映射到数据库用户才能连接到数据库。一个登录名可以作为不同用户映射到不同的数据库,但每个数据库只能有一个数据库用户与之对应。需要指出的是,如果在数据库中启用了guest 用户,未映射到数据库用户的登录名可作为guest 用户进入该数据库。guest 用户通常处于禁用状态,除非有必要,否则不要启用 guest 用户。
- 服务器级角色。SQL Server服务器级角色管理SQL Server服务器上的权限,其权限作用域为服务器范围。
角色名称 | 说明 |
---|---|
sysadmin | 角色的成员可以在服务器中执行任何活动 |
serveradmin | 角色的成员可以更改服务器范围内的配置选项并关闭服务器 |
securityadmin | 角色的成员管理登录名及其属性;可以授权、拒绝和撤销服务器级权限;可以授权、拒绝和撤销数据库级权限 |
processadmin | 角色的成员可以终止在 SQL Server 实例中运行的进程 |
setupadmin | 角色的成员可以添加和删除链接服务器。注意, 使用 Management Studio需要 sysadmin 成员资格 |
bulkadmin | 角色的成员可以运行 BULK INSERT 语句 |
diskadmin | 角色的成员管理磁盘文件 |
dbcreator | 角色的成员可以创建、更改、删除和还原任何数据库 |
public | 每个 SQL Server 登录名均拥有public角色 |
-
数据库应用系统数据访问权限分析
可使用从以下几个方面分析数据库应用系统数据访问权限:
- 分析数据项的填写、修改、清除、查询权限。
- 分析元组的插入、修改、删除、查询、统计和排序权限。
- 分析数据库、基本表、视图、索引、角色等对象的操作权限,包括建立、修改、删除权限。
- 分析数据库应用系统模块功能的操作权限。
- 分析用户是否拥有把权限授予其他用户等权限。
数据加密
-
我们经常需要一种措施来保护我们的数据,防止被一些怀有不良用心的人所看到或者破坏。在竞争激烈的大公司中,工业间谍经常会获取对方的情报。因此,在客观上就需要一种强有力的安全措施来保护机密数据不被窃取或篡改。
-
数据加密是防止数据库中数据在存储和传输中失密的有效手段。加密的基本思想是根据一定的算法将原始数据(术语为明文,Plain Text)变换为不可直接识别的格式(术语为密文,Cipher Text),从而使得不知道解密算法的人无法获知数据的内容。加密方法主要有两种:
-
替换方法 该方法使用密钥(Encryption Key)将明文中的每个字符转换为密文中的字符。
-
置换方法 该方法仅将明文的字符按不同的顺序重新排列。
单独使用这两种方法的任意一种都是不够安全的。但是将这两种方法结合起来就能提供相当高的安全程度。
-
并发处理分析
-
所谓并发简单地说就是两件事情的发生或处理是同时发生在时间上是重叠的。例如,在网络环境下,两个用户同时修改服务器上的一个文档就是一种并发现象。并发处理分析的目的在于发现并发现象,并在数据设计中要力求避免或消除之。
-
数据库并发处理分析的主要内容有:
-
分析数据定义时产生的并发处理需求
主要任务是分析基本表、视图和索引在定义、修改或删除期间有哪些数据定义、查询和更新需求。数据定义时产生的并发现象在数据库系统中是常见的。例如,如果甲用户正在读取某个基本表的数据,乙用户却试图删除这个基本表,那么甲用户读的数据将是不完整的,严重时可能导致甲用户的计算机系统崩溃。
-
分析数据操纵时产生的并发处理需求
主要任务是分析数据更新期间有哪些数据查询和更新需求,以便数据库设计时消除一个用户在读取数据、另一个用户却试图修改或删除数据等现象发生。
-
分析数据库维护时产生的并发处理需求
主要任务是分析数据库维护期间有哪些数据定义、数据查询和更新需求。在日常生活中,我们经常会发现在数据维护期间用户仍然在访问数据库的现象。例如,用户发送电子邮件时刚好碰到邮件服务器正对电子邮件服务器数据库进行维护,造成用户的电子邮件很长时间不能成功发送。
-
数据库性能分析
-
数据库性能分析的任务是分析数据库容量、吞吐量、精度、响应时间、存储方式、可靠性、可扩展性、可维护性等数据库性能需求。通过数据库性能分析,可以比较准确地了解数据库的性能,为选择DBMS和硬件系统(如CPU、硬盘)提供依据,最终目的是用较小的代价设计和实现满足预期性能要求的数据库。
-
容量:数据库容量是数据库能够存储的数据量。数据库需求分析人员通过分析数据字典,根据数据项的长度、数据存储的数据量等因素和数据库的预期运行时间,估算数据库容量。
-
吞吐量:吞吐量是单位时间能够处理的数据量。数据库需求分析人员通过分析数据字典,根据数据项的长度、数据流的流量、数据存储的数据量和存取频度等因素,估算数据库吞吐量。
-
精度:精度是观测结果、计算值或估计值与真值(或被认为是真值)之间的接近程度。数据库需求分析人员首先要认真评估数据字典中的数据项的数据类型和精度是否合理,然后为数据项确定合适的精度,必要时修改数据字典。需要指出的是,并非精度越高越好,因为精度高的数据在空间和时间方面的开销一般也大。
-
响应时间:响应时间是从用户向计算机发出处理请求开始,经过处理直到计算机输出最终结果为止的时间间隔。例如,在学生成绩管理系统中,通过计算机查询考试成绩的响应时间是从发出查询要求开始,经过处理直到输出查询结果为止的时间。
- 数据库响应时间指数据插入、修改、删除、查询、统计和排序的响应时间,也包括数据库备份、恢复等数据维护的响应时间。数据库响应时间是DBMS、数据库系统硬件选择和设计的重要依据。显然,响应时间越少,处理速度越快。
- 不同的应用系统对响应时间的需求是不同的。例如,网上股票实时交易系统就要求较少的响应时间,否则会给用户带来经济损失。
-
存储方式
- 在系统刚刚建立初期,用户的数据规模并不大,存储需求也很简单,只是要把相关数据存放在存储设备上即可,但是当数据量非常大时,数据的存储方式对数据库性能影响较大,过于频繁的I/O操作将严重降低系统响应时间。
- 跨越物理存储设备来控制数据库、表和索引的存放。这种做法可以均衡负载,因此可提高数据
- 一般来说,大型的、被频繁操作的表应该分区,存放在几个存储设备上。
-
可靠性
对于数据库来说,可靠性是指系统能够在一定时间内不间断地、低故障率地为各种应用提供数据服务。为了保证数据库系统的可靠性,应在一开始就确定可靠性和其他质量指标,考虑相应措施。
-
可扩展性
- 可扩展性反映了系统适应变化的能力。在数据库系统开发过程中,变化是司空见惯的事情,如需求、设计的变化、算法的改进等。库性能。
- 如果系统规模很大,问题很复杂,倘若系统的可扩展性不好,那么该系统就像用卡片造成的房子,抽出或者塞进去一张卡片都有可能使房子倒塌。
-
可维护性
可维护性是反映数据库是否易于维护的性能指标。数据库可维护性分析就是分析数据库有哪些维护需求,以便在数据库设计时引起足够的重视。