DBAS需求分析规范说明书
数据字典包括数据项、数据结构、数据流、数据存储和处理过程五部分
分析结果可表示为数据流图(DFD)或DBAS应支持的各种数据处理事务规范
事务规范包括:
数据需求分析与数据处理需求分析的结果组织在一起,可以构成数据字典文档,该文档也被成为数据规范说明书
应用领域业务规则描述了应用领域中的业务功能、处理流程和步骤
性能指标包括:
影响DBAS性能的主要因素有:
概念设计包括数据库概念模型设计和系统总体设计
需求分析就是对待开发的系统要做什么,完成什么功能的全面描述。
软件产品的下列特性使得需求获取困难重重:
一个计算机应用信息系统的需求分析工作是在系统分析人员与用户不断交互的过程中完成的。
结构化分析与功能建模方法有DFD和IDEF0等
基本特征是抽象和分解
优点:
DFD建模方法,也被称为过程建模和功能建模方法
核心是数据流
自顶向下,逐步细化
基本元素矩形框和箭头
矩形框代表功能活动,写在矩形框中的短语描述功能活动的名称,活动的编号按照要求写在矩形框右下角指定位置
面向对象建模
依据:需求说明书、功能模型、在需求分析阶段收集到的应用领域或问题域的各类报表
构造:信息模型,数据库概念设计说明书
符号:
数据库逻辑设计的任务是把数据库概念设计的结果(ER模型),转换为具体的数据库管理系统支持的数据模型
规则:
通常数据库物理设计并不包括文件和数据库具体的实现细节
需要了解不同文件组织方式、索引技术及其使用方法
索引技术的关键是建立记录域取值到记录的物理地址间的映射关系,这种映射关系被称为索引
在设计和创建索引时,应确保对性能的提高程度大于在存储空间和处理资源方面的代价
在一个文件中查找某个或某些特定文件记录时,需要给出记录应满足的查询条件。这种查询条件形如“文件记录在它的某个或某些记录域/属性上的取值满足…条件”。这些用于数据文件中查找记录的属性或属性集合就是文件查找码。对于存储有关系表数据的数据库文件,该文件的查找码可以是关系表的主码或候选码,也可以是关系表的其他非主属性。
数据库中的数据文件经常采用顺序文件结构,文件的数据记录按照某个特定的查找码值的升序或降序顺序地储存在文件中。
索引文件建立的方法:首先选定数据文件中的某个或某些记录域作为查找码,然后建立起数据记录在查找码上的取值与该记录物理地址间的映射关系,组成索引项。所有索引项作为索引记录存储在索引文件中。索引文件根据某个特定的查找码值的升序或降序存储索引记录,并且也组织为顺序文件。
一个数据文件可以有多个查找码和多个索引文件
几类主要的有序索引及其特点:
基本表1 | 基本表2 | 基本表3 | ||||||||||
I | R | U | D | I | R | U | D | I | R | U | D | |
事务1 | * | * | * | * | * | |||||||
事务2 | * | * | * | * | * | |||||||
事务3 | * | * | * | * | ||||||||
事务4 | * | * | * | * | * |
基本表选择合适的文件结构的原则:
可以根据以下原则决定是否为一个基本表建立索引:
对于基本表可以考虑在下面属性上建立索引:
数据库备份数据、日志文件备份数据用于故障恢复,使用频率低且数据量大,可以存储在磁带中。而应用数据、索引和日志使用频繁,要求响应时间短,必须放在支持直接存取的磁盘存储介质上
对基本表的划分可以依据下面不同原则
派生属性指该属性取值可以根据表中其他属性的取值唯一确定
在数据库物理设计阶段,可以根据实际需要对数据库中某些3NF、BCNF模式考虑是否可以降低其规范化程度,以提高查询效率
数据库配置参数(如允许同时使用数据库的用户数、允许同时打开数据库对象数、数据库初始空间大小),磁盘块使用参数,内存缓存区参数(如缓存区个数和大小),时间片大小,装填因子,锁的大小。
软件体系结构又称软件架构,软件体系结构 = {构件,连接件,约束}
软件设计可分为概要设计和详细设计两大步骤。
概要设计的任务是建立软件系统的总体结构和模块间的关系,定义各功能的接口,设计全局数据库或数据结构,规定设计约束,制定测试计划。
概要设计的要求:良好的总体结构,功能模块间较低的耦合程度和功能模块内较高的内聚度,并尽量降低接口复杂度。
对于大型复杂软件系统,可根据逐步抽象和层次化原则,将概要设计分解为两个步骤:
系统-子系统-模块-子模块
可将上述概要设计第一步称为软件总体设计,第二步称为软件概要设计。整个软件设计过程都由总体设计、概要设计和详细设计三步骤组成。
广义上,DBAS设计包括结构设计、过程设计和数据设计三个方面。
DBAS设计第一步是DBAS概念设计,包括数据库概念模型设计和系统总体设计,概念模型设计属于数据设计范畴,系统总体设计涵盖结构设计,过程设计则由其后的事务和应用程序的概要设计和详细设计完成。此外,数据设计除了数据库设计之外还包括事务和应用程序中的数据结构设计。
DBAS总体设计内容:
两种常见DBAS体系结构
C/S结构将数据库管理功能与数据库应用相分离,将DBMS数据管理功能在客户端和服务器之间进行合理的分布和配置。其中数据库服务器完成DBMS核心功能。而客户端或应用服务器则负责完成用户交互功能,接受用户数据,根据业务规则处理应用任务,生成并向数据库服务器发出数据操作请求,然后从数据库服务器接受数据查询结果并通过客户端反馈给用户。
两层C/S结构的数据库应用系统,其特点:
三层浏览器/服务器(B/S)结构,数据处理功能分解并分布在表示层、功能层和数据层三个层次上,分别由Web浏览器、Web应用服务器和数据库服务器来实现,其特点是:
三层B/S结构将人机交互、应用逻辑处理和数据管理三类功能相互分离,提高了系统的可维护性。
软硬件选型涉及内容包括:
考虑以下因素:
业务流程图
功能角度DBAS系统通常划分四个层次实现
遵循以下原则
高内聚,松耦合
高内聚和松耦合是相互矛盾的,分解程度越粗的系统耦合性越低,分解越细的系统内聚度越高。
原型迭代法
数据库中数据的正确性、一致性和相容性。
常用技术:封锁技术,一段时间禁止某用户对数据对象做某些操作以避免数据不一致的问题
基本的封锁一般包括排他锁(x锁)和共享锁(s锁)两种类型
不可避免带来死锁问题,可以考虑以下原则:
数据库恢复首先要建立冗余数据,然后利用这些冗余数据实施恢复
数据定义语言DDL
创建数据库应该考虑:
应该先测试DBMS的恢复功能,做好数据库转储和恢复工作
统一建模语言
UML的定义由语义和表示法两部分组成。语义用自然语言描述,而表示法定义了UML可视化标准表示符号
UML语义是定义在一个四层(四个抽象级别)建模概念框架中,这四层分别:
视图是对系统的模型在某方面的投影,注重于系统的某个方面
UML中包括五种视图,结构视图、实现视图、行为视图、环境视图、用例视图
UML2.0有十三种不同的图
结构图:类图,对象图,复合结构图,包图,组件图,部署图
行为图:用例图,交互图(顺序图、通信图、交互概述图、时间图)、状态图和活动图
可以并行执行
起始点:指一连串活动的开始点。在一张活动图中,必须有且只有一个起始点。
结束点:指一连串活动的终点。在一张活动图中,可以有多个结束点。
加粗直线为同步条,表示这之后的活动路线可以并行执行,或在其上的所有并行活动执行完毕后,到此转为顺序执行。
用例模型是把满足用户需求的所有功能表示出来的工具。
用例模型由用例、角色、系统三部分组成。
长方框,系统的名字写在方框上或方框里面,方框内部还可以包含该系统中用符号表示的用例。
角色是与系统交互的人或其他实体。所谓“与系统交互”指的是角色从系统中接收消息,或是向系统提交消息。一个角色可以执行多个用例,反过来,一个用例可以被多个角色使用。角色是类,所以它拥有与类相同的关系描述。在用例图中用通用化关系来描述角色之间的行为。
通用化关系是指把某些角色的共同行为抽取出来作为通用行为,这些通用行为构成它们的超类。这样在定义某一具体角色时,仅仅定义其不同的行为。角色之间的通用化关系用带空心三角形(作为箭头)的直线表示,箭头的方向指向超类。
用例代表一个完整的功能,是所有动作的集合。动作是系统的一次操作,如与角色通信、进行计算,在系统内部进行的工作都可以称为动作。
用例用椭圆表示,用例位于系统边界的内部。用例与角色有连接关系,此关系属于关联又称为通信关联。这种关联表明哪种角色能与该用例通信。关联关系是双向的一对一关系,表示不仅角色不仅可以与用例通信。用户也可以与该角色通信,表示方法是一条连接角色和用例的带箭头直线。
用例之间存在关系,包括扩展、使用、组合三种。
属性包括属性的名称、类型和缺省值。
可见性 名称: 类型=缺省值 {约束性}
可见性 名称(参数表):返回类型表达式(约束性)
通常情况下关联是双向的,其图示是连接两个类之间的直线
如果类和类之间的关联是单向的则称为导航关联。导航关联采用实体箭头连接两个类,只有箭头所指的方向上才有这种关联关系。
如果关联上没有角色名,则隐含着用类名作为角色名。
角色具有多重性,表示有多少对象参与该关联。多重性表示参与对象的数目的上下界限制。*代表0到无穷大,“1”是“1…1"的简写,"6…10"表示6到10个对象。没有明确标识关联的重数则为1。
关联类通过一根虚线与关联连接,用于描述关联可能需要记录的一些信息
聚集是一种特殊的关联,它表示类之间整体与部分的关系。部分可以参加多个整体则构成共享聚集,整体拥有部分,部分与整体共存则构成了组成关系。
共享聚集表示为空心菱形,组成表示为实心菱形
人们将具有共同特性的元素抽象成类别,并通过增加其内涵进一步分类。在面向对象方法中前者被称为一般元素、基类元素或父元素,将后者称为特殊元素或子元素
继承关系表示为一头为空心三角形的连线
有两个元素X和Y,如果修改元素X的定义会引起元素Y定义的修改,则称元素Y依赖于元素X
表示同一事物的两种描述之间的关系。对同一事物的两种描述建立在不同的抽象层上。比如定义了某种抽象数据类型,然后将其实现为某种语言中的类,那么抽象定义的类型与用语言实现的类之间就是精化关系,这种情况叫实现,用带空心的三角形的虚线表示。
关系 | 图例 |
---|---|
单向关联 | 单向实线箭头 |
双向关联 | 连接实线 |
共享聚集 | 空心菱形实线箭头 |
组成 | 实心菱形实线箭头 |
关联类 | 连接虚线 |
依赖 | 虚线箭头 |
继承 | 实心三角形虚线箭头 |
精化 | 空心三角形虚线箭头 |
针对每一个特定的用例,如何用类图所规范的对象,来完成用例交付的任务,就必须用顺序图表达。
顺序图有两个坐标轴:纵向表示时间的持续过程,横向表示对象,每一个对象用矩形框表示,纵向的虚线表示对象在序列中的执行情况,称为对象的“生命线”
对象间的通信用对象生命线之间的水平消息线表示,消息线的箭头说明消息的类型,单步、异步、简单
顺序图中后面发生消息应该比前面发生的线画的低一些,以表示他们之间的时间关系
当一个对象销毁时,打一个x标记
通信图是交互图的一种,也称为协作图
顺序图和通信图都描述交互,但是顺序图强调的是时间,通信图强调的是空间
通信图中主要元素基本和顺序图相同,只是在消息的传递上要特别表达消息的传递是由哪一个对象到另外一个对象
对象图被用来描述特定时间点所有对象在系统中的结构,也可以把对象图当成系统在某一时间的快照
对象图是类图的一个实例,对象之间的关系是类之间的关系
当一个对象或某一个事件有非常复杂的状态转换时,可以用状态机图描述这个过程
包图可以表达不同系统的包、命名空间或不同的项目间彼此的关系
包是一种组合机制,把模型元素通过内在的语义连在一起成为一个整体叫包
包通常被称为子系统
包的图示类似书签卡片,由两个长方形组成,小长方形位于大长方形的右上角
包图是表明包与包之间关系的类图
利用活动图作为基础,只是在控制流间连接的UML元素并非活动,而是交互图(包括顺序图、通信图、时间图及交互概述图)
复合结构图最重要的元素是部件,一个部件可以代表某个实体组件,也可以代表一个子系统
部件与部件之间连接关系主要是装配关系,这种关系通过接口沟通。部件与外部部件连接时必须通过端口才能实现,用正方形图示。
在UML中组件表示为一个大方块且在它的左边有两个突出的小方块
部署图又叫配置图,描述系统中硬件和软件的物理配置情况和系统体系结构
总结
top n [percent][with ties]
top n 取前n行
top n percent 取查询结果前n%
with ties 表示包括最后一行取值并列的结果
安全性:保护数据以防止不合法用户故意造成的破坏
完整性:保护数据以防止合法用户无意中造成的破坏
数据库安全控制的目标是保护数据免受意外或故意的丢失、破坏或滥用。
授权是将合法访问数据库或数据库对象的权限授予用户的过程。
认证是一种鉴定用户身份的机制
授权控制有时也被认为是访问控制
将全部实体划分为主体客体两大类
敏感度标记被分为若干级别,例如绝密,秘密,可信和公开
主体的敏感度标记被称为许可证级别,客体的敏感度标记被称为密级
D类最小保护,C类自主保护,B类强制保护,A类验证保护
审计跟踪实质上是一种特殊的文件或数据库,系统在上面自动记录用户对常规数据的所有操作
例1:创建SQL server 身份验证的登录账户
create login SQL_User1 with password = '12345678'
例2:创建Windows身份验证的登录账户,从Windows域账户创建[TEST\Win_User2]登录账户
create login [TEST\Win_User2] from windows
例3:创建SQL server身份验证的登录账户。要求该用户首次连接服务器时必须更改密码
create login SQL_User3 with password = '123456789'
must_change
例4:启用或禁用的登录账户
alter login SQL_User1 enable
例5:修改登录账户的密码
alter login SQL_User1 with password='12345'
例6:更改账户名
alter login SQL_User3 with name = 'NewUser'
例7:删除登录账户
drop login SQL_User2
让登录账户成为数据库用户的操作是映射 。一个登录账户可以映射为多个数据库中的用户。 默认情况下,新建立的数据库只有一个用户dbo,他是数据库的拥有者
例8 使SQL_User2登录账户成为某数据库中的用户,并且用户名同登录名
create user SQL_User2
例9 首先创建名为SQL_JWC且具有密码的SQL Server身份验证的服务器登录名,然后在test数据库中创建与此登录名对应的数据库用户JWC 、
create login SQL_JWC with password='123456'
go
use test
go
create user JWC for login SQL_JWC
go
启用guest用户
grant connect to guest
禁用guest用户
revoke connect to guest
drop user user_name
操作权限 | 使用说明 |
---|---|
select | 允许用户查询数据 |
insert | 允许用户插入数据 |
update | 允许用户修改数据 |
delete | 允许用户删除数据 |
references | 如果用户要插入数据的表上有外键约束,而用户在外键所引用的表上没有select权限,则拥有该权限的用户能够向这样的表插入数据 |
execute | 允许用户具有执行存储过程和标量函数的权限 |
例10授予用户RosaQdm对Address表具有select权限
grant select on Address to RoseQdm
例11