软考学习笔记-数据库工程师第十二章-数据库运行与管理
第十二章 数据库运行与管理
1、数据库系统的运行策略: 从物理环境上保障系统的稳定运行;
从对人员的要求上做保障;
应用数据库的安全性策略;
做好数据库的备份与恢复工作。
2、数据库系统的监控对象和监控方式
监控对象有3个,性能监控、故障监控、安全监控。
监控方式有2种,系统监控和应用程序监控。
3、数据库维护
因为某些原因需要修改数据库的结构,称为数据重构,包括表结构的修改和视图的修改。
视图机制一方面可以实现数据的逻辑独立性,另一方面可以实现数据的安全性。
文档是对系统结构和实现的描述,必须与系统保持调度的一致性。数据库重构过程中的所有修改必须在文档中体现出来。
4、数据库系统的运行统计
系统监控和运行统计是DBA掌握数据库系统运行状态最有效的手段。系统监控用来保障系统的稳定运行,系统统计则用来了解系统性能,作为性能调整的依据。
5、数据库系统的审计,是一种DBMS工具,它记录数据库资源和权限的使用情况。审计是被动的。
6、数据库系统的管理
(1)数据字典的管理:数据字典是存储在数据库中的所有对象信息的知识库,其中存储的数据称为元数据。数据字典是只读的。
(2)数据完整性维护和管理:作用对象有列、行、表3种。列级约束、主码约束和参照完整性约束是在数据库定义过程中定义的,存在数据字典中。更为复杂的约束可以编写触发器程序实现。
因此,由DBMS管理的约束,可通过修改数据库定义完成维护和管理;
由应用程序实现的复杂的完整性约束,要通过分析修改程序(触发器程序)来实现。
(3)数据库的存储管理:数据库中的数据是以文件形式存储在物理存储设备上的,程序通过DBMS完成I/O操作来访问数据。提高系统访问效率的有效手段就是提高I/O操作的效率。使用这样几种手段管理数据的存储,可以有效地提高性能:
1)索引文件和数据文件分开存储,事务日志文件存储在高速设备上;
2)适时修改数据文件和索引文件的页面大小;
3)定期对数据进行排序;
4)增加必要的索引项。
也可以增加计算机内存,引入调整存储设备等外部方式提高系统的访问效率。
(4)数据库备份与恢复的管理:
设定合理的备份周期和备份时间;
把事务日志文件保存在最稳定的存储设备上;
定期在事务日志文件中加入检查点(checkpoint),检查点记录数据库的正确状态点。在数据库恢复过程中,可以反向扫描日志文件找到第一个检查点,执行UNDO、REDO操作。
(5)数据库的并发控制与死锁管理:多用户数据库DBMS都提供并发控制机制。在实际运行过程中,死锁的产生多是因为事务程序的错误引起。管理员需要使用系统监控工具和系统日志,找出频繁产生死锁的事务。分析原因,修改事务程序,减少死锁。
(6)数据库的安全管理:
建立网络安全(防火墙)
操作系统级安全(登录用户管理)
DBMS级安全(访问DB的用户验证密码)
角色和用户授权管理
使用视图和存储过程
使用审计功能
7、数据库系统的性能调整
1)SQL语句的编码检验:通过DBMS提供的监控和统计功能,找出频繁执行的SQL语句并对其进行优化。步骤为,
(1)尽可能地减少多表查询或建立物化视图;
(2)以不相关子查询代替相关子查询;
(3)只检索需要的列;
(4)用带IN的条件子句等价替换OR子句;
(5)经常提交COMMIT,以尽早释放锁。
2)表设计的评价:首先要求关系都能符合3NF或BCNF,然后还要根据实际运行情况对表进行调整。
调整的原则是: 如果频繁地访问涉及的是对两个相关表进行连接操作,则将这两个表合并;
如果频繁地访问只是在表中的一部分字段上进行,则考虑分解表或将该部分单独拿出作为一个表;
对于很少更新的表,引入物化视图。
3)索引的改进:索引的调整原则如下,
如果查询是瓶颈--在关系上新建适当的索引,通常在作为查询条件的属性上建立索引可以提高查询效率;
如果更新是瓶颈--因为每次更新都会重建表上的索引,引起效率的降低,可以考虑删除某些索引;
选择适当的索引类型--比如经常使用范围查询,可以使用B树索引,比散列索引更高效;
将有利于大多数据查询和更新的索引设为聚簇索引。
4)设备的增强:高速的计算机、增加内存、高速网络设备、高速存储设备。
2008年12月28日日曜日
软考学习笔记-数据库工程师第十一章-数据库设计
软考学习笔记-数据库工程师第十一章-数据库设计
第十一章 数据库设计
1、数据库设计概述:数据库设计属于系统设计的范畴。参照软件工程对生命周期的定义,也把数据库设计分为6个步骤:数据库规划、需求收集分析、数据库设计与应用程序设计、实现、测试、运行与维护。
数据库设计:数据库的设计是对用户数据的组织和存储设计;应用程序的设计是在数据库设计的基础上对数据操作及业务实现的设计,包括事务设计和用户界面设计。
实现:依照设计使用DBMS支持的DDL语言实现数据库的定义,用高级程序语言编写应用程序。
2、系统需求分析,是用户和设计人员对数据库应用系统所涉及的内容和功能的理解和描述。
用户对系统的需求包括:数据需求、围绕这些数据的业务处理需求、数据安全性需求、数据完整性需求。
需求分析阶段是以调查和分析为主要手段的,以此获得用户对系统的信息要求和处理要求。
需求分析阶段要完成的主要工作是建立数据字典和数据流图。
需求分析的方法和步骤:使用数据字典描述用户的信息要求,使用数据流图描述业务处理过程。
数据字典包括,数据项、数据结构、数据流、数据存储、处理过程。
数据项:是数据的最小单位,一般包括项名、含义和说明、别名、类型、长度、取值范围及该项与其它项的逻辑关系。如采购单号;
数据结构:是若干有意义的数据项的集合,包括数据结构名、含义和组成成分。如采购单;
数据流:既可以是数据项也可以是数据结构,它表示某一次处理的输入输出数据,包括数据流名、说明、数据来源和去向及需要的数据项和数据结构。如采购计划数据流;
数据存储:加工中需要存储的数据,包括数据存储名、说明、输入数据流、输出数据流、组成成分、数据量、存取方式以及存取频度等。如原材料的价目表,在计算成本和支付采购费用的处理过程中要用到这些数据;
处理过程:是加工处理过程的定义和说明,包括处理名称、输入数据、输出数据、数据存储及响应时间等,如采购支付处理。
------------------------
处理过程名: 采购支付
说明: 根据采购单、原材料价目表,计算出应付原材料采购费用
输入数据: 采购单
数据存储: 原材料价目表
输出数据: 支付费用表
------------------------
3、概念结构设计,是在需求分析的基础上,对用户信息加以分类、聚集和概括,建立信息模型,并依照选定的数据库管理系统软件把它们转换为数据的逻辑结构,再依照软硬件环境,最终实现数据的合理存储。这一过程被称为“数据建模”。
数据建模的过程,可以分为3个阶段:概念结构设计、逻辑结构设计、物理结构设计。
概念结构设计的策略有4种:自顶而下、自底而上、逐步扩张、混合策略。
概念结构设计最常用的方法是1976年由一位华人学者提出的E-R方法。将现实世界的信息结构统一由实体、属性及实体之间的联系来描述。
使用E-R方法时,需要对现实事物抽象并以E-R图的形式描述出来,有3种抽象的方法:
分类, 将现实世界中具有共同特征和行为的事物定义为一种类型。个体与类型关系是is member of
聚集, 定义某一类型所具有的属性。各个属性是所属类型的一个成分,is part of
概括, 由一种已知类型定义新的类型。已知类称为超类,新定义类称为子类,关系为is subset of
4、用E-R方法建立概念模型
步骤:选择局部应用;逐一设计分E-R图;E-R图合并。
注意属性与实体的区别:属性不可再分;属性不能与其它实体发生联系。
分E-R图的合并方法就是将具有相同实体的两个或多个E-R图合而为一。合并过程中可能会发生的冲突有:属性冲突、命名冲突、结构冲突。
对合并后的E-R进行优化的方法有3个:
1)实体类型的合并, 凡具有1:1或1:n联系的实体都可以合并,减少实体个数;
2)冗余属性的消除;
3)冗余联系的消除, 合并后的E-R图中可能会出现实体联系的环状结构,消除直接联系,保留间接联系。
5、逻辑结构设计,是在概念结构设计基础上进行的数据模型设计,可以是层次、网状和关系模型。逻辑结构设计的主要任务是:
确定数据模型;
将E-R图转换为指定的数据模型;
确定完整性约束;
确定用户视图。
6、E-R图向关系模式的转换:
1)实体向关系模式的转换
将E-R图中的实体逐一转换为一个关系模式,其中实体名对应关系模式的名称,实体的属性转换成关系的属性,实体标识符就是关系的码。
2)联系向关系模式的转换
一对一联系的转换:有2种方式。
一种方式,是将联系转换成一个独立的关系模式,关系模式的名称取联系的名称,关系的属性包括该联系所关联的两个实体的码和联系的属性,关系的码可以取自任一方实体的码;
另一种方式,是将联系归并到关联的两个实体的任一方,在一方实体属性集中增加另一方实体的码和该联系的属性,归并后的实体码保持不变。
一对多联系的转换:有2种方式。
第一种方式,是将联系转换成一个独立的关系,关系的名称取联系的名称,关系的属性包括该联系所关联的两个实体的码和联系的属性,关系的码是多方实体的码;
第二种方式,是将联系归并到关联的两个实体的多方,在待归并的多方实体属性集中增加一方实体的码和该联系的属性,归并后的多方实体的码保持不变。
多对多联系的转换:只有1种方式。
那就是将该联系转换成一个独立的关系,关系的名称取联系的名称,关系的属性包括该联系所关联的两个多方实体的码及该联系的属性,关系的码是两个多方实体的码构成的属性组。
7、关系模式的规范化
由E-R图转换得来的初始关系模式可能会有数据冗余或更新异常,需要进一步得进行规范化处理:
1)根据语义确定各关系的数据依赖;
2)根据数据依赖确定关系的范式;
3)对不合要求的范式进行分解,达到3NF、BCNF或4NF;
4)对关系进行评价和修正。因为最规范的关系不一定是最合适的关系。
关系的完整性约束有:主码约束、检查约束、参照性约束
8、数据库的物理设计
物理设计一般应做这些工作:
确定数据分布;
确定存储结构;
确定存取方式。
存储结构是指数据文件中记录之间的物理结构,可以是顺序存储、哈希存储、堆存储或B+树存储等。要根据数据的处理要求和变更频度,选定合理的物理结构。
为提高数据的访问速度,会采用索引技术。同样也要根据数据处理和修改要求,选择恰当的索引字段和类型。
数据的存取方式,是由其存储结构决定了的。
9、数据系统的实现,是根据设计,由开发人员编写代码程序来完成的,包括数据库的操作程序和应用程序。
数据库的操作程序使用SQL语言实现,主要有:DDL、DML、事务处理程序、存储过程、触发器。
嵌入式SQL因为其复杂性,已逐惭被ODBC、ADO接口技术取代。
10、数据库系统的实施方法:
建立实际的数据库结构(DDL)
装载测试数据试运行
装载数据,即卸载实验数据,加载用户数据,正式运行。
11、数据库的保护,是通过数据库的恢复、安全性控制、完整性控制、并发控制,来实现的。
事务,是数据库处理的基本逻辑单位,事物的原子性、一致性、隔离性和持久性(简称ACID)保证了数据更新的正确性。面向数据更新的应用程序的编写,必须以事务为单位进行数据的操作。
数据库的备份与恢复:
数据备份与日志备份是数据库恢复技术的主要依据。数据备份又称为数据转储,分为静态和动态两种方式。日志备份用来记录对数据库系统的更新操作,写日志的次序严格按照并发事务执行的时间次序,必须先写日志后写数据库。
数据库系统中的故障类型:事务故障、系统故障、介质故障。
恢复策略:有2种操作,分别是撤销事务(UNDO)和重做事务。
事务故障的恢复:可以UNDO产生故障的事务,回到该事务执行前的正确状态;
系统故障的恢复:系统故障会导致数据库不一致,恢复方法是先UNDO未完成的事务,再REDO已提交的事务;
介质故障的恢复:需要DBA参与,重装数据库、装入数据库的备份和日志文件的副本,再由系统完成UNDO、REDO操作。
数据库的安全性,是保证数据库不被非法用户访问和破坏的机制。包括:权限机制(GRANT)、视图机制、数据加密。数据加密可以防止数据在存储和传输过程中失密。
数据库的完整性,是保证数据库不被合法用户的错误操作而破坏。完整性是指数据的正确性和相容性。
数据库的并发控制:
1)并发操作,可能会带来数据的不一致性有3种,丢失修改、不可重复读和读脏数据。
2)加锁:控制的手段就是加锁。排他锁(写锁X)和共享锁(读锁S)。X锁将独占数据,数据上有S锁时事务只能加S锁读而不能加X锁写。
3)封锁协议:
一级封锁协议,事务T在修改数据A前必须先对A加X锁,直到事务结束才能释放X锁。这样解决了丢失修改的问题;
二级封锁协议,在一级封锁协议基础上,事务T在读数据A前必须对其加上S锁,读完即释放S锁。这样使得一个事务不能读取其他事物修改中的数据,解决了读脏数据问题;
三级封锁协议,在一级封锁协议基础上,事务T在读数据A前必须对其加上S锁,直到事务T结束才释放S锁。这样使得一个事务在读取数据期间,其他事务只能读取该数据而不能修改,所以解决了不可重复读的问题;
两段锁协议,对任何数据进行读写前都必须加锁,在释放一个封锁后,事务不再申请和获得任何其它封锁。这样可以缩短持锁时间,提高并发性,同时解决了数据的不一致性。
第十一章 数据库设计
1、数据库设计概述:数据库设计属于系统设计的范畴。参照软件工程对生命周期的定义,也把数据库设计分为6个步骤:数据库规划、需求收集分析、数据库设计与应用程序设计、实现、测试、运行与维护。
数据库设计:数据库的设计是对用户数据的组织和存储设计;应用程序的设计是在数据库设计的基础上对数据操作及业务实现的设计,包括事务设计和用户界面设计。
实现:依照设计使用DBMS支持的DDL语言实现数据库的定义,用高级程序语言编写应用程序。
2、系统需求分析,是用户和设计人员对数据库应用系统所涉及的内容和功能的理解和描述。
用户对系统的需求包括:数据需求、围绕这些数据的业务处理需求、数据安全性需求、数据完整性需求。
需求分析阶段是以调查和分析为主要手段的,以此获得用户对系统的信息要求和处理要求。
需求分析阶段要完成的主要工作是建立数据字典和数据流图。
需求分析的方法和步骤:使用数据字典描述用户的信息要求,使用数据流图描述业务处理过程。
数据字典包括,数据项、数据结构、数据流、数据存储、处理过程。
数据项:是数据的最小单位,一般包括项名、含义和说明、别名、类型、长度、取值范围及该项与其它项的逻辑关系。如采购单号;
数据结构:是若干有意义的数据项的集合,包括数据结构名、含义和组成成分。如采购单;
数据流:既可以是数据项也可以是数据结构,它表示某一次处理的输入输出数据,包括数据流名、说明、数据来源和去向及需要的数据项和数据结构。如采购计划数据流;
数据存储:加工中需要存储的数据,包括数据存储名、说明、输入数据流、输出数据流、组成成分、数据量、存取方式以及存取频度等。如原材料的价目表,在计算成本和支付采购费用的处理过程中要用到这些数据;
处理过程:是加工处理过程的定义和说明,包括处理名称、输入数据、输出数据、数据存储及响应时间等,如采购支付处理。
------------------------
处理过程名: 采购支付
说明: 根据采购单、原材料价目表,计算出应付原材料采购费用
输入数据: 采购单
数据存储: 原材料价目表
输出数据: 支付费用表
------------------------
3、概念结构设计,是在需求分析的基础上,对用户信息加以分类、聚集和概括,建立信息模型,并依照选定的数据库管理系统软件把它们转换为数据的逻辑结构,再依照软硬件环境,最终实现数据的合理存储。这一过程被称为“数据建模”。
数据建模的过程,可以分为3个阶段:概念结构设计、逻辑结构设计、物理结构设计。
概念结构设计的策略有4种:自顶而下、自底而上、逐步扩张、混合策略。
概念结构设计最常用的方法是1976年由一位华人学者提出的E-R方法。将现实世界的信息结构统一由实体、属性及实体之间的联系来描述。
使用E-R方法时,需要对现实事物抽象并以E-R图的形式描述出来,有3种抽象的方法:
分类, 将现实世界中具有共同特征和行为的事物定义为一种类型。个体与类型关系是is member of
聚集, 定义某一类型所具有的属性。各个属性是所属类型的一个成分,is part of
概括, 由一种已知类型定义新的类型。已知类称为超类,新定义类称为子类,关系为is subset of
4、用E-R方法建立概念模型
步骤:选择局部应用;逐一设计分E-R图;E-R图合并。
注意属性与实体的区别:属性不可再分;属性不能与其它实体发生联系。
分E-R图的合并方法就是将具有相同实体的两个或多个E-R图合而为一。合并过程中可能会发生的冲突有:属性冲突、命名冲突、结构冲突。
对合并后的E-R进行优化的方法有3个:
1)实体类型的合并, 凡具有1:1或1:n联系的实体都可以合并,减少实体个数;
2)冗余属性的消除;
3)冗余联系的消除, 合并后的E-R图中可能会出现实体联系的环状结构,消除直接联系,保留间接联系。
5、逻辑结构设计,是在概念结构设计基础上进行的数据模型设计,可以是层次、网状和关系模型。逻辑结构设计的主要任务是:
确定数据模型;
将E-R图转换为指定的数据模型;
确定完整性约束;
确定用户视图。
6、E-R图向关系模式的转换:
1)实体向关系模式的转换
将E-R图中的实体逐一转换为一个关系模式,其中实体名对应关系模式的名称,实体的属性转换成关系的属性,实体标识符就是关系的码。
2)联系向关系模式的转换
一对一联系的转换:有2种方式。
一种方式,是将联系转换成一个独立的关系模式,关系模式的名称取联系的名称,关系的属性包括该联系所关联的两个实体的码和联系的属性,关系的码可以取自任一方实体的码;
另一种方式,是将联系归并到关联的两个实体的任一方,在一方实体属性集中增加另一方实体的码和该联系的属性,归并后的实体码保持不变。
一对多联系的转换:有2种方式。
第一种方式,是将联系转换成一个独立的关系,关系的名称取联系的名称,关系的属性包括该联系所关联的两个实体的码和联系的属性,关系的码是多方实体的码;
第二种方式,是将联系归并到关联的两个实体的多方,在待归并的多方实体属性集中增加一方实体的码和该联系的属性,归并后的多方实体的码保持不变。
多对多联系的转换:只有1种方式。
那就是将该联系转换成一个独立的关系,关系的名称取联系的名称,关系的属性包括该联系所关联的两个多方实体的码及该联系的属性,关系的码是两个多方实体的码构成的属性组。
7、关系模式的规范化
由E-R图转换得来的初始关系模式可能会有数据冗余或更新异常,需要进一步得进行规范化处理:
1)根据语义确定各关系的数据依赖;
2)根据数据依赖确定关系的范式;
3)对不合要求的范式进行分解,达到3NF、BCNF或4NF;
4)对关系进行评价和修正。因为最规范的关系不一定是最合适的关系。
关系的完整性约束有:主码约束、检查约束、参照性约束
8、数据库的物理设计
物理设计一般应做这些工作:
确定数据分布;
确定存储结构;
确定存取方式。
存储结构是指数据文件中记录之间的物理结构,可以是顺序存储、哈希存储、堆存储或B+树存储等。要根据数据的处理要求和变更频度,选定合理的物理结构。
为提高数据的访问速度,会采用索引技术。同样也要根据数据处理和修改要求,选择恰当的索引字段和类型。
数据的存取方式,是由其存储结构决定了的。
9、数据系统的实现,是根据设计,由开发人员编写代码程序来完成的,包括数据库的操作程序和应用程序。
数据库的操作程序使用SQL语言实现,主要有:DDL、DML、事务处理程序、存储过程、触发器。
嵌入式SQL因为其复杂性,已逐惭被ODBC、ADO接口技术取代。
10、数据库系统的实施方法:
建立实际的数据库结构(DDL)
装载测试数据试运行
装载数据,即卸载实验数据,加载用户数据,正式运行。
11、数据库的保护,是通过数据库的恢复、安全性控制、完整性控制、并发控制,来实现的。
事务,是数据库处理的基本逻辑单位,事物的原子性、一致性、隔离性和持久性(简称ACID)保证了数据更新的正确性。面向数据更新的应用程序的编写,必须以事务为单位进行数据的操作。
数据库的备份与恢复:
数据备份与日志备份是数据库恢复技术的主要依据。数据备份又称为数据转储,分为静态和动态两种方式。日志备份用来记录对数据库系统的更新操作,写日志的次序严格按照并发事务执行的时间次序,必须先写日志后写数据库。
数据库系统中的故障类型:事务故障、系统故障、介质故障。
恢复策略:有2种操作,分别是撤销事务(UNDO)和重做事务。
事务故障的恢复:可以UNDO产生故障的事务,回到该事务执行前的正确状态;
系统故障的恢复:系统故障会导致数据库不一致,恢复方法是先UNDO未完成的事务,再REDO已提交的事务;
介质故障的恢复:需要DBA参与,重装数据库、装入数据库的备份和日志文件的副本,再由系统完成UNDO、REDO操作。
数据库的安全性,是保证数据库不被非法用户访问和破坏的机制。包括:权限机制(GRANT)、视图机制、数据加密。数据加密可以防止数据在存储和传输过程中失密。
数据库的完整性,是保证数据库不被合法用户的错误操作而破坏。完整性是指数据的正确性和相容性。
数据库的并发控制:
1)并发操作,可能会带来数据的不一致性有3种,丢失修改、不可重复读和读脏数据。
2)加锁:控制的手段就是加锁。排他锁(写锁X)和共享锁(读锁S)。X锁将独占数据,数据上有S锁时事务只能加S锁读而不能加X锁写。
3)封锁协议:
一级封锁协议,事务T在修改数据A前必须先对A加X锁,直到事务结束才能释放X锁。这样解决了丢失修改的问题;
二级封锁协议,在一级封锁协议基础上,事务T在读数据A前必须对其加上S锁,读完即释放S锁。这样使得一个事务不能读取其他事物修改中的数据,解决了读脏数据问题;
三级封锁协议,在一级封锁协议基础上,事务T在读数据A前必须对其加上S锁,直到事务T结束才释放S锁。这样使得一个事务在读取数据期间,其他事务只能读取该数据而不能修改,所以解决了不可重复读的问题;
两段锁协议,对任何数据进行读写前都必须加锁,在释放一个封锁后,事务不再申请和获得任何其它封锁。这样可以缩短持锁时间,提高并发性,同时解决了数据的不一致性。
软考学习笔记-数据库工程师第十章-系统开发与运行
软考学习笔记-数据库工程师第十章-系统开发与运行
第十章 系统开发与运行
1、软件工程知识
软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。其目的是提高软件生产率,提高软件质量,降低软件成本。
在经历60年代的软件开发危机后,人们开展了软件开发模型、开发方法、工具与环境的研究,提出了瀑布模型、深化模型、螺旋模型和喷泉模型等开发模型,出现了面向数据流方法、面向数据结构的方法和面向对象方法等开发方法,以及一批计算机辅助的软件工程工具和环境。
2、软件生存周期:可以分为6个阶段。计划制定、需求分析、设计、编码、测试、运行维护。
计划制定: 确定待开发软件系统的总目标,对其进行可行性分析,并对资源分配,合理安排进度计划。
参加人员有,用户、项目负责人和系统分析员。
该阶段产生的文档有,可行性分析报告和项目计划书。
需求分析: 确定系统功能、性能、数据及界面等要求,从而确定系统的逻辑模型。
参加人员有,用户、项目负责人和系统分析员。
产生的文档有,需求规格说明书。
软件设计: 分为概要设计和详细设计。
概要设计参加人员为,系统分析员和高级程序员;详细设计参加人员有,高级程序员和程序员。
该阶段产生的文档有,设计规格说明书(可以分为概要设计说明书和详细设计说明书)。
编码: 产生的文档为源程序清单。
测试: 文档为测试计划和测试报告。
运行及维护
3、软件开发项目管理基础知识
成本管理:有两种方法。 开发费用 = 人月数 * 每个人月的代价
开发费用 = 源代码行数 * 每行平均费用
风险分析:涉及3个概念,一是关心未来,第二是关系变化,第三是要解决选择问题。风险分析实际包括4个活动:风险识别、风险预测、风险评估和风险控制。
进度管理:有两种安排方式,一是交付日期已确定,另一个是仅确定了大致的日期,最终交付日期由开发部门确定。常用两种图形描述方法。
Gantt甘特图,横轴表示时间,纵轴表示任务,水平线表示任务的进度安排。它可以很好的描述任务间的并行性,但不能反映任务间的依 赖关系,不能确定整个项目的关键;
PERT图, 是一个有向图,图中的箭头表示任务,图中的结点称为事件,表示流入结点的任务的结点和流出结点的任务的开始。仅当流入结点的任务都结束时,该事件才出现,流出结点的任务才能开始。每个任务有一个松驰时间。为了表示任务间的关系,图中还可以加入一些空任务(虚线表示)。一个事件有事件号、出现该事件的最早时刻、最迟时刻。松驰事件为0的任务构成了关键路径。PERT图不能反映任务的并行性。
人员管理:主程序员组、无主程序员组、层次式程序员组。
4、软件开发方法:主要掌握3种方法,分别是结构化方法、面向对象方法和原型法。
结构化方法:是目前最成熟的开发方法之一,分为结构化分析和结构化设计。
面向对象方法:从现实世界中客观存在的事物出发来构造软件系统。软件系统适用的业务范围称作软件的问题领域,把问题领域中事物的特征抽象地描述成类,由类建立的对象作为系统的基本构成单位,它们的内部属性与服务描述了客观存在的事物的静态和动态特征。对象类之间的继承关系、聚集关系、消息和关联反映了问题域中事物之间实际存在的各种关系。
原型法:在获得一组基本需求后,快速地加以实现,随着用户和开发人员对系统理解的加深而不断进行补充和细化,是一种动态定义技术。
5、软件开发环境:是指支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成。环境集成机制为工具集成和软件开发、维护及管理提供统一的支持,通常包括数据集成、控制集成和界面集成。有几个特征,环境的服务是集成的;环境的服务可用于各种软件开发活动;环境应支持小组工作方式。
6、ISO/IEC9126软件质量模型
由3个层次组成,分别是:质量特性--质量子特性--量度指标。
质量特性(质量子特性):
功能性(适合性、准确性、互用性、依从性、安全性)
可靠性(成熟性、容错性、易恢复性)
易使用性(易理解性、易学性、易操作性)
效率 (时间特性、资源特性)
可维护性(易分析性、易改变性、稳定性、易测试性)
可移值性(适应性、易安装性、一致性、易替换性)
MC Call软件质量模型,从软件产品的运行、修正和转移3个方面确定了11个质量特性。
产品运行(正确性、可靠性、易使用性、效率、完整性)
产品修正(可维护性、灵活性、可测试性)
产品转移(可移值性、复用性、互用性)
7、软件质量保证:是指为提高软件质量而进行的有计划、有组织的活动。
软件质量保证包括的7个主要活动相关的任务:应用技术方法、进行正式的技术评审、软件测试、标准的实施、控制变量、量度、记录保存和报告。
8、软件过程能力评估
软件产品的质量取决于软件开发过程。
软件过程评估,是软件改进和软件能力评价的前提。
软件过程评估的意义:是软件过程改进的需要。软件过程不断改进是软件工程的基本原理之一;软件过程改进是软件生存周期的基本过程之一。
是降低软件风险的需要。
软件能力成熟度模型CMM:是对软件组织进化阶段的描述。分为5个成熟度级别,初始级-可重复级-已定义级-已管理级-优化级。比较有名的一个基于CMM模型的产品是成熟度调查表,可以用于一个机构软件过程实力、弱点和风险。
8、系统分析的目的和任务:对现行系统做进一步的详细调查,将调查所得到的文档资料集中,对组织内部整体管理善和信息处理过程进行分析,为系统开发提供所需资料,并提交系统方案说明书。
系统分析的主要步骤是:由现实系统得出物理模型--抽象出逻辑模型--优化出新的逻辑模型--逻辑模型具体化,得到新系统的物理模型。最终编写系统方案说明书。
9、结构化分析方法:采用“自顶向下、逐层分解”的开发策略。
数据流程图DFD:在逻辑上描述系统的功能、输入、输出和数据存储。DFD的基本成分有,数据流、加工、数据存储、外部实体。它们各有特定的图形表示。
分层数据流图的画法: 1)画系统的输入和输出; --称为顶层图
2)画系统的内部,将顶层图的加工分解成若干个加工,并用数据流连接; --称为0层图
确定加工的方法:在数据流的组成或值发生变化的地方应画一个加工;也可根据系统功能确定加工。
确定数据流方法:用户把若干个数据看作一个单位来处理时,可把这些数据看成是一个数据流。
3)画加工的内部;
4)重复第3步的分解过程至所有的加工都足够简单。
对图和加工进行编号: 顶图不必编号;
0层图只有一张,图中的加工号可以是0.1, 0.2, ...或是1, 2, ..
子图号就是父图中被分解的加工号
子图中的加工号同样由图号、圆点和序号组成
注意分析教材513页的实例:某考务处理系统有如下功能:对考生送来的报名单进行检查;
对合格的报名单进行检查;
对阅卷站送来的成绩清单进行检查,并根据考试中心指定的合格标准审定合格者;
制作考生通知单送给考生;
生成各种报表。
画图中应注意的问题:适当地为数据流、加工、数据存储及外部实体命名;
画数据流而不是控制流;
一个加工的输出数据流不应与输入数据流同名;
允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出数据流流向两个不同的加工;
保持父图与子图平衡;
在自顶而下的分析过程中,如果一个数据存储首次出现时只与一个加工有关,那么可以把它作为内部文件而不必画出
保持数据守恒,即一个加工的输出数据流中的数据必须直接从该加工的输入数据流中获得或产生;
每个加工都必须有输入、输出数据流;
在整套数据流图中,每个数据存储都必须有读的数据流和写的数据流。
数据词典DD:就是为数据流图中的每个数据流、文件、加工,以及更细节的数据项做出说明。其中对加工的说明称为“小说明”或“加工逻辑说明”。常用的加工逻辑说明方法有3种:结构化语言、判定表和判定树。结构化语言分为内外两层,外层有严格的语法,而内层语法灵活,接近于自然语言。
10、统一建模语言UML:它提供了9种基本元素的图形,分别是:类图、对象图、用例图、序列图、协作图、状态图(活动图、构件图、部署图)。
UML由3个要素构成:UML的基本构造块、支配这些构造块如何放置在一起的规则、运用于整个语言的一些公共机制。
在UML提供的图中,可以采用类图,对逻辑数据库模式建模;状态图,用于接口、类和协作的行为建模,并强调对象行为的事件顺序;活动图,用于系统的功能建模,并具强调对象间的控制流。
11、系统分析报告:数据流图、数据字典和加工说明应该成为系统分析报告的主体。并且一份完整的系统分析报告应该包括如下内容。
组织情况概述
现行系统概述
系统逻辑模型
新系统在各个业务处理环节拟采用的管理方法、算法或模型
与新系统相配套的管理制度和运行体制的建立
系统设计和实施的初步计划
用户领导审批意见
12、系统设计的目的和任务:主要目的是为系统制定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理使用种种资源,最终形成系统的详细设计方案。
系统设计的任务分为两个步骤:首选是把总任务分解为许多基本的、具体的任务。合理地组织这些具体任务可以构成总任务,称为总体结构设计,也称为概要结构设计; 其次是为各个具体任务选择适当的技术手段和处理方法,即详细设计。
系统总体结构设计原则:分解-协调原则
自顶而下原则
信息隐蔽、抽象原则
一致性原则
明确性原则
模块间耦合尽可能小,模块内组合尽可能紧凑
模块的扇入系数和扇出系数要合理
模块的规模要适当
模块化设计: 模块是组成系统的基本单位,应该具备4个元素,分别是,输入和输出、处理功能、内部数据、程序代码。
模块结构图, 是采用HIPO图(分层输入-处理-输出)形式绘制而成的框图。它主要关心模块的外部属性,即上下级模块、同级模块之间的数据传递和调用关系。它主要由5种基本符号表示:模块、调用、数据、控制和转接。
存储设计:首先要解决数据的整体结构设计,然后要确定数据资源分布和安全保密属性。
13、系统详细设计
代码设计
输出设计 --确定输出内容、选择输出设备与介质、确定输出格式
输入设计 --输入原则:最小量、简单性、早检验、少转换
处理过程设计 --总体结构设计将系统分解成许多模块,并决定每个模块的外部特征,即功能和界面。计算机处理过程的设计则是要确定每个模块的内部特征,包括局部的数据组织、控制流、每一步的具体加工要求及实施细节等。
处理过程的关键是,用一种合适的表达方法来描述每个模块的执行过程。常用的描述方式有图形、语言和表格3类。例如,程序流图、盒图NS、形式语言、决策树、决策表。盒图就是用一个盒子表示一个步骤,可以嵌套,只能从上头进入下头输出,因此限制了控制转移,保证了程序的良好结构。
用户界面设计 --包括菜单方式、会话方式、操作提示以及操作权限管理方式等。权限管理一般是通过入网口令和建网时定义该节点级别来实现的。
安全控制设计 --包括数据处理和环境两方面
系统设计说明书
一份完整的系统设计说明书应包括:
1)引言
背景--摘要--工作条件/限制--参考和引用资料--专门术语定义
2)系统总体设计方案
模块设计--代码设计--输入设计--输出设计--数据库设计说明--模型库及方法库设计--网络设计--安全保密设计--实施方案说明书。
从系统调查、系统分析到系统设计是信息系统开发的主要工作,它们的工作量应占到总开发量的70%。
14、系统实施的任务: 按总体设计方案购置和安装计算机网络系统;
软件准备--其中编写程序是一个重要任务;
人力培训;
数据准备;
试运行。
程序设计:主要依据是系统设计阶段的HIPO图、数据库结构和编码设计。
结构化程序设计方法:适用于某些过程不规范、模块划分不细或有特殊业务处理需要模块程序量较大时。主要强调3点规则:模块内部程序各部分要按自顶向下的结构划分;各程序部分应按功能组合;各程序间联系尽量使用调用子程序实现。
快速原型式方法:首先将HIPO图中具有普遍性的功能模块集中实现,构造系统原型,再对一些特定的功能和模块进行补充。
面向对象的程序设计方法:OOD?
15、软件测试方法:分为人工测试和机器测试。
人工测试,又称为代码审查。
机器测试,分为黑盒测试、白盒测试。
黑盒测试--也称为功能测试,主要测试软件的外部特性。
白盒测试--也称为结构测试,根据程序内部结构、逻辑,以程序的路径和过程进行测试。
软件测试步骤:可以分为4步,如下
1)单元测试,即模块测试
2)组装测试,即集成测试。又分为非增量式集成和增量式集成。前者可以对模块进行并行测试,后者使测试更彻底。
3)确认测试,进一步检查软件的功能和性能是否与用户要求的一致。以系统方案说明书为基础,检查软件有效性。
确认测试首先要进行有效性测试以及软件配置审查,然后进行验收测试和安装测试,最后经各部门认可后交付使用。
4)系统测试,将已经确认的软件、硬件、外设及网络结合起来,进行系统的各种组装测试和确定测试。
调试:试探法、回溯法、对分查找法、归纳法、演绎法。
16、系统转换
实际运行,是对系统最好的检验和测试方法。这个阶段的工作有:
对系统进行初始化、输入各原始数据记录;
记录系统运行数据和状况;
核对新、老系统的输出结果;
考察输入方式(方便、效率、误操作)
测试响应速度
系统转换方式:直接转换、并行转换、分段转换。
17、系统维护,系统的可维护性可以定义性的定义为维护人员理解、改正、改动和改进这个软件的难易程序。
系统可维护性的评价指标:可理解性、可测试性、可修改性。
文档,是软件可维护性的决定因素。
系统维护主要包括硬件设备的维护、应用软件的维护和数据的维护。
18、系统评价,分为广义和狭义两种。广义的评价是指从系统开发的开始到结束的每一阶段都需要进行评价。狭义的评价是指在系统建成并投入运行之后进行的全面和综合的评价。
从总体上可以将广义评价分为立项评价、中期评价、结项评价。
19、系统运行管理
运行管理制度:包括种类机房安全运行管理制度,和信息系统的其他管理制度。
日常运行管理内容:包括系统运行情况记录、审讯追踪、审查应急措施落实、系统资源管理、软件及文档管理
第十章 系统开发与运行
1、软件工程知识
软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。其目的是提高软件生产率,提高软件质量,降低软件成本。
在经历60年代的软件开发危机后,人们开展了软件开发模型、开发方法、工具与环境的研究,提出了瀑布模型、深化模型、螺旋模型和喷泉模型等开发模型,出现了面向数据流方法、面向数据结构的方法和面向对象方法等开发方法,以及一批计算机辅助的软件工程工具和环境。
2、软件生存周期:可以分为6个阶段。计划制定、需求分析、设计、编码、测试、运行维护。
计划制定: 确定待开发软件系统的总目标,对其进行可行性分析,并对资源分配,合理安排进度计划。
参加人员有,用户、项目负责人和系统分析员。
该阶段产生的文档有,可行性分析报告和项目计划书。
需求分析: 确定系统功能、性能、数据及界面等要求,从而确定系统的逻辑模型。
参加人员有,用户、项目负责人和系统分析员。
产生的文档有,需求规格说明书。
软件设计: 分为概要设计和详细设计。
概要设计参加人员为,系统分析员和高级程序员;详细设计参加人员有,高级程序员和程序员。
该阶段产生的文档有,设计规格说明书(可以分为概要设计说明书和详细设计说明书)。
编码: 产生的文档为源程序清单。
测试: 文档为测试计划和测试报告。
运行及维护
3、软件开发项目管理基础知识
成本管理:有两种方法。 开发费用 = 人月数 * 每个人月的代价
开发费用 = 源代码行数 * 每行平均费用
风险分析:涉及3个概念,一是关心未来,第二是关系变化,第三是要解决选择问题。风险分析实际包括4个活动:风险识别、风险预测、风险评估和风险控制。
进度管理:有两种安排方式,一是交付日期已确定,另一个是仅确定了大致的日期,最终交付日期由开发部门确定。常用两种图形描述方法。
Gantt甘特图,横轴表示时间,纵轴表示任务,水平线表示任务的进度安排。它可以很好的描述任务间的并行性,但不能反映任务间的依 赖关系,不能确定整个项目的关键;
PERT图, 是一个有向图,图中的箭头表示任务,图中的结点称为事件,表示流入结点的任务的结点和流出结点的任务的开始。仅当流入结点的任务都结束时,该事件才出现,流出结点的任务才能开始。每个任务有一个松驰时间。为了表示任务间的关系,图中还可以加入一些空任务(虚线表示)。一个事件有事件号、出现该事件的最早时刻、最迟时刻。松驰事件为0的任务构成了关键路径。PERT图不能反映任务的并行性。
人员管理:主程序员组、无主程序员组、层次式程序员组。
4、软件开发方法:主要掌握3种方法,分别是结构化方法、面向对象方法和原型法。
结构化方法:是目前最成熟的开发方法之一,分为结构化分析和结构化设计。
面向对象方法:从现实世界中客观存在的事物出发来构造软件系统。软件系统适用的业务范围称作软件的问题领域,把问题领域中事物的特征抽象地描述成类,由类建立的对象作为系统的基本构成单位,它们的内部属性与服务描述了客观存在的事物的静态和动态特征。对象类之间的继承关系、聚集关系、消息和关联反映了问题域中事物之间实际存在的各种关系。
原型法:在获得一组基本需求后,快速地加以实现,随着用户和开发人员对系统理解的加深而不断进行补充和细化,是一种动态定义技术。
5、软件开发环境:是指支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成。环境集成机制为工具集成和软件开发、维护及管理提供统一的支持,通常包括数据集成、控制集成和界面集成。有几个特征,环境的服务是集成的;环境的服务可用于各种软件开发活动;环境应支持小组工作方式。
6、ISO/IEC9126软件质量模型
由3个层次组成,分别是:质量特性--质量子特性--量度指标。
质量特性(质量子特性):
功能性(适合性、准确性、互用性、依从性、安全性)
可靠性(成熟性、容错性、易恢复性)
易使用性(易理解性、易学性、易操作性)
效率 (时间特性、资源特性)
可维护性(易分析性、易改变性、稳定性、易测试性)
可移值性(适应性、易安装性、一致性、易替换性)
MC Call软件质量模型,从软件产品的运行、修正和转移3个方面确定了11个质量特性。
产品运行(正确性、可靠性、易使用性、效率、完整性)
产品修正(可维护性、灵活性、可测试性)
产品转移(可移值性、复用性、互用性)
7、软件质量保证:是指为提高软件质量而进行的有计划、有组织的活动。
软件质量保证包括的7个主要活动相关的任务:应用技术方法、进行正式的技术评审、软件测试、标准的实施、控制变量、量度、记录保存和报告。
8、软件过程能力评估
软件产品的质量取决于软件开发过程。
软件过程评估,是软件改进和软件能力评价的前提。
软件过程评估的意义:是软件过程改进的需要。软件过程不断改进是软件工程的基本原理之一;软件过程改进是软件生存周期的基本过程之一。
是降低软件风险的需要。
软件能力成熟度模型CMM:是对软件组织进化阶段的描述。分为5个成熟度级别,初始级-可重复级-已定义级-已管理级-优化级。比较有名的一个基于CMM模型的产品是成熟度调查表,可以用于一个机构软件过程实力、弱点和风险。
8、系统分析的目的和任务:对现行系统做进一步的详细调查,将调查所得到的文档资料集中,对组织内部整体管理善和信息处理过程进行分析,为系统开发提供所需资料,并提交系统方案说明书。
系统分析的主要步骤是:由现实系统得出物理模型--抽象出逻辑模型--优化出新的逻辑模型--逻辑模型具体化,得到新系统的物理模型。最终编写系统方案说明书。
9、结构化分析方法:采用“自顶向下、逐层分解”的开发策略。
数据流程图DFD:在逻辑上描述系统的功能、输入、输出和数据存储。DFD的基本成分有,数据流、加工、数据存储、外部实体。它们各有特定的图形表示。
分层数据流图的画法: 1)画系统的输入和输出; --称为顶层图
2)画系统的内部,将顶层图的加工分解成若干个加工,并用数据流连接; --称为0层图
确定加工的方法:在数据流的组成或值发生变化的地方应画一个加工;也可根据系统功能确定加工。
确定数据流方法:用户把若干个数据看作一个单位来处理时,可把这些数据看成是一个数据流。
3)画加工的内部;
4)重复第3步的分解过程至所有的加工都足够简单。
对图和加工进行编号: 顶图不必编号;
0层图只有一张,图中的加工号可以是0.1, 0.2, ...或是1, 2, ..
子图号就是父图中被分解的加工号
子图中的加工号同样由图号、圆点和序号组成
注意分析教材513页的实例:某考务处理系统有如下功能:对考生送来的报名单进行检查;
对合格的报名单进行检查;
对阅卷站送来的成绩清单进行检查,并根据考试中心指定的合格标准审定合格者;
制作考生通知单送给考生;
生成各种报表。
画图中应注意的问题:适当地为数据流、加工、数据存储及外部实体命名;
画数据流而不是控制流;
一个加工的输出数据流不应与输入数据流同名;
允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出数据流流向两个不同的加工;
保持父图与子图平衡;
在自顶而下的分析过程中,如果一个数据存储首次出现时只与一个加工有关,那么可以把它作为内部文件而不必画出
保持数据守恒,即一个加工的输出数据流中的数据必须直接从该加工的输入数据流中获得或产生;
每个加工都必须有输入、输出数据流;
在整套数据流图中,每个数据存储都必须有读的数据流和写的数据流。
数据词典DD:就是为数据流图中的每个数据流、文件、加工,以及更细节的数据项做出说明。其中对加工的说明称为“小说明”或“加工逻辑说明”。常用的加工逻辑说明方法有3种:结构化语言、判定表和判定树。结构化语言分为内外两层,外层有严格的语法,而内层语法灵活,接近于自然语言。
10、统一建模语言UML:它提供了9种基本元素的图形,分别是:类图、对象图、用例图、序列图、协作图、状态图(活动图、构件图、部署图)。
UML由3个要素构成:UML的基本构造块、支配这些构造块如何放置在一起的规则、运用于整个语言的一些公共机制。
在UML提供的图中,可以采用类图,对逻辑数据库模式建模;状态图,用于接口、类和协作的行为建模,并强调对象行为的事件顺序;活动图,用于系统的功能建模,并具强调对象间的控制流。
11、系统分析报告:数据流图、数据字典和加工说明应该成为系统分析报告的主体。并且一份完整的系统分析报告应该包括如下内容。
组织情况概述
现行系统概述
系统逻辑模型
新系统在各个业务处理环节拟采用的管理方法、算法或模型
与新系统相配套的管理制度和运行体制的建立
系统设计和实施的初步计划
用户领导审批意见
12、系统设计的目的和任务:主要目的是为系统制定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理使用种种资源,最终形成系统的详细设计方案。
系统设计的任务分为两个步骤:首选是把总任务分解为许多基本的、具体的任务。合理地组织这些具体任务可以构成总任务,称为总体结构设计,也称为概要结构设计; 其次是为各个具体任务选择适当的技术手段和处理方法,即详细设计。
系统总体结构设计原则:分解-协调原则
自顶而下原则
信息隐蔽、抽象原则
一致性原则
明确性原则
模块间耦合尽可能小,模块内组合尽可能紧凑
模块的扇入系数和扇出系数要合理
模块的规模要适当
模块化设计: 模块是组成系统的基本单位,应该具备4个元素,分别是,输入和输出、处理功能、内部数据、程序代码。
模块结构图, 是采用HIPO图(分层输入-处理-输出)形式绘制而成的框图。它主要关心模块的外部属性,即上下级模块、同级模块之间的数据传递和调用关系。它主要由5种基本符号表示:模块、调用、数据、控制和转接。
存储设计:首先要解决数据的整体结构设计,然后要确定数据资源分布和安全保密属性。
13、系统详细设计
代码设计
输出设计 --确定输出内容、选择输出设备与介质、确定输出格式
输入设计 --输入原则:最小量、简单性、早检验、少转换
处理过程设计 --总体结构设计将系统分解成许多模块,并决定每个模块的外部特征,即功能和界面。计算机处理过程的设计则是要确定每个模块的内部特征,包括局部的数据组织、控制流、每一步的具体加工要求及实施细节等。
处理过程的关键是,用一种合适的表达方法来描述每个模块的执行过程。常用的描述方式有图形、语言和表格3类。例如,程序流图、盒图NS、形式语言、决策树、决策表。盒图就是用一个盒子表示一个步骤,可以嵌套,只能从上头进入下头输出,因此限制了控制转移,保证了程序的良好结构。
用户界面设计 --包括菜单方式、会话方式、操作提示以及操作权限管理方式等。权限管理一般是通过入网口令和建网时定义该节点级别来实现的。
安全控制设计 --包括数据处理和环境两方面
系统设计说明书
一份完整的系统设计说明书应包括:
1)引言
背景--摘要--工作条件/限制--参考和引用资料--专门术语定义
2)系统总体设计方案
模块设计--代码设计--输入设计--输出设计--数据库设计说明--模型库及方法库设计--网络设计--安全保密设计--实施方案说明书。
从系统调查、系统分析到系统设计是信息系统开发的主要工作,它们的工作量应占到总开发量的70%。
14、系统实施的任务: 按总体设计方案购置和安装计算机网络系统;
软件准备--其中编写程序是一个重要任务;
人力培训;
数据准备;
试运行。
程序设计:主要依据是系统设计阶段的HIPO图、数据库结构和编码设计。
结构化程序设计方法:适用于某些过程不规范、模块划分不细或有特殊业务处理需要模块程序量较大时。主要强调3点规则:模块内部程序各部分要按自顶向下的结构划分;各程序部分应按功能组合;各程序间联系尽量使用调用子程序实现。
快速原型式方法:首先将HIPO图中具有普遍性的功能模块集中实现,构造系统原型,再对一些特定的功能和模块进行补充。
面向对象的程序设计方法:OOD?
15、软件测试方法:分为人工测试和机器测试。
人工测试,又称为代码审查。
机器测试,分为黑盒测试、白盒测试。
黑盒测试--也称为功能测试,主要测试软件的外部特性。
白盒测试--也称为结构测试,根据程序内部结构、逻辑,以程序的路径和过程进行测试。
软件测试步骤:可以分为4步,如下
1)单元测试,即模块测试
2)组装测试,即集成测试。又分为非增量式集成和增量式集成。前者可以对模块进行并行测试,后者使测试更彻底。
3)确认测试,进一步检查软件的功能和性能是否与用户要求的一致。以系统方案说明书为基础,检查软件有效性。
确认测试首先要进行有效性测试以及软件配置审查,然后进行验收测试和安装测试,最后经各部门认可后交付使用。
4)系统测试,将已经确认的软件、硬件、外设及网络结合起来,进行系统的各种组装测试和确定测试。
调试:试探法、回溯法、对分查找法、归纳法、演绎法。
16、系统转换
实际运行,是对系统最好的检验和测试方法。这个阶段的工作有:
对系统进行初始化、输入各原始数据记录;
记录系统运行数据和状况;
核对新、老系统的输出结果;
考察输入方式(方便、效率、误操作)
测试响应速度
系统转换方式:直接转换、并行转换、分段转换。
17、系统维护,系统的可维护性可以定义性的定义为维护人员理解、改正、改动和改进这个软件的难易程序。
系统可维护性的评价指标:可理解性、可测试性、可修改性。
文档,是软件可维护性的决定因素。
系统维护主要包括硬件设备的维护、应用软件的维护和数据的维护。
18、系统评价,分为广义和狭义两种。广义的评价是指从系统开发的开始到结束的每一阶段都需要进行评价。狭义的评价是指在系统建成并投入运行之后进行的全面和综合的评价。
从总体上可以将广义评价分为立项评价、中期评价、结项评价。
19、系统运行管理
运行管理制度:包括种类机房安全运行管理制度,和信息系统的其他管理制度。
日常运行管理内容:包括系统运行情况记录、审讯追踪、审查应急措施落实、系统资源管理、软件及文档管理
软考学习笔记-数据库工程师第九章-SQL语言
软考学习笔记-数据库工程师第九章-SQL语言
第九章 SQL 语言
1、SQL是集数据定义和数据操纵为一体的数据库语言。
数据定义子语言DDL,用来定义数据库模式。DDL包括数据库模式定义,数据库存储结构和存取方法定义,以及数据库模式的修改删除功能。
数据定义子语言的处理程序也分为了数据库模式定义处理程序,和数据库存储结构和存取方法处理程序。前者接收用DDL表示的数据模式定义,翻译成内部表示形式,存储到数据字典中;后者接收数据库存储结构和存取方法定义,在存储设备上创建相关的数据库文件,建立物理数据库。
数据操纵子语言,通常有这样几种操作:查询、插入、删除、修改。后三种应该可以都纳入更新的范畴。
嵌入式SQL,宿主语言
2、SQL是一种通用的、功能强大的关系数据库语言,它的主要功能包括数据查询、数据操纵、数据定义和数据控制。
SQL的特点有:
综合统一
高度非过程化
面向集合的操作方式
两种使用方式, 一是在终端上键入SQL命令直接操作数据库,另一种是将SQL嵌入到高级语言中去。
简洁、易用,完成核心功能只用了9个动词,包括了4类:数据查询(SELECT)、数据定义(CREATE、DROP、ALTER)、数据操纵(INSERT、UPDATE、DELETE)、数据控制(GRANT、REVOKE)。
SQL支持关系数据库的三级模式结构,其中视图对应外模式,基本表对应模式,存储文件对应内模式。
SQL的基本组成:DDL、DML、事务控制、嵌入式SQL和动态SQL、完整性、权限管理。
3、数据库定义
(一)创建表: CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束]
[,<列名><数据类型>[列级完整性约束]]...
[,<表级完整性约束条件>]);
其中列级完整性约束条件有:NULL和UNIQUE。
例9.1 建立一个供应商和零件数据库。其中供应商表S(Sno,Sname,Status,City)的属性分别表示供应商代码、姓名、状态、所在城市。“零件”表P(Pno,Pname,Color,Weight,City)的属性分别表示零件号、零件名、颜色、重量及产地。其中数据库要满足这样的要求:
1)供应商代码不能为空,且值是惟一的,供应商名也是惟一的;
2)零件号不能为空,且值是惟一的。零件名不能为空;
3)一个供应商可以供应多个零件,而一个零件可以由多个供应商供应。
解:供应商与零件之间需要建立一个关系模式,二者之间是一个多对多的关系,新生成的关系模式的码应该是供应商的码和零件表的码,以及二者联系的属性构成。如SP(Sno,Pno,Qty) Qty表示数量。
CREATE TABLE S(Sno CHAR(5) NOT NULL UNIQUE,
Sname CHAR(30) UNIQUE,
Status CHAR(8),
City CHAR(20)
PRIMARY KEY (Sno));
CREATE TABLE P(Pno CHAR(6) NOT NULL UNIQUE,
Pname CHAR(30) NOT NULL,
Color CHAR(8),
Weight NUMERIC(6,2),
City CHAR(20)
PRIMARY KEY(Pno));
CREATE TABLE SP(Sno CHAR(5),
Pno CHAR(6),
Qty NUMERIC(9)
PRIMARY KEY(Sno,Pno),
FOREIGN KEY(Sno) REFERENCES S(Sno),
FOREIGN KEY(Pno) REFERENCES P(Pno));
(二)修改表和删除表
ALTER TABLE <表名>[ADD<新列名><数据类型>[完整型约束条件]]
[DROP <完整性约束名>]
[MODIFY <列名><数据类型>]
DROP TABLE <表名>
(三)定义和删除索引
数据库中的索引就是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的指针清单。作用如下:
通过创建惟一的索引,可以保证数据记录的惟一性;
加快数据检索速度;
加速表与表之间的连接,由其在实现数据的参照完整性方面有特别意义;
在使用ORDER BY ,GROUP BY语句时可以明显地减少计算时间;
使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。
分为聚集索引和非聚集索引
聚集索引,对表的物理数据页中的数据按列进行排序,然后再重新存储到磁盘上,叶子节点中存储的是实际数据;
非聚集索引,具有完全独立于数据行的结构,不必对物理数据页中的数据按列排序,叶子节点存储的是组成非聚集索引的关键字和行定位器。
建立索引:CREATE [UNIQUE][CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>]]...);
其中次序可选ASC,DSC,默认为ASC
UNIQUE表明此索引的每一个索引值只对应惟一的数据记录。
CLUSTER表示要建立的索引是聚簇索引,即索引项的顺序是与表中记录的物理顺序一致的索引组织。
几个例子: CREATE UNIQUE INDEX S-SNO ON S(Sno);
CREATE UNIQUE INDEX P-PNO ON P(PNO);
CREATE UNIQUE INDEX SPJ-NO ON SPJ(SNO ASC,PNO DESC, JNO ASC)。
删除索引: DROP INDEX <索引名>
(四)定义、删除、更新视图
视图的创建:CREATE VIEW 视图名 (列表名)
AS SELECT 查询子句
[WITH CHECK OPTION];
其中查询子句可以是任意复杂的select语句,但一般不能出现order by , distinct。
WITH CHECK OPTION,表示在对视图进行更新、插入或删除操作时,要保证满足子查询中的条件表达式。
例如 CREATE VIEW CS-STUDENT
AS SELECT SNO,SNAME,SAGE,SEX
FROM STUDENDS
WHERE SD=‘CS’
WITH CHECK OPTION;
其中使用了with check option,所以在对视图插删操作时,要保证SD=‘CS’的条件成立。
视图的删除:DROP VIEW 视图名
4、数据操作,SELECT,INSERT,DELETE,UPDATE
(一)SELECT基本结构
SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>]...
FROM <表名或视图名>[,<表名或视图名>]
[WHERE <条件表达式>]
[GROUP BY <列名 1> [HAVING <条件表达式>]]
[ORDER BY <列名 2> [ASC|DESC]...]
其中,子句顺序是:SELECT、FROM、WHERE、GROUP BY、HAVING和ORDER BY。HAVING只能和GROUP BY搭配使用。
SELECT对应关系代数运算中的投影运算;FROM对应笛卡尔积;WHERE对应选择。
SELECT查询中没有全程量词,也没有逻辑蕴涵,但可以通过谓词转换来实现。?
(二)简单查询
(三)连接查询
检索至少选修了课程号为C1和C3的学生号:SELECT Sno FROM SC SCX, SC SCY WHERE SCX.Sno = SCY.Sno AND SCX.Cno = 'C1' AND SCY.Cno = 'C3';
(四)子查询与聚集函数, 子查询也叫嵌套查询。
例:检索选修课程名为MS的学生号和学生姓名。
SELECT Sno, Sname
FROM Students
WHERE Sno IN
(SELECT Sno FROM SC
WHERE Cno IN
(SELECT Cno FROM C WHERE Cname = 'MS'));
聚集函数:AVG, MIN, MAX, SUN, COUNT
使用谓词ANY和ALL必须同时使用比较运算符,其含义与等价的转换关系如下:
>ANY --- >MIN
>ALL --- >MAX
<ANY --- <MAX
=ANY --- IN
<>ALL--- NOT IN
几个例子:查询其他系比计算机系CS所有学生年龄都要小的学生姓名及年龄。
SELECT Sname, Sage
FROM Students
WHERE Sage < ALL
(SELECT Sage
FROM Students
WHERE SD = 'CS')
AND SD<>'CS';
用<MIN代替上面的<ALL:
SELECT Sname, Sage
FROM Students
WHERE Sage <
(SELECT MIN(Sage)
FROM Students
WHERE SD = 'CS')
AND SD<>'CS';
(五)分组查询
GROUP BY 子句
HAVING 子句,如果在元组被分组之前需要按某种方式加以限制,使不需要的分组为空,可以在GROUP BY子句后面加一个HAVING子句。
注意:空值在任何聚集操作中都会被忽视,COUNT(*)是计算某个关系中所有元组数目之种,但COUNT(A)是计算A属性中非空的元组个数之和。
例:针对供应商数据库中的S、P、J。SPJ关系,查询哪一个工程至少用了3家供应商(包含3家)供应的零件的平均数量,并按工程号降序排列。
SELECT JNO,AVG(QTY)
FROM SPJ
GROUP BY JNO
HAVING COUNT(DISTINCT(SNO))>2
ORDER BY JNO DESC;
(六)别名运算
(七)字符串操作, 使用操作符LIKE的模式匹配。%匹配任意字符串,_ 可以匹配任意一个字符。
在Like中可以使用转义字符,将特殊字符当作普通字符处理,如反斜杠“\"。
(八)集合操作, 保留字UNION,INTERSECT,EXCEPT分别对应并、交、差。保留字用于两个查询时,其两侧应用括号括起来。
例:学生和教师的关系模式如下,查询既是女研究生又是教师且工资大于1500元的名字和地址。
(SELECT Name, Address
FROM Students
WHERE SEX='女' AND Type='研究生')
INTERSECT
(SELECT Name, Address
FROM Teachers
WHERE Salary >=1500)
查询不是教师的学生:(SELECT Name, Address FROM Students)
EXCEPT
(SELECT Name, Address FROM Teachers)
(九)视图的查询和删除
视图的查询:当查询视图表时,通常先将其转换成等价的对基本表的查询,然后执行查询语句。即系统先从数据字典中取出该视图的定义,然后与视图中的查询语句结合起来,形成一个修正的查询语句。
视图更新要遵守的规则:
从多个基本通过连接操作导出的视图不允许更新;
对使用了分组、集函数操作的视图不允许更新;
若视图是从单个基本表通过投影、选取操作导出的,则允许进行更新操作。
WITH子句,将一个复杂的查询分解成一小视图??
(十)插入、删除和修改语句
插入: INSERT INTO 表名(字段名[,字段名]...)
VALUES(常量[,常量]...);
删除: DELETE FROM 表名
WHERE 条件表达式;
修改: UPDATE 表名
SET 列名=值表达式
[WHERE条件表达式]
5、SQL中的授权
数据库中的完整性是指数据库的正确性和相容性。
(一)主键约束 PRIMARY KEY
完整性约束条件:完整性约束条件作用的对象有关系、元组、列3种,每种又分为静态、动态两类。
完整性控制:有3方面的功能,定义功能、检测功能、处理功能。这样来保证实现对数据的完整性控制。检查是否违背完整性约束的时机 有两个:立即执行约束和延迟执行约束。前者在一条语句执行完后立即检查,后者在整个事务执行完成后进行。
实体完整性(PRIMARY KEY子句),关系中只能有一个主键,声明主键的方法有两个,就是primary key放的位置不同。
如, CREATE TABLE Students
(Sno CHAR(8),
Sname CHAR(10),
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3),
PRIMARY KEY(Sno));
或 CREATE TABLE Students
(Sno CHAR(8) PRIMARY KEY,
Sname CHAR(10),
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3));
(二)外键约束 FOREIGN KEY(参照完整性)
格式: FOREIGN KEY(属性名)REFERENCES 表名(属性名)
[ON DELETE[ CASCADE|SET NULL]]
ON DELETE CASCADE指明删除参照关系的元组时,同时删除参照关系中的元组。
(三)属性值上的约束 NULL和CHECK
如果要求某属性为空,在定义时在数据类型的后面加上NOT NULL。
如, CREATE TABLE Students
(Sno CHAR(8),
Sname CHAR(10) NOT NULL,
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3),
PRIMARY KEY(Sno));
在Students表中,要求男生的年龄在15-25之间,女生的年龄在15-24之间。
如, CREATE TABLE Students
(Sno CHAR(8),
Sname CHAR(10) NOT NULL,
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3),
PRIMARY KEY(Sno))
CHECK(Sage >=15 AND ((SEX='M' AND Sage<=25) OR
(SEX='F' AND Sage<24)));
(四)全局约束 CREATE ASSERTIONS
全局约束是指一些较复杂的完整性约束,会涉及到多个属性间的联系或多个关系间的联系。分为两种:基于元组的检查子句和断言。
1)使用CHECK子句对单个关系的元组值加以约束,可以在关系的定义中的任何地方加上CHECK及约束条件;
2)断言: CREATE ASSERTION <断言名> CHECK(<条件>)
例如,在教学数据库模式Students,SC,C中加一个约束,不允许男同学选修“张勇”教师的课。
CREATE ASSERTION ASSE-SC1 CHECK
(NOT EXISTS
(SELECT * FROM SC WHERE Cno IN
(SELECT Cno FROM C WHERE TEACHER='张勇')
AND Sno IN
(SELECT Sno FROM Students WHERE SEX='M')));
又如,在Students,SC,C中有一个约束,每门课最多允许50名男同学选修。
CREATE ASSERTION ASSE-SC2 CHECK
(50>=ALL(SELECT COUNT(SC.Sno)
FROM Students,SC
WHERE Students.Sno=SC.Sno AND SEX='M'
GROUP BY Cno));
(五)授权与销权,DBMS数据控制应具有这样的功能,通过GRANT和REVOKE将授权通知系统并存入数据字典;当用户提出请求时,检查其授权情况。
授权语句格式:
GRANT <权限>[,<权限>]...
[ON<对象类型><对象名>]
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
PUBLIC与WITH GRANT OPTION:PUBLIC参数可以将权限授给所有用户;后者使获得授权的用户还可以将此权限授给其它用户。
例如,将对供应商S、零件P及项目J的所有操作权限授给用户User1及User2。
GRANT ALL PRIVILEGES ON TABLE S, P, J TO User1,User2;
将S的插入权限授组User1,并允许将此权限授给其他用户。
GRANT INSERT ON TABLE S TO User1 WITH GRANT OPTION;
DBA把数据库SPJ中建立表的权限授给用户User1。
GRANT CREATETAB ON DATABASE SPJ TO User1;
收回授权语句格式:
REVOKE <权限>[,<权限>]...
[ON <对象类型><对象名>]
FROM <用户>[,<用户>]...;
例如, REVOKE ALL PRIVILEGES ON TABLE S , P, J FROM User1,User2;
REVOKE INSERT ON TABLE S FROM User1 WITH GRANT OPTION;
REVOKE SELECT ON TABLES S FROM PUBLIC;
REVOKE UPDATE(Sno) ON TABLE S FROM User1; --将权限的控制定位在某一个属性上
6、触发器,触发器是一种特殊类型的存储过程,它是通过事件触发而执行的。主要特点是,当被声明的事件发生时触发器被激活;触发器激活后不会立即执行,而是先测试触发条件;如果触发条件满足,则由DBMs执行与该触发器相连的动作。
创建触发器,不同数据库使用的触发器语法不同。
例:假定银行数据库关系模式为: Account(Account-no, branch-name,balance)
Loan(Loan-no, branch-name, amount)
depositor(customer-name, Account-no)
假定银行在处理透支时,不是将账户余额设成负值,而是将账户余额设置为零,并且建立一笔贷款,其金额为透支金额。这笔贷款的贷款号应该等该透支帐户的账户号。采用SQL-99标准创建触发器如下:
CREATE TRIGGER overdraft_trigger after update on Account
Refferencing new row as nrow
For each row
When nrow.balance<0
Begain atomic
Insert into borrower
(SELECT customer-name, Account-no
FROM depositor
Where nrow.account-no=depositor.account-no);
Insert into values
(nrow.account-no, nrow.branch-name, nrow.balance);
update account set balance=0
Where account.account-no=nrow.account-no
End
When nrow.balance<0是触发条件;
Begin atomic ... End子句用来将多行SQL语句集成为一个复合语句。其中前两条Insert into语句表示在borrower和loan关系中建立新的贷款业务,update语句用来将账户余额清零。
Referencing old row as 子句建立一个变量,用来存储已经被更新或删除的行的旧值。Referencing new row as 可以被update和Insert语句使用,可以存放经过更新的新值。
Referencing old table as 或Referencing new table as 子句可以用来指向临时表,使之容纳所有被影响的行。临时表不能使用before触发器,但可以用after触发器。
触发器在事件之前被激发,可以避免非法更新。
例9.45:仓库管理数据库中有如下关系,
inventory(item, level),表示仓库中某种商品的现有量。
minlevel(item, level),表示仓库中存有某种商品的量小量。
reorder(item, amount),表示某种商品小于最小量时要订购的数量。
orders(item, amount),表示定购某种商品的量。
CREATE TRIGGER reorder_trigger after update of amount on inventory --我怀疑amount应该是level
Referencing old row as orow, new row as nrow
For each row
When nrow.level <= (SELECT level
FROM minlevel
Where minlevel.item = orow.item)
And orow.level > (SELECT level
FROM minlevel
Where minlevel.item = orow.item)
Begin
Insert into orders
(SELECT item, amount
FROM reorder
Where reorder.item = orow.item)
End
删除触发器: DROP TRIGGER {trigger}[,...,n]
第九章 SQL 语言
1、SQL是集数据定义和数据操纵为一体的数据库语言。
数据定义子语言DDL,用来定义数据库模式。DDL包括数据库模式定义,数据库存储结构和存取方法定义,以及数据库模式的修改删除功能。
数据定义子语言的处理程序也分为了数据库模式定义处理程序,和数据库存储结构和存取方法处理程序。前者接收用DDL表示的数据模式定义,翻译成内部表示形式,存储到数据字典中;后者接收数据库存储结构和存取方法定义,在存储设备上创建相关的数据库文件,建立物理数据库。
数据操纵子语言,通常有这样几种操作:查询、插入、删除、修改。后三种应该可以都纳入更新的范畴。
嵌入式SQL,宿主语言
2、SQL是一种通用的、功能强大的关系数据库语言,它的主要功能包括数据查询、数据操纵、数据定义和数据控制。
SQL的特点有:
综合统一
高度非过程化
面向集合的操作方式
两种使用方式, 一是在终端上键入SQL命令直接操作数据库,另一种是将SQL嵌入到高级语言中去。
简洁、易用,完成核心功能只用了9个动词,包括了4类:数据查询(SELECT)、数据定义(CREATE、DROP、ALTER)、数据操纵(INSERT、UPDATE、DELETE)、数据控制(GRANT、REVOKE)。
SQL支持关系数据库的三级模式结构,其中视图对应外模式,基本表对应模式,存储文件对应内模式。
SQL的基本组成:DDL、DML、事务控制、嵌入式SQL和动态SQL、完整性、权限管理。
3、数据库定义
(一)创建表: CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束]
[,<列名><数据类型>[列级完整性约束]]...
[,<表级完整性约束条件>]);
其中列级完整性约束条件有:NULL和UNIQUE。
例9.1 建立一个供应商和零件数据库。其中供应商表S(Sno,Sname,Status,City)的属性分别表示供应商代码、姓名、状态、所在城市。“零件”表P(Pno,Pname,Color,Weight,City)的属性分别表示零件号、零件名、颜色、重量及产地。其中数据库要满足这样的要求:
1)供应商代码不能为空,且值是惟一的,供应商名也是惟一的;
2)零件号不能为空,且值是惟一的。零件名不能为空;
3)一个供应商可以供应多个零件,而一个零件可以由多个供应商供应。
解:供应商与零件之间需要建立一个关系模式,二者之间是一个多对多的关系,新生成的关系模式的码应该是供应商的码和零件表的码,以及二者联系的属性构成。如SP(Sno,Pno,Qty) Qty表示数量。
CREATE TABLE S(Sno CHAR(5) NOT NULL UNIQUE,
Sname CHAR(30) UNIQUE,
Status CHAR(8),
City CHAR(20)
PRIMARY KEY (Sno));
CREATE TABLE P(Pno CHAR(6) NOT NULL UNIQUE,
Pname CHAR(30) NOT NULL,
Color CHAR(8),
Weight NUMERIC(6,2),
City CHAR(20)
PRIMARY KEY(Pno));
CREATE TABLE SP(Sno CHAR(5),
Pno CHAR(6),
Qty NUMERIC(9)
PRIMARY KEY(Sno,Pno),
FOREIGN KEY(Sno) REFERENCES S(Sno),
FOREIGN KEY(Pno) REFERENCES P(Pno));
(二)修改表和删除表
ALTER TABLE <表名>[ADD<新列名><数据类型>[完整型约束条件]]
[DROP <完整性约束名>]
[MODIFY <列名><数据类型>]
DROP TABLE <表名>
(三)定义和删除索引
数据库中的索引就是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的指针清单。作用如下:
通过创建惟一的索引,可以保证数据记录的惟一性;
加快数据检索速度;
加速表与表之间的连接,由其在实现数据的参照完整性方面有特别意义;
在使用ORDER BY ,GROUP BY语句时可以明显地减少计算时间;
使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。
分为聚集索引和非聚集索引
聚集索引,对表的物理数据页中的数据按列进行排序,然后再重新存储到磁盘上,叶子节点中存储的是实际数据;
非聚集索引,具有完全独立于数据行的结构,不必对物理数据页中的数据按列排序,叶子节点存储的是组成非聚集索引的关键字和行定位器。
建立索引:CREATE [UNIQUE][CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>]]...);
其中次序可选ASC,DSC,默认为ASC
UNIQUE表明此索引的每一个索引值只对应惟一的数据记录。
CLUSTER表示要建立的索引是聚簇索引,即索引项的顺序是与表中记录的物理顺序一致的索引组织。
几个例子: CREATE UNIQUE INDEX S-SNO ON S(Sno);
CREATE UNIQUE INDEX P-PNO ON P(PNO);
CREATE UNIQUE INDEX SPJ-NO ON SPJ(SNO ASC,PNO DESC, JNO ASC)。
删除索引: DROP INDEX <索引名>
(四)定义、删除、更新视图
视图的创建:CREATE VIEW 视图名 (列表名)
AS SELECT 查询子句
[WITH CHECK OPTION];
其中查询子句可以是任意复杂的select语句,但一般不能出现order by , distinct。
WITH CHECK OPTION,表示在对视图进行更新、插入或删除操作时,要保证满足子查询中的条件表达式。
例如 CREATE VIEW CS-STUDENT
AS SELECT SNO,SNAME,SAGE,SEX
FROM STUDENDS
WHERE SD=‘CS’
WITH CHECK OPTION;
其中使用了with check option,所以在对视图插删操作时,要保证SD=‘CS’的条件成立。
视图的删除:DROP VIEW 视图名
4、数据操作,SELECT,INSERT,DELETE,UPDATE
(一)SELECT基本结构
SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>]...
FROM <表名或视图名>[,<表名或视图名>]
[WHERE <条件表达式>]
[GROUP BY <列名 1> [HAVING <条件表达式>]]
[ORDER BY <列名 2> [ASC|DESC]...]
其中,子句顺序是:SELECT、FROM、WHERE、GROUP BY、HAVING和ORDER BY。HAVING只能和GROUP BY搭配使用。
SELECT对应关系代数运算中的投影运算;FROM对应笛卡尔积;WHERE对应选择。
SELECT查询中没有全程量词,也没有逻辑蕴涵,但可以通过谓词转换来实现。?
(二)简单查询
(三)连接查询
检索至少选修了课程号为C1和C3的学生号:SELECT Sno FROM SC SCX, SC SCY WHERE SCX.Sno = SCY.Sno AND SCX.Cno = 'C1' AND SCY.Cno = 'C3';
(四)子查询与聚集函数, 子查询也叫嵌套查询。
例:检索选修课程名为MS的学生号和学生姓名。
SELECT Sno, Sname
FROM Students
WHERE Sno IN
(SELECT Sno FROM SC
WHERE Cno IN
(SELECT Cno FROM C WHERE Cname = 'MS'));
聚集函数:AVG, MIN, MAX, SUN, COUNT
使用谓词ANY和ALL必须同时使用比较运算符,其含义与等价的转换关系如下:
>ANY --- >MIN
>ALL --- >MAX
<ANY --- <MAX
=ANY --- IN
<>ALL--- NOT IN
几个例子:查询其他系比计算机系CS所有学生年龄都要小的学生姓名及年龄。
SELECT Sname, Sage
FROM Students
WHERE Sage < ALL
(SELECT Sage
FROM Students
WHERE SD = 'CS')
AND SD<>'CS';
用<MIN代替上面的<ALL:
SELECT Sname, Sage
FROM Students
WHERE Sage <
(SELECT MIN(Sage)
FROM Students
WHERE SD = 'CS')
AND SD<>'CS';
(五)分组查询
GROUP BY 子句
HAVING 子句,如果在元组被分组之前需要按某种方式加以限制,使不需要的分组为空,可以在GROUP BY子句后面加一个HAVING子句。
注意:空值在任何聚集操作中都会被忽视,COUNT(*)是计算某个关系中所有元组数目之种,但COUNT(A)是计算A属性中非空的元组个数之和。
例:针对供应商数据库中的S、P、J。SPJ关系,查询哪一个工程至少用了3家供应商(包含3家)供应的零件的平均数量,并按工程号降序排列。
SELECT JNO,AVG(QTY)
FROM SPJ
GROUP BY JNO
HAVING COUNT(DISTINCT(SNO))>2
ORDER BY JNO DESC;
(六)别名运算
(七)字符串操作, 使用操作符LIKE的模式匹配。%匹配任意字符串,_ 可以匹配任意一个字符。
在Like中可以使用转义字符,将特殊字符当作普通字符处理,如反斜杠“\"。
(八)集合操作, 保留字UNION,INTERSECT,EXCEPT分别对应并、交、差。保留字用于两个查询时,其两侧应用括号括起来。
例:学生和教师的关系模式如下,查询既是女研究生又是教师且工资大于1500元的名字和地址。
(SELECT Name, Address
FROM Students
WHERE SEX='女' AND Type='研究生')
INTERSECT
(SELECT Name, Address
FROM Teachers
WHERE Salary >=1500)
查询不是教师的学生:(SELECT Name, Address FROM Students)
EXCEPT
(SELECT Name, Address FROM Teachers)
(九)视图的查询和删除
视图的查询:当查询视图表时,通常先将其转换成等价的对基本表的查询,然后执行查询语句。即系统先从数据字典中取出该视图的定义,然后与视图中的查询语句结合起来,形成一个修正的查询语句。
视图更新要遵守的规则:
从多个基本通过连接操作导出的视图不允许更新;
对使用了分组、集函数操作的视图不允许更新;
若视图是从单个基本表通过投影、选取操作导出的,则允许进行更新操作。
WITH子句,将一个复杂的查询分解成一小视图??
(十)插入、删除和修改语句
插入: INSERT INTO 表名(字段名[,字段名]...)
VALUES(常量[,常量]...);
删除: DELETE FROM 表名
WHERE 条件表达式;
修改: UPDATE 表名
SET 列名=值表达式
[WHERE条件表达式]
5、SQL中的授权
数据库中的完整性是指数据库的正确性和相容性。
(一)主键约束 PRIMARY KEY
完整性约束条件:完整性约束条件作用的对象有关系、元组、列3种,每种又分为静态、动态两类。
完整性控制:有3方面的功能,定义功能、检测功能、处理功能。这样来保证实现对数据的完整性控制。检查是否违背完整性约束的时机 有两个:立即执行约束和延迟执行约束。前者在一条语句执行完后立即检查,后者在整个事务执行完成后进行。
实体完整性(PRIMARY KEY子句),关系中只能有一个主键,声明主键的方法有两个,就是primary key放的位置不同。
如, CREATE TABLE Students
(Sno CHAR(8),
Sname CHAR(10),
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3),
PRIMARY KEY(Sno));
或 CREATE TABLE Students
(Sno CHAR(8) PRIMARY KEY,
Sname CHAR(10),
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3));
(二)外键约束 FOREIGN KEY(参照完整性)
格式: FOREIGN KEY(属性名)REFERENCES 表名(属性名)
[ON DELETE[ CASCADE|SET NULL]]
ON DELETE CASCADE指明删除参照关系的元组时,同时删除参照关系中的元组。
(三)属性值上的约束 NULL和CHECK
如果要求某属性为空,在定义时在数据类型的后面加上NOT NULL。
如, CREATE TABLE Students
(Sno CHAR(8),
Sname CHAR(10) NOT NULL,
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3),
PRIMARY KEY(Sno));
在Students表中,要求男生的年龄在15-25之间,女生的年龄在15-24之间。
如, CREATE TABLE Students
(Sno CHAR(8),
Sname CHAR(10) NOT NULL,
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3),
PRIMARY KEY(Sno))
CHECK(Sage >=15 AND ((SEX='M' AND Sage<=25) OR
(SEX='F' AND Sage<24)));
(四)全局约束 CREATE ASSERTIONS
全局约束是指一些较复杂的完整性约束,会涉及到多个属性间的联系或多个关系间的联系。分为两种:基于元组的检查子句和断言。
1)使用CHECK子句对单个关系的元组值加以约束,可以在关系的定义中的任何地方加上CHECK及约束条件;
2)断言: CREATE ASSERTION <断言名> CHECK(<条件>)
例如,在教学数据库模式Students,SC,C中加一个约束,不允许男同学选修“张勇”教师的课。
CREATE ASSERTION ASSE-SC1 CHECK
(NOT EXISTS
(SELECT * FROM SC WHERE Cno IN
(SELECT Cno FROM C WHERE TEACHER='张勇')
AND Sno IN
(SELECT Sno FROM Students WHERE SEX='M')));
又如,在Students,SC,C中有一个约束,每门课最多允许50名男同学选修。
CREATE ASSERTION ASSE-SC2 CHECK
(50>=ALL(SELECT COUNT(SC.Sno)
FROM Students,SC
WHERE Students.Sno=SC.Sno AND SEX='M'
GROUP BY Cno));
(五)授权与销权,DBMS数据控制应具有这样的功能,通过GRANT和REVOKE将授权通知系统并存入数据字典;当用户提出请求时,检查其授权情况。
授权语句格式:
GRANT <权限>[,<权限>]...
[ON<对象类型><对象名>]
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
PUBLIC与WITH GRANT OPTION:PUBLIC参数可以将权限授给所有用户;后者使获得授权的用户还可以将此权限授给其它用户。
例如,将对供应商S、零件P及项目J的所有操作权限授给用户User1及User2。
GRANT ALL PRIVILEGES ON TABLE S, P, J TO User1,User2;
将S的插入权限授组User1,并允许将此权限授给其他用户。
GRANT INSERT ON TABLE S TO User1 WITH GRANT OPTION;
DBA把数据库SPJ中建立表的权限授给用户User1。
GRANT CREATETAB ON DATABASE SPJ TO User1;
收回授权语句格式:
REVOKE <权限>[,<权限>]...
[ON <对象类型><对象名>]
FROM <用户>[,<用户>]...;
例如, REVOKE ALL PRIVILEGES ON TABLE S , P, J FROM User1,User2;
REVOKE INSERT ON TABLE S FROM User1 WITH GRANT OPTION;
REVOKE SELECT ON TABLES S FROM PUBLIC;
REVOKE UPDATE(Sno) ON TABLE S FROM User1; --将权限的控制定位在某一个属性上
6、触发器,触发器是一种特殊类型的存储过程,它是通过事件触发而执行的。主要特点是,当被声明的事件发生时触发器被激活;触发器激活后不会立即执行,而是先测试触发条件;如果触发条件满足,则由DBMs执行与该触发器相连的动作。
创建触发器,不同数据库使用的触发器语法不同。
例:假定银行数据库关系模式为: Account(Account-no, branch-name,balance)
Loan(Loan-no, branch-name, amount)
depositor(customer-name, Account-no)
假定银行在处理透支时,不是将账户余额设成负值,而是将账户余额设置为零,并且建立一笔贷款,其金额为透支金额。这笔贷款的贷款号应该等该透支帐户的账户号。采用SQL-99标准创建触发器如下:
CREATE TRIGGER overdraft_trigger after update on Account
Refferencing new row as nrow
For each row
When nrow.balance<0
Begain atomic
Insert into borrower
(SELECT customer-name, Account-no
FROM depositor
Where nrow.account-no=depositor.account-no);
Insert into values
(nrow.account-no, nrow.branch-name, nrow.balance);
update account set balance=0
Where account.account-no=nrow.account-no
End
When nrow.balance<0是触发条件;
Begin atomic ... End子句用来将多行SQL语句集成为一个复合语句。其中前两条Insert into语句表示在borrower和loan关系中建立新的贷款业务,update语句用来将账户余额清零。
Referencing old row as 子句建立一个变量,用来存储已经被更新或删除的行的旧值。Referencing new row as 可以被update和Insert语句使用,可以存放经过更新的新值。
Referencing old table as 或Referencing new table as 子句可以用来指向临时表,使之容纳所有被影响的行。临时表不能使用before触发器,但可以用after触发器。
触发器在事件之前被激发,可以避免非法更新。
例9.45:仓库管理数据库中有如下关系,
inventory(item, level),表示仓库中某种商品的现有量。
minlevel(item, level),表示仓库中存有某种商品的量小量。
reorder(item, amount),表示某种商品小于最小量时要订购的数量。
orders(item, amount),表示定购某种商品的量。
CREATE TRIGGER reorder_trigger after update of amount on inventory --我怀疑amount应该是level
Referencing old row as orow, new row as nrow
For each row
When nrow.level <= (SELECT level
FROM minlevel
Where minlevel.item = orow.item)
And orow.level > (SELECT level
FROM minlevel
Where minlevel.item = orow.item)
Begin
Insert into orders
(SELECT item, amount
FROM reorder
Where reorder.item = orow.item)
End
删除触发器: DROP TRIGGER {trigger}[,...,n]
软考学习笔记-数据库工程师第八章-关系数据库
软考学习笔记-数据库工程师第八章-关系数据库
第八章 关系数据库
1、关系数据库的基本概念
属性与域
第一范式条件1NF:在关系数据模型中,所有的域都应是原子数据。
笛卡尔积:设D1,D2,...,Dn为任意集合,则定义D1,D2,...,Dn的笛卡尔积为:
D1*D2*...*Dn = {(d1,d2,...,dn)|di属于Di, i=1,2,...,n}
其中每一个元素(d1,d2,...,dn)叫做一个n元组,元组的每一个值di叫做一个分量。笛卡尔积可用二维表来表示。
例如:D1={0,1}, D2={a,b}, D3={c,d}, 求D1*D2*D3。
D1*D2*D3 = {(0,a,c), (0,a,d), (0,b,c), (0,b,d), (1,a,c), (1,a,d), (1,b,c), (1,b,d)}
D1 D2 D3
0 a c
0 a d
0 b c
0 b d
1 a c
1 a d
1 b c
1 b d
笛卡尔积与关系:D1*D2*..*Dn的子集叫做在域D1,D2,..,Dn上的关系,记为R(D1,D2,..,Dn),称关系R为n元关系。关系中属性的个数称为元数,元组的个数称为基数。
术语对应: 属性---字段
关系模式-记录类型
元组---记录
关系的一些名词:
目或度--常用R表示关系的名字,用n表示关系的目或度
候选码--能够做主码的属性或属性组都是候选码
主码---候选码中的一个
主属性--包含在个选码中的属性
外码---对于关系R来讲,外码就是指它的某个属性或属性组,不是该关系的码,而是其它关系的码
全码---一个关系的全属性称为这个关系的全码
3种基本的关系类型:基本关系(即基本表或基表),查询表,视图表。
2、关系模式:关系的描述称之为关系模式,表示为R(U,D,dom,F)。通常简记为R(U)或R(A1,A2,..,An),Ai为属性名或域名,一般在主码属性下加下划线以标识。
其中,R表示关系名,U表示属性名集合,D是属性的域,dom是属性向域的映像的集合,F是属性间数据的依赖关系的集合。
3、关系的完整性分为3类:
实体完整性, 关系的主属性不能为空值;
参照完整性, 设F是关系R的外码,与关系S的主码相对应,则F或均取空值,或等于S中某个元组的主码值。
用户定义完整性,反映某一具体应用涉及的数据必须满足的语义要求。
4、关系运算:关系运算的特点是操作对象和操作结果都是集合。关系数据语言分为3类,关系代数语言、关系演算语言、和具有前二者特点的语言(如SQL)。关系演算语言又分为元组关系演算语言和域关系演算语言。
关系代数运算符有4类:集合运算符(并、差、交、笛卡尔积),专门的关系运算符(选择、投影、连接、除),算术比较符(大于、小于等),逻辑运算符(与、或、非)。
并
差
广义笛卡尔积,两个元数分别是n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组,记作R*S。
投影,从关系R中选择出若干属性列A组成新的关系,记作PaiA(R)。
选择,是从关系的水平方向进行运算,是从关系R中选择满足给定条件的诸元组,记作 。
扩展的关系运算符:
交,关系R与S具有相同的关系模式,关系R与S的交是由属于R同时属于S的元组构成的集合,记作 。
连接,是从两个关系R和S的笛卡尔积中选取满足条件的元组,可以认为笛卡尔积是无条件的连接。连接又可以分为3种: 连接、等值连接、自然连接。
连接:
可以由基本的关系运算符笛卡尔积和选择导出:
等值连接:
自然连接:是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集中将重复属性列去掉。自然连接不仅要从关系的水平方向,而且还要从关系的垂直方向运算。
除,同时从关系的水平方向和垂直方向进行运算。给定关系R(X,Y)和S(Y,Z),X,Y,Z都是属性组。R除S应当满足元组在X上的分量值x的象集Yx包含关系S在属性组Y上投影的集合。
广义投影,就是带有条件的投影运算,记为 。
外连接, 连接的扩展,为了处理缺失的信息。分为3种左外、右外、全连接。以左外连接为例,取出左侧关系中所有与右侧关系中任一元组都不匹配的元组,用空值填充所有来自右侧关系的属性,构成新的元组,将其加入自然连接的结果中。
聚集函数,要注意一些聚集函数的表达方式。分组的表达方法。
5、元组演算
元组演算是非过程化查询语言。它只描述所需信息,而不给出获得该信息的具体过程。元组表达式中的变量是以元组为单位的,其一般形式为{t|P(t)}。t是元组变量,P(t)是元组关系演算公式,公式是由原子公式组成的。
原子公式,即原子命题函数。有3种形式。一种是R(t)。
全称量词和存在量词。
A=>B,表示若A为真则B为真。
6、域演算,在域演算中表达式中的变量是表示域的变量,可将关系的属性名视为域变量。一般表示为{t1,...,tk|P(t1,...,tk)},其中t1,..,tk是域变量。
原子公式,有3种形式。一种是R(t1,..,ti,...,tk)。
7、函数依赖
依赖的闭包,属性的闭包
8、优化查询
9、规范化
10、模式分解
无损连接,保持函数依赖
第八章 关系数据库
1、关系数据库的基本概念
属性与域
第一范式条件1NF:在关系数据模型中,所有的域都应是原子数据。
笛卡尔积:设D1,D2,...,Dn为任意集合,则定义D1,D2,...,Dn的笛卡尔积为:
D1*D2*...*Dn = {(d1,d2,...,dn)|di属于Di, i=1,2,...,n}
其中每一个元素(d1,d2,...,dn)叫做一个n元组,元组的每一个值di叫做一个分量。笛卡尔积可用二维表来表示。
例如:D1={0,1}, D2={a,b}, D3={c,d}, 求D1*D2*D3。
D1*D2*D3 = {(0,a,c), (0,a,d), (0,b,c), (0,b,d), (1,a,c), (1,a,d), (1,b,c), (1,b,d)}
D1 D2 D3
0 a c
0 a d
0 b c
0 b d
1 a c
1 a d
1 b c
1 b d
笛卡尔积与关系:D1*D2*..*Dn的子集叫做在域D1,D2,..,Dn上的关系,记为R(D1,D2,..,Dn),称关系R为n元关系。关系中属性的个数称为元数,元组的个数称为基数。
术语对应: 属性---字段
关系模式-记录类型
元组---记录
关系的一些名词:
目或度--常用R表示关系的名字,用n表示关系的目或度
候选码--能够做主码的属性或属性组都是候选码
主码---候选码中的一个
主属性--包含在个选码中的属性
外码---对于关系R来讲,外码就是指它的某个属性或属性组,不是该关系的码,而是其它关系的码
全码---一个关系的全属性称为这个关系的全码
3种基本的关系类型:基本关系(即基本表或基表),查询表,视图表。
2、关系模式:关系的描述称之为关系模式,表示为R(U,D,dom,F)。通常简记为R(U)或R(A1,A2,..,An),Ai为属性名或域名,一般在主码属性下加下划线以标识。
其中,R表示关系名,U表示属性名集合,D是属性的域,dom是属性向域的映像的集合,F是属性间数据的依赖关系的集合。
3、关系的完整性分为3类:
实体完整性, 关系的主属性不能为空值;
参照完整性, 设F是关系R的外码,与关系S的主码相对应,则F或均取空值,或等于S中某个元组的主码值。
用户定义完整性,反映某一具体应用涉及的数据必须满足的语义要求。
4、关系运算:关系运算的特点是操作对象和操作结果都是集合。关系数据语言分为3类,关系代数语言、关系演算语言、和具有前二者特点的语言(如SQL)。关系演算语言又分为元组关系演算语言和域关系演算语言。
关系代数运算符有4类:集合运算符(并、差、交、笛卡尔积),专门的关系运算符(选择、投影、连接、除),算术比较符(大于、小于等),逻辑运算符(与、或、非)。
并
差
广义笛卡尔积,两个元数分别是n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组,记作R*S。
投影,从关系R中选择出若干属性列A组成新的关系,记作PaiA(R)。
选择,是从关系的水平方向进行运算,是从关系R中选择满足给定条件的诸元组,记作 。
扩展的关系运算符:
交,关系R与S具有相同的关系模式,关系R与S的交是由属于R同时属于S的元组构成的集合,记作 。
连接,是从两个关系R和S的笛卡尔积中选取满足条件的元组,可以认为笛卡尔积是无条件的连接。连接又可以分为3种: 连接、等值连接、自然连接。
连接:
可以由基本的关系运算符笛卡尔积和选择导出:
等值连接:
自然连接:是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集中将重复属性列去掉。自然连接不仅要从关系的水平方向,而且还要从关系的垂直方向运算。
除,同时从关系的水平方向和垂直方向进行运算。给定关系R(X,Y)和S(Y,Z),X,Y,Z都是属性组。R除S应当满足元组在X上的分量值x的象集Yx包含关系S在属性组Y上投影的集合。
广义投影,就是带有条件的投影运算,记为 。
外连接, 连接的扩展,为了处理缺失的信息。分为3种左外、右外、全连接。以左外连接为例,取出左侧关系中所有与右侧关系中任一元组都不匹配的元组,用空值填充所有来自右侧关系的属性,构成新的元组,将其加入自然连接的结果中。
聚集函数,要注意一些聚集函数的表达方式。分组的表达方法。
5、元组演算
元组演算是非过程化查询语言。它只描述所需信息,而不给出获得该信息的具体过程。元组表达式中的变量是以元组为单位的,其一般形式为{t|P(t)}。t是元组变量,P(t)是元组关系演算公式,公式是由原子公式组成的。
原子公式,即原子命题函数。有3种形式。一种是R(t)。
全称量词和存在量词。
A=>B,表示若A为真则B为真。
6、域演算,在域演算中表达式中的变量是表示域的变量,可将关系的属性名视为域变量。一般表示为{t1,...,tk|P(t1,...,tk)},其中t1,..,tk是域变量。
原子公式,有3种形式。一种是R(t1,..,ti,...,tk)。
7、函数依赖
依赖的闭包,属性的闭包
8、优化查询
9、规范化
10、模式分解
无损连接,保持函数依赖
软考学习笔记-数据库工程师第七章-数据库技术基础
软考学习笔记-数据库工程师第七章-数据库技术基础
第七章 数据库技术基础
1、数据库系统DBS,是由数据库、硬件、软件和人员组成的。
数据库DB
软件包括操作系统、数据库管理系统DBMS和应用程序。
数据库技术的发展经历了3个阶段:人工管理阶段、文件系统阶段、数据库系统阶段。
文件系统的最大特点是解决了应用程序和数据之间的一个公共接口问题,使得应用程序使用统一的存取方法来操作数据。
数据库系统与文件系统的区别是:数据的充分共享、交叉访问及应用程序的高度独立性。数据库对数据的存储是按照同一结构进行的,不同的应用程序可直接操作这些数据。
2、DBMS的功能,主要实现对共享数据有效的组织、管理和存取。有以下几个方面的功能:
数据定义:DBMS提供数据定义语言DDL,用户可以对数据库的结构进行描述,包括外模式、模式和内模式的定义,数据库的完整性定义,安全保密定义等。这些存储在数据字典中,是DBMS运行的基本依据。
数据库操作:数据操纵语言DML,实现对数据库中数据的基本操作,如检索、插、改、删。DML双分为宿主型和自含型。
数据库运行管理:多用户环境下的并发控制、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理、事务管理和自动恢复都是DBMS的重要组成。
数据组织、存储和管理:DBMS分类组织、存储和管理各类数据,包括数据字典、用户数据、存取路径等,并要确定以何种文件结构和存取方式在存储级别上组织这些数据。DBMS实现数据间的联系、数据组织和存储的基本目标是提高存储空间的利用率。
数据库的建立和维护
RDBS,关系数据库系统,实体与实体间的关系的集合构成一个RDBS,也有型、值之分。关系数据库的型称为关系数据库模式,是对数据库的描述。关系数据库的值也称为关系数据库,是关系的集合。统称为RDBS。
OODBS,是面向对象的数据库系统。支持以对象形式进行数据建模,且要符合2个条件,首先要是一个DBMS,其次必须是面向对象的。
ORDBS,对象关系数据库,提供了元组、数组和集合等更丰富的数据类型以及处理新的数据类型的能力。
3、数据模型的基本概念
数据描述的三个领域:现实世界、信息世界、机器世界。
现实世界,指客观存在的各种报表、图表、原始数据;在信息世界中数据库常用的术语有属性、实体、实体集和码;机器世界是按机器的观点对建模,主要使用的术语有字段、记录、文件和记录码。信息世界与机器世界的几个术语可以一一对应。
数据模型的3要素:数据结构、数据操作、数据的约束条件。
常用的数据模型分为概念型数据模型和基本数据模型。概念数据模型也称为信息模型,是按用户的观点对数据和信息建模,是从现实世界到信息世界的第一层抽象,强调语义表达功能,用于数据库设计,这类模型中最著名的是E-R模型。基本数据模型是按计算机观点对数据进行建模,用于实现DBMS。基本的数据模型有层次模型、网状模型和关系模型。目前随着新应用的发展,面向对象模型更广泛的被使用。
4、E-R模型,它所采用的3个主要概念是:实体、联系、属性。E-R模型只能说明实体间的语义联系。
E-R方法: 矩形--表示实体
菱形----联系
椭圆----属性
双椭圆---多值属性
虚椭圆---派生属性
线段----将属性与相关实体或实体与联系连接起来
双线----表示一个实体全部参与到联系集中
双线矩形--弱实体
扩充的E-R模型:增加了弱实体、特殊化、概括以及聚集等概念。
弱实体,在现实世界中有一种联系代表实体间的ownership关系,即一个实体依赖于另一个实体而存在,这类实体被称为弱实体。
特殊化,设有实体集E,如果S是E的某些真子集的集合,则称S为E的一个特殊化,E是Si的超类,Si称为E的子类。若两个子集Si与Sj没有交集,则S称为E的不相交特殊化,否则称为重叠特殊化。在扩充的E-R图中使用特殊化圆圈(而不是菱形)和连线的方式来表示超类-子类关系模型。超类到圆圈有连线,双线表全特殊化,单线表部分特殊化。子类用双竖边矩形表示。圆圈到子类的线用符号“U”标识为特殊化。圆圈内的"d"表示不相交特殊化,"O"表示重叠特殊化。
从E-R模型向关系模型转换时,所有“实体”和“联系”都要转换成相应的关系模式。
5、层次模型,采用树型结构表示数据与数据间的联系,每个节点表示一个实体。根节点之外的结点都有且仅有一个双亲。
特点:记录间的联系通过指针实现,简单、效率高。
缺点:只适于表示1:n的联系。
网状模型DBTG,采用网络结构表示数据与数据的联系。允许一个以上结点无双亲,也允许一个结点有多个双亲。
网状模型与层次模型的区别:
1)网状模型中子女结点与双亲结点的联系不惟一,需要为每个结点命名,见图示;
2)网状模型允许复合链,两结点间可以存在两种以上的联系;
3)网状模型不能表示记录之间的多对多的联系,解决办法是引入联结记录来表示多对多的联系,见图示。
特点是:更直接地描述现实世界,存取效率高;缺点是:结构复杂。
关系模型,在关系模型中用表格结构表达实体集及实体集间的联系,其最大的特色是描述的一致性。关系模型就是若干个关系模式的集合。一个关系模式相当于一个记录型,对应于程序设计语言中的类型定义的概念。关系是一个实例,也是一张表,对应于程序设计语言中变量的概念。 区别: 与前两种模型的最大区别是使用主键而不是指针导航数据,表格简单直观。
在关系数据库中,若关系模式中的每个关系的属性值均是不可分解的,则该关系模式属于--第一范式1NF,这也是关系数据库的最基本要求。
关系代数运算是以关系作为运算对象的一组高级运算集合,关系定义为元素相同的元组的集合。因此,关系代数运算是以集合操作为基础的运算,其5种基本运算是并、差、笛卡尔积、投影和选择。
6、从数据库管理的角度看,数据库系统体系结构一般采用三级模式结构。外模式、概念模式、内模式。
数据库的行和值:行,是指对某一数据的结构和属性的说明;值,是行的一个具体赋值。
概念模式,也称模式,是数据库中全部数据的逻辑结构和特征的描述。它由若干个概念记录类型组成,只涉及行的描述,不涉及具体的值。概念模式不仅要描述概念记录类型,还要描述记录间的联系、操作以及数据的完整性和安全性。概念模式不涉及存储结构和访问技术等,因此做到了物理数据独立性。概念模式的数据定义语言称为“模式DDL”。
外模式,也称用户模式或子模式,是用户与数据库系统的接口,是用户用到的那部分数据的描述。它由若干个外部记录类型组成,用户使用数据操纵语言DML对数据库进行操作。描述外模式的数据定义语言称为”外模式DDL“。
内模式,也称为存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,定义所有的内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。但是内部记录也不涉及物理记录,那是操作系统负责的相关机制。“内模式DDL”。
总之,数据按外模式的描述提供给用户,按内模式的描述存储在磁盘上,而概念模式则提供了连接这两级模式的相对稳定的中间点,且使得两级模式的任一级的改变都不受另一级的牵制。
数据库系统在三级模式之间提供了两级映像,这保证了数据库中的数据具有较高的逻辑独立性和物理独立性。“模式/内模式”,“外模式/模式”。
数据的独立性包括数据的物理独立性和数据的逻辑独立性。物理逻辑性是指,当数据库的内模式发生改变时,数据的逻辑结构不变;逻辑独立性,是指用户的应用程序和数据库的逻辑结构相独立。
7、数据库系统的体系结构
1)集中式数据库系统:不但数据是集中的,数据的管理也是集中的,就是说从形式的用户接口到DBMS核心都集中在DBMS所在的计算机上。
2)C/S数据库体系结构:安排某些任务在服务器上执行,另一些任务在客户机上执行。数据库系统功能分为前端和后端。前端主要包括图形用户界面、表格生成和报表处理等;后端负责存取结构、查询计算和优化、并发控制以及故障恢复。前端与后端通过SQL或应用程序来接口。
注:数据库服务器一般可分为事务服务器和数据服务器。其中事务服务器又被称为查询服务器,典型的事务服务器中有多个在共享内存中访问数据的进程,包括服务器进程、锁管理进程、写进程、监视进程和检查点进程。
3)并行数据库系统:并行体系结构的数据库系统是由多个物理上连在一起的CPU组成,分为共享内存式多处理器和无共享式并行体系结构。前者多个CPU共享一个内存与磁盘接口,后者每个CPU都有自己的内存和磁盘。
4)分布式数据库系统:分布式DBMS包括物理上分布、逻辑上集中的分布式结构和物理上逻辑上都分布的分布式数据结构2种。
5)WEB数据库,又称为网络数据库,即网站上的后台数据库。
8、事务:是一个操作序列,这些操作要么都做,要么都不做。它是数据库环境中不可分割的逻辑工作单位。事务的4个特性ACID,原子性、一致性、隔离性、永久性。
9、数据库的4类故障:事务内部故障、系统故障、介质故障、计算机病毒。
故障恢复的基本原理是“建立数据冗余”。建立冗余数据的方法是进行数据转储和登记日志文件。
数据的转储分为:静态转储和动态转储、海量转储和增量转储。
日志文件:DBMS在事务处理的过程中,把事务开始、事务结束以及对数据库的插入、删除和修改的每一步操作写入日志文件。当发生故障后,DBMS可以利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。DBMS可以利用日志文件来进行事务故障恢复和系统故障恢复,并可协助后备副本进行介质故障恢复。
在发生数据库故障后,把数据库恢复到故障发生前的状态的方法:定期对数据库作后备文件;在进行事务处理时,对数据更新的全部有关内容写入日志文件;存储系统正常运行时,按一定的时间间隔,设立检查点文件,把内存缓冲区内容还未写入到磁盘中去的有关状态记录到检查点文件中;当发生故障时,根据现场数据内容、日志文件的故障前映像和检查点文件来恢复系统的状态。
事务恢复的3个步骤:1)反向扫描文件日志,查找该事务的更新操作;
2)对事务的更新操作执行逆操作;
3)继续反向扫描日志文件,查找该事务的其他更新操作,并作同样的处理,直到事务的开始标志。
在SQL中定义事务的语句有3条:BEGIN TRANSACTION;COMMIT;ROLLBACK。
10、并发控制
并发操作带来的问题是数据的不一致性,有3种:丢失更新、不可重复读、读脏数据。主要原因是事务的并发操作破坏了事务的隔离性。
并发控制的主要技术是封锁,有2种封锁类型:排他锁(又称为X锁或写锁),共享锁(又称为S锁或读锁)。
排他锁:特征是独占性;共享锁:特征是共享可读,在锁释放前该数据对象不可写。
三级封锁协议:一级封锁协议是指事务在修改数据前对其加X锁,直到事务结束才释放,这样就解决了丢失更新的问题;
二级封锁协议是指在一级封锁协议的基础上,事务T在读取数据R之前先对其加S锁,读完后立即释放S锁,这样就解决 了读脏数据的问题;
三级封锁协议是指在一级封锁协议的基础上,事务T在读取数据R之前先对其加S锁,直到事务结束时释放S锁,三级封 锁协议能够解决丢失更新、读脏数据、不可重复读这3个问题。
活锁与死锁
并发调度的可串行性:一个正确的多个事务并发执行,当且仅当其结果与某一次序串行地执行它们时的结果相同,则这种调度策略是可串行化的调度。可串行性是并发事务正确性的准则,一个给定的并发调度,当且仅当这旨可串行化的才认为是正确的调度。
两段封锁协议:是指事务必须分两个阶段对数据进行加锁和解锁。事务在第一个阶段只能获得封锁,在第二个阶段只能释放锁。
封锁的粒度:封锁对象的大小称为封锁的粒度。封锁的对象可以是逻辑单元也可以是物理单元。
事务的嵌套:事务是不能嵌套的,这样就违背了事务的原子性。相当于当且仅当当前没有事务在运行时,程序才能执行BEGIN TRANSACTION操作。
11、数据库安全性:为保护数据库,我们要在多个层次上采取安全性措施。
数据库系统层次;操作系统层次;网络层次;物理层次;人员层次。
数据库的完整性:是指数据的正确性和相容性(有效性)。这包括用户定义完整性、参照完整性、实体完整性。实体完整性规则指主码的任何组成部分都不可以是空值,引用完整性规则则不允许引用不存在的实体。
授权:read, insert, update, delete ;index, resource, alteration, drop 。后者操作的对象是涉及数据库模式的表、表属性及索引。
权限授予图:表现授权从一个用户到另一个用户的传递。用户具有授权的条件是,当且仅当存在从授权图的根到代表该用户节点的路径。为安全着想,我们要求授权图中的所有边都必须是某条从DBA开始的路径的一部分。
角色:在数据库中建立一个角色集,将权限授予角色,通过为用户授予角色实现赋权的管理。
审计追踪:它是一个记录对数据库所有更改的日志。可以在关系更新操作上定义适当的触发器来建立一个审计追踪。很多的数据库系统都提供了内置机制来建立审计追踪。
12、数据仓库DW(Data Warehouse):在数据库基础上产生的能满足决策分析需要的数据环境。
数据仓库的基本特征:数据是面向主题的,数据是集成的,数据是相对稳定的,数据是反映历史变化的。
数据仓库的数据模式:星型模式,雪花模式,事实星型模式。典型的数据仓库具有为数据分析而设计的模式,使用OLAP工具进行联机分析处理。其数据通常是多维的,包括维属性和度量属性。包含多维数据的表称为事实表。
一个事实表、多维表以及从事实表到多维表的参照外码的模式,称为星型模式;
更复杂的数据仓库含有多级维表,这种模式称为雪花模式;
复杂的数据仓库也可能含有不止一个事实表,这种模式称为事实星型模式。
数据仓库的体系结构:它通常采用三层结构,底层为数据仓库服务器、中间层是OLAP服务器、顶层为前端工具。
底层的数据仓库服务器一般是一个关系数据库系统。中间层的OLAP可以是关系型OLAP(即扩充的DBMS)也可以是多维的OLAP服务器。顶层的前端工具是各种查询、报表、分析、挖掘工具。
从结构的角度看,有3种数据仓库模型:企业仓库、数据集市、虚拟仓库。
数据集市是企业范围数据的一个子集;虚拟仓库是操作型数据库上视图的集合。
13、数据挖掘:从海量数据中挖掘信息的技术。支持DM的3种基础技术是海量数据搜索、强大的多处理器计算机、数据挖掘算法。几中常用的数据挖掘技术是:人工神经网络、决策树、遗传算法、近邻算法、规则推导。
数据挖掘与数据仓库的关系:数据仓库不仅是集成数据的一种方式,而且它的OLAO联机分析功能还为数据挖掘提供了一个很好的操作平台。
与传统数据分析工具比较,数据挖掘工具更注重于预测未来的情况。
数据挖掘技术的应用过程:确定挖掘对象,准备数据,建立模式,数据挖掘,结果分析,知识应用。
将数据转换成一个分析模型,建立一个真正适合挖掘算法的分析模型是数据挖掘的关键。
14、SQL语言中不提供地使用索引的功能,这支持了物理数据的独立性。
第七章 数据库技术基础
1、数据库系统DBS,是由数据库、硬件、软件和人员组成的。
数据库DB
软件包括操作系统、数据库管理系统DBMS和应用程序。
数据库技术的发展经历了3个阶段:人工管理阶段、文件系统阶段、数据库系统阶段。
文件系统的最大特点是解决了应用程序和数据之间的一个公共接口问题,使得应用程序使用统一的存取方法来操作数据。
数据库系统与文件系统的区别是:数据的充分共享、交叉访问及应用程序的高度独立性。数据库对数据的存储是按照同一结构进行的,不同的应用程序可直接操作这些数据。
2、DBMS的功能,主要实现对共享数据有效的组织、管理和存取。有以下几个方面的功能:
数据定义:DBMS提供数据定义语言DDL,用户可以对数据库的结构进行描述,包括外模式、模式和内模式的定义,数据库的完整性定义,安全保密定义等。这些存储在数据字典中,是DBMS运行的基本依据。
数据库操作:数据操纵语言DML,实现对数据库中数据的基本操作,如检索、插、改、删。DML双分为宿主型和自含型。
数据库运行管理:多用户环境下的并发控制、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理、事务管理和自动恢复都是DBMS的重要组成。
数据组织、存储和管理:DBMS分类组织、存储和管理各类数据,包括数据字典、用户数据、存取路径等,并要确定以何种文件结构和存取方式在存储级别上组织这些数据。DBMS实现数据间的联系、数据组织和存储的基本目标是提高存储空间的利用率。
数据库的建立和维护
RDBS,关系数据库系统,实体与实体间的关系的集合构成一个RDBS,也有型、值之分。关系数据库的型称为关系数据库模式,是对数据库的描述。关系数据库的值也称为关系数据库,是关系的集合。统称为RDBS。
OODBS,是面向对象的数据库系统。支持以对象形式进行数据建模,且要符合2个条件,首先要是一个DBMS,其次必须是面向对象的。
ORDBS,对象关系数据库,提供了元组、数组和集合等更丰富的数据类型以及处理新的数据类型的能力。
3、数据模型的基本概念
数据描述的三个领域:现实世界、信息世界、机器世界。
现实世界,指客观存在的各种报表、图表、原始数据;在信息世界中数据库常用的术语有属性、实体、实体集和码;机器世界是按机器的观点对建模,主要使用的术语有字段、记录、文件和记录码。信息世界与机器世界的几个术语可以一一对应。
数据模型的3要素:数据结构、数据操作、数据的约束条件。
常用的数据模型分为概念型数据模型和基本数据模型。概念数据模型也称为信息模型,是按用户的观点对数据和信息建模,是从现实世界到信息世界的第一层抽象,强调语义表达功能,用于数据库设计,这类模型中最著名的是E-R模型。基本数据模型是按计算机观点对数据进行建模,用于实现DBMS。基本的数据模型有层次模型、网状模型和关系模型。目前随着新应用的发展,面向对象模型更广泛的被使用。
4、E-R模型,它所采用的3个主要概念是:实体、联系、属性。E-R模型只能说明实体间的语义联系。
E-R方法: 矩形--表示实体
菱形----联系
椭圆----属性
双椭圆---多值属性
虚椭圆---派生属性
线段----将属性与相关实体或实体与联系连接起来
双线----表示一个实体全部参与到联系集中
双线矩形--弱实体
扩充的E-R模型:增加了弱实体、特殊化、概括以及聚集等概念。
弱实体,在现实世界中有一种联系代表实体间的ownership关系,即一个实体依赖于另一个实体而存在,这类实体被称为弱实体。
特殊化,设有实体集E,如果S是E的某些真子集的集合,则称S为E的一个特殊化,E是Si的超类,Si称为E的子类。若两个子集Si与Sj没有交集,则S称为E的不相交特殊化,否则称为重叠特殊化。在扩充的E-R图中使用特殊化圆圈(而不是菱形)和连线的方式来表示超类-子类关系模型。超类到圆圈有连线,双线表全特殊化,单线表部分特殊化。子类用双竖边矩形表示。圆圈到子类的线用符号“U”标识为特殊化。圆圈内的"d"表示不相交特殊化,"O"表示重叠特殊化。
从E-R模型向关系模型转换时,所有“实体”和“联系”都要转换成相应的关系模式。
5、层次模型,采用树型结构表示数据与数据间的联系,每个节点表示一个实体。根节点之外的结点都有且仅有一个双亲。
特点:记录间的联系通过指针实现,简单、效率高。
缺点:只适于表示1:n的联系。
网状模型DBTG,采用网络结构表示数据与数据的联系。允许一个以上结点无双亲,也允许一个结点有多个双亲。
网状模型与层次模型的区别:
1)网状模型中子女结点与双亲结点的联系不惟一,需要为每个结点命名,见图示;
2)网状模型允许复合链,两结点间可以存在两种以上的联系;
3)网状模型不能表示记录之间的多对多的联系,解决办法是引入联结记录来表示多对多的联系,见图示。
特点是:更直接地描述现实世界,存取效率高;缺点是:结构复杂。
关系模型,在关系模型中用表格结构表达实体集及实体集间的联系,其最大的特色是描述的一致性。关系模型就是若干个关系模式的集合。一个关系模式相当于一个记录型,对应于程序设计语言中的类型定义的概念。关系是一个实例,也是一张表,对应于程序设计语言中变量的概念。 区别: 与前两种模型的最大区别是使用主键而不是指针导航数据,表格简单直观。
在关系数据库中,若关系模式中的每个关系的属性值均是不可分解的,则该关系模式属于--第一范式1NF,这也是关系数据库的最基本要求。
关系代数运算是以关系作为运算对象的一组高级运算集合,关系定义为元素相同的元组的集合。因此,关系代数运算是以集合操作为基础的运算,其5种基本运算是并、差、笛卡尔积、投影和选择。
6、从数据库管理的角度看,数据库系统体系结构一般采用三级模式结构。外模式、概念模式、内模式。
数据库的行和值:行,是指对某一数据的结构和属性的说明;值,是行的一个具体赋值。
概念模式,也称模式,是数据库中全部数据的逻辑结构和特征的描述。它由若干个概念记录类型组成,只涉及行的描述,不涉及具体的值。概念模式不仅要描述概念记录类型,还要描述记录间的联系、操作以及数据的完整性和安全性。概念模式不涉及存储结构和访问技术等,因此做到了物理数据独立性。概念模式的数据定义语言称为“模式DDL”。
外模式,也称用户模式或子模式,是用户与数据库系统的接口,是用户用到的那部分数据的描述。它由若干个外部记录类型组成,用户使用数据操纵语言DML对数据库进行操作。描述外模式的数据定义语言称为”外模式DDL“。
内模式,也称为存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,定义所有的内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。但是内部记录也不涉及物理记录,那是操作系统负责的相关机制。“内模式DDL”。
总之,数据按外模式的描述提供给用户,按内模式的描述存储在磁盘上,而概念模式则提供了连接这两级模式的相对稳定的中间点,且使得两级模式的任一级的改变都不受另一级的牵制。
数据库系统在三级模式之间提供了两级映像,这保证了数据库中的数据具有较高的逻辑独立性和物理独立性。“模式/内模式”,“外模式/模式”。
数据的独立性包括数据的物理独立性和数据的逻辑独立性。物理逻辑性是指,当数据库的内模式发生改变时,数据的逻辑结构不变;逻辑独立性,是指用户的应用程序和数据库的逻辑结构相独立。
7、数据库系统的体系结构
1)集中式数据库系统:不但数据是集中的,数据的管理也是集中的,就是说从形式的用户接口到DBMS核心都集中在DBMS所在的计算机上。
2)C/S数据库体系结构:安排某些任务在服务器上执行,另一些任务在客户机上执行。数据库系统功能分为前端和后端。前端主要包括图形用户界面、表格生成和报表处理等;后端负责存取结构、查询计算和优化、并发控制以及故障恢复。前端与后端通过SQL或应用程序来接口。
注:数据库服务器一般可分为事务服务器和数据服务器。其中事务服务器又被称为查询服务器,典型的事务服务器中有多个在共享内存中访问数据的进程,包括服务器进程、锁管理进程、写进程、监视进程和检查点进程。
3)并行数据库系统:并行体系结构的数据库系统是由多个物理上连在一起的CPU组成,分为共享内存式多处理器和无共享式并行体系结构。前者多个CPU共享一个内存与磁盘接口,后者每个CPU都有自己的内存和磁盘。
4)分布式数据库系统:分布式DBMS包括物理上分布、逻辑上集中的分布式结构和物理上逻辑上都分布的分布式数据结构2种。
5)WEB数据库,又称为网络数据库,即网站上的后台数据库。
8、事务:是一个操作序列,这些操作要么都做,要么都不做。它是数据库环境中不可分割的逻辑工作单位。事务的4个特性ACID,原子性、一致性、隔离性、永久性。
9、数据库的4类故障:事务内部故障、系统故障、介质故障、计算机病毒。
故障恢复的基本原理是“建立数据冗余”。建立冗余数据的方法是进行数据转储和登记日志文件。
数据的转储分为:静态转储和动态转储、海量转储和增量转储。
日志文件:DBMS在事务处理的过程中,把事务开始、事务结束以及对数据库的插入、删除和修改的每一步操作写入日志文件。当发生故障后,DBMS可以利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。DBMS可以利用日志文件来进行事务故障恢复和系统故障恢复,并可协助后备副本进行介质故障恢复。
在发生数据库故障后,把数据库恢复到故障发生前的状态的方法:定期对数据库作后备文件;在进行事务处理时,对数据更新的全部有关内容写入日志文件;存储系统正常运行时,按一定的时间间隔,设立检查点文件,把内存缓冲区内容还未写入到磁盘中去的有关状态记录到检查点文件中;当发生故障时,根据现场数据内容、日志文件的故障前映像和检查点文件来恢复系统的状态。
事务恢复的3个步骤:1)反向扫描文件日志,查找该事务的更新操作;
2)对事务的更新操作执行逆操作;
3)继续反向扫描日志文件,查找该事务的其他更新操作,并作同样的处理,直到事务的开始标志。
在SQL中定义事务的语句有3条:BEGIN TRANSACTION;COMMIT;ROLLBACK。
10、并发控制
并发操作带来的问题是数据的不一致性,有3种:丢失更新、不可重复读、读脏数据。主要原因是事务的并发操作破坏了事务的隔离性。
并发控制的主要技术是封锁,有2种封锁类型:排他锁(又称为X锁或写锁),共享锁(又称为S锁或读锁)。
排他锁:特征是独占性;共享锁:特征是共享可读,在锁释放前该数据对象不可写。
三级封锁协议:一级封锁协议是指事务在修改数据前对其加X锁,直到事务结束才释放,这样就解决了丢失更新的问题;
二级封锁协议是指在一级封锁协议的基础上,事务T在读取数据R之前先对其加S锁,读完后立即释放S锁,这样就解决 了读脏数据的问题;
三级封锁协议是指在一级封锁协议的基础上,事务T在读取数据R之前先对其加S锁,直到事务结束时释放S锁,三级封 锁协议能够解决丢失更新、读脏数据、不可重复读这3个问题。
活锁与死锁
并发调度的可串行性:一个正确的多个事务并发执行,当且仅当其结果与某一次序串行地执行它们时的结果相同,则这种调度策略是可串行化的调度。可串行性是并发事务正确性的准则,一个给定的并发调度,当且仅当这旨可串行化的才认为是正确的调度。
两段封锁协议:是指事务必须分两个阶段对数据进行加锁和解锁。事务在第一个阶段只能获得封锁,在第二个阶段只能释放锁。
封锁的粒度:封锁对象的大小称为封锁的粒度。封锁的对象可以是逻辑单元也可以是物理单元。
事务的嵌套:事务是不能嵌套的,这样就违背了事务的原子性。相当于当且仅当当前没有事务在运行时,程序才能执行BEGIN TRANSACTION操作。
11、数据库安全性:为保护数据库,我们要在多个层次上采取安全性措施。
数据库系统层次;操作系统层次;网络层次;物理层次;人员层次。
数据库的完整性:是指数据的正确性和相容性(有效性)。这包括用户定义完整性、参照完整性、实体完整性。实体完整性规则指主码的任何组成部分都不可以是空值,引用完整性规则则不允许引用不存在的实体。
授权:read, insert, update, delete ;index, resource, alteration, drop 。后者操作的对象是涉及数据库模式的表、表属性及索引。
权限授予图:表现授权从一个用户到另一个用户的传递。用户具有授权的条件是,当且仅当存在从授权图的根到代表该用户节点的路径。为安全着想,我们要求授权图中的所有边都必须是某条从DBA开始的路径的一部分。
角色:在数据库中建立一个角色集,将权限授予角色,通过为用户授予角色实现赋权的管理。
审计追踪:它是一个记录对数据库所有更改的日志。可以在关系更新操作上定义适当的触发器来建立一个审计追踪。很多的数据库系统都提供了内置机制来建立审计追踪。
12、数据仓库DW(Data Warehouse):在数据库基础上产生的能满足决策分析需要的数据环境。
数据仓库的基本特征:数据是面向主题的,数据是集成的,数据是相对稳定的,数据是反映历史变化的。
数据仓库的数据模式:星型模式,雪花模式,事实星型模式。典型的数据仓库具有为数据分析而设计的模式,使用OLAP工具进行联机分析处理。其数据通常是多维的,包括维属性和度量属性。包含多维数据的表称为事实表。
一个事实表、多维表以及从事实表到多维表的参照外码的模式,称为星型模式;
更复杂的数据仓库含有多级维表,这种模式称为雪花模式;
复杂的数据仓库也可能含有不止一个事实表,这种模式称为事实星型模式。
数据仓库的体系结构:它通常采用三层结构,底层为数据仓库服务器、中间层是OLAP服务器、顶层为前端工具。
底层的数据仓库服务器一般是一个关系数据库系统。中间层的OLAP可以是关系型OLAP(即扩充的DBMS)也可以是多维的OLAP服务器。顶层的前端工具是各种查询、报表、分析、挖掘工具。
从结构的角度看,有3种数据仓库模型:企业仓库、数据集市、虚拟仓库。
数据集市是企业范围数据的一个子集;虚拟仓库是操作型数据库上视图的集合。
13、数据挖掘:从海量数据中挖掘信息的技术。支持DM的3种基础技术是海量数据搜索、强大的多处理器计算机、数据挖掘算法。几中常用的数据挖掘技术是:人工神经网络、决策树、遗传算法、近邻算法、规则推导。
数据挖掘与数据仓库的关系:数据仓库不仅是集成数据的一种方式,而且它的OLAO联机分析功能还为数据挖掘提供了一个很好的操作平台。
与传统数据分析工具比较,数据挖掘工具更注重于预测未来的情况。
数据挖掘技术的应用过程:确定挖掘对象,准备数据,建立模式,数据挖掘,结果分析,知识应用。
将数据转换成一个分析模型,建立一个真正适合挖掘算法的分析模型是数据挖掘的关键。
14、SQL语言中不提供地使用索引的功能,这支持了物理数据的独立性。
软考学习笔记-数据库工程师第六章-多媒体基础
软考学习笔记-数据库工程师第六章-多媒体基础
第六章 多媒体基础
1、媒体可分为感觉媒体、表示媒体、表现媒体、存储媒体、传输媒体。通常所说的媒体包括两个含义:一是指信息的物理载体;二是指承载信息的载体,即信息的表现形式,即CCITT定义的存储媒体和表示媒体。其中的表示媒体又可以分为3种:视觉类、听觉类、触觉类。
多媒体体就是指多种信息载体的表现形式和传递方式。
超文本是一种文本管理技术,它以结点为单位组织信息。结点、链和网络是超文本的3个基本要素。
超媒体,具体表现为用超文本方式组织和处理多媒体信息。
2、声音3要素:音强、音调、音色。音色由混入基音的泛音所决定。人耳听觉范围是20HZ-20KHZ。
声音信号的数字化:取样-量化法。有3个步骤,即取样、量化、编码。
波形声音,是一个用来表示声音强弱的数据序列,它是由模拟声音经采样、量化和编码后得到的一种数据格式。
有3种声音编码方法:波形编码,参数编码,混合编码。
声音合成,分为语音合成和音乐合成。
MIDI,是乐器数字接口的缩写,目前已成为数字音乐的国际标准。它规定了乐器间及与计算机进行数据传输的协议规范。
声音文件的格式:Wave,Module(.mod)记录音色样本,MPEG(mp3),RealAudio(.ra),MIDI,Voice(.voc)每个voc文件由文件头块和音频数据块组成,Sound(.snd),Audio(.au),AIF,CMF。
3、色彩3要素:亮度、色调、色饱和度。
彩色空间:指彩色图像所使用的颜色描述方法。RGB彩色空间,用于计算机显示器;CMY彩色空间,是相减混色,典型应用有油墨、颜料;YUV彩色空间,Y表示亮度,U,V是两个色度变量,典型应用有电视图像。
图形与图像:图形是用一系列计算机指令来描述和记录的一幅图的内容,典形应用有矢量图;图像是用像素点来描述的图。图形采用光栅化(即点阵化)技术可以转换为图像,图像采用图形跟踪技术可以转化为图形。
现实图片数字化过程为采样-量化-编码。
图像的主要属性包括分辨率、像素深度、真/伪彩色。像素深度指存储每个像素所使用的位数。真彩色,图像的每个像素的颜色由R、G、B三个基色分量所决定。伪彩色,是在生成图像时对图像中的不同色彩采样并生成一个彩色查找表,图像的每像素值存储的是色彩的索引。
图像的无损压缩方法有:行程编码RLE、增量调制编码、霍夫曼编码。增量调制法只记录每行上第一个像素的值,其后的像素只记录与行首记录的增量。霍夫曼法是根据像素出现的频率定义像素编码,进而生成该图像的霍夫曼码表。
图像的文件格式:BMP深度可选且不做压缩,GIF采用了无损压缩,TIFF适用于扫描仪和桌面出版,PCX像素深度可选且使用RLE编码,PNG是 gif的替代品,JPEG采用有损压缩,Target彩色丰富供专业用户使用,WMF保存的是函数调用信息(windows),EPS是 PostScript图形打印机专用,DIF是AutoCAD格式,CDR。
4、电视信号通过光栅扫描的方法显示到屏幕上,彩色电视采用相加混色,使用RGB作为三基色。
几种视频文件格式:GIF;Flic(.FLI/.FLC)一种彩色动画文件格式,使用RLE和Delta算法编码;AVI支持256色和RLE压缩;QuickTime;MPEG是运行图像压缩算法,方法是单位时间内采集并保存第一帧信息,然后只存储其余帧对第一帧发生变化的部分,进而实现压缩 (平均压缩比50:1);RM一种新型流式视频文件格式。
MPEG-4是一套多媒体通信标准,主要由音频编码、视频编码、数据平面、描述符接口、缓冲共管理和实时识别等部分构成。
MPEG-1应用于电视图像和伴音信息的通用编码;
MPEG-2应用于高数据速率数字存储媒体的电视图像和伴音编码;
MPEG-7是一套多媒体内容描述符接口标准。
5、虚拟现实技术的特征:多感知,沉浸感,交互,构想。
大概有4种虚拟现实技术:桌面虚拟现实,完全沉浸的高级虚拟现实,增强现实性的虚拟现实,分布式虚拟现实系统。
6、VCD上的数据文件是以MPEG-1标准的格式存储的,它将图像分为了3种:帧内图像、预测图像和插补图像构成。其中帧内图像采用JPEG压缩方法来去掉冗余信息,也称作空间压缩。预测图像使用的帧间编码模式,也称作时间压缩。
对动态图像进行压缩处理的基本条件是:动态图像中帧与帧之间具有相关性。
动态图像有3个基本特点:具有时间连续特性,具有实时性,帧与帧之间具有相关性。相关性是指动态图像的连续前后两帧信息变化很小的特点。
人们把无损压缩称为熵编码。
CD盘光道的结构与磁盘的磁道不同,它的光道不是同心圆,而是螺旋型光道,一张CD的光道大概有5公里。光盘的随机存储性变得较差。
DVD盘是将光盘间距缩小,将记录信息的最小凹凸坑长度缩小,以提高存储容量。因此DVD刻录机和播放机需要采用波长更短的激光,同时为提高接收盘片反射光的能力,要增大光学物镜数值孔径。
MIDI文件包含音符、定时和16个通道的演奏定义。
脉冲编码调制是最简单、最基本的一种波形编码。
如果两种色光混合而成白光,则这两种色光互为补色。 红色+青色 = 绿色+品红 = 蓝+黄 = 白色
使用RGB3:3:2表示一个像素时,像素深度为8,即3+3+2。如果使用RGB8:8:8表示一个像素,那么像素深度为24。
图像分辨率,是指组成一幅图像的像素密度,即用每英寸多少点(dpi)表示数字化图像的大小,也用水平和垂直的像素表示。例如用200dpi来扫描一幅2*2.5英寸的照片,则可以得到400*500的图像。
视盘与CD盘的信息存储和读出原理有结构一样,但视盘是以模拟量的方式记录视频信号的。激光束读取视盘上信息的方向是从盘的内圈向外圈读的。
第六章 多媒体基础
1、媒体可分为感觉媒体、表示媒体、表现媒体、存储媒体、传输媒体。通常所说的媒体包括两个含义:一是指信息的物理载体;二是指承载信息的载体,即信息的表现形式,即CCITT定义的存储媒体和表示媒体。其中的表示媒体又可以分为3种:视觉类、听觉类、触觉类。
多媒体体就是指多种信息载体的表现形式和传递方式。
超文本是一种文本管理技术,它以结点为单位组织信息。结点、链和网络是超文本的3个基本要素。
超媒体,具体表现为用超文本方式组织和处理多媒体信息。
2、声音3要素:音强、音调、音色。音色由混入基音的泛音所决定。人耳听觉范围是20HZ-20KHZ。
声音信号的数字化:取样-量化法。有3个步骤,即取样、量化、编码。
波形声音,是一个用来表示声音强弱的数据序列,它是由模拟声音经采样、量化和编码后得到的一种数据格式。
有3种声音编码方法:波形编码,参数编码,混合编码。
声音合成,分为语音合成和音乐合成。
MIDI,是乐器数字接口的缩写,目前已成为数字音乐的国际标准。它规定了乐器间及与计算机进行数据传输的协议规范。
声音文件的格式:Wave,Module(.mod)记录音色样本,MPEG(mp3),RealAudio(.ra),MIDI,Voice(.voc)每个voc文件由文件头块和音频数据块组成,Sound(.snd),Audio(.au),AIF,CMF。
3、色彩3要素:亮度、色调、色饱和度。
彩色空间:指彩色图像所使用的颜色描述方法。RGB彩色空间,用于计算机显示器;CMY彩色空间,是相减混色,典型应用有油墨、颜料;YUV彩色空间,Y表示亮度,U,V是两个色度变量,典型应用有电视图像。
图形与图像:图形是用一系列计算机指令来描述和记录的一幅图的内容,典形应用有矢量图;图像是用像素点来描述的图。图形采用光栅化(即点阵化)技术可以转换为图像,图像采用图形跟踪技术可以转化为图形。
现实图片数字化过程为采样-量化-编码。
图像的主要属性包括分辨率、像素深度、真/伪彩色。像素深度指存储每个像素所使用的位数。真彩色,图像的每个像素的颜色由R、G、B三个基色分量所决定。伪彩色,是在生成图像时对图像中的不同色彩采样并生成一个彩色查找表,图像的每像素值存储的是色彩的索引。
图像的无损压缩方法有:行程编码RLE、增量调制编码、霍夫曼编码。增量调制法只记录每行上第一个像素的值,其后的像素只记录与行首记录的增量。霍夫曼法是根据像素出现的频率定义像素编码,进而生成该图像的霍夫曼码表。
图像的文件格式:BMP深度可选且不做压缩,GIF采用了无损压缩,TIFF适用于扫描仪和桌面出版,PCX像素深度可选且使用RLE编码,PNG是 gif的替代品,JPEG采用有损压缩,Target彩色丰富供专业用户使用,WMF保存的是函数调用信息(windows),EPS是 PostScript图形打印机专用,DIF是AutoCAD格式,CDR。
4、电视信号通过光栅扫描的方法显示到屏幕上,彩色电视采用相加混色,使用RGB作为三基色。
几种视频文件格式:GIF;Flic(.FLI/.FLC)一种彩色动画文件格式,使用RLE和Delta算法编码;AVI支持256色和RLE压缩;QuickTime;MPEG是运行图像压缩算法,方法是单位时间内采集并保存第一帧信息,然后只存储其余帧对第一帧发生变化的部分,进而实现压缩 (平均压缩比50:1);RM一种新型流式视频文件格式。
MPEG-4是一套多媒体通信标准,主要由音频编码、视频编码、数据平面、描述符接口、缓冲共管理和实时识别等部分构成。
MPEG-1应用于电视图像和伴音信息的通用编码;
MPEG-2应用于高数据速率数字存储媒体的电视图像和伴音编码;
MPEG-7是一套多媒体内容描述符接口标准。
5、虚拟现实技术的特征:多感知,沉浸感,交互,构想。
大概有4种虚拟现实技术:桌面虚拟现实,完全沉浸的高级虚拟现实,增强现实性的虚拟现实,分布式虚拟现实系统。
6、VCD上的数据文件是以MPEG-1标准的格式存储的,它将图像分为了3种:帧内图像、预测图像和插补图像构成。其中帧内图像采用JPEG压缩方法来去掉冗余信息,也称作空间压缩。预测图像使用的帧间编码模式,也称作时间压缩。
对动态图像进行压缩处理的基本条件是:动态图像中帧与帧之间具有相关性。
动态图像有3个基本特点:具有时间连续特性,具有实时性,帧与帧之间具有相关性。相关性是指动态图像的连续前后两帧信息变化很小的特点。
人们把无损压缩称为熵编码。
CD盘光道的结构与磁盘的磁道不同,它的光道不是同心圆,而是螺旋型光道,一张CD的光道大概有5公里。光盘的随机存储性变得较差。
DVD盘是将光盘间距缩小,将记录信息的最小凹凸坑长度缩小,以提高存储容量。因此DVD刻录机和播放机需要采用波长更短的激光,同时为提高接收盘片反射光的能力,要增大光学物镜数值孔径。
MIDI文件包含音符、定时和16个通道的演奏定义。
脉冲编码调制是最简单、最基本的一种波形编码。
如果两种色光混合而成白光,则这两种色光互为补色。 红色+青色 = 绿色+品红 = 蓝+黄 = 白色
使用RGB3:3:2表示一个像素时,像素深度为8,即3+3+2。如果使用RGB8:8:8表示一个像素,那么像素深度为24。
图像分辨率,是指组成一幅图像的像素密度,即用每英寸多少点(dpi)表示数字化图像的大小,也用水平和垂直的像素表示。例如用200dpi来扫描一幅2*2.5英寸的照片,则可以得到400*500的图像。
视盘与CD盘的信息存储和读出原理有结构一样,但视盘是以模拟量的方式记录视频信号的。激光束读取视盘上信息的方向是从盘的内圈向外圈读的。
登録:
投稿 (Atom)