一、背景
常见的数据库设计是使用连续的整数为做主键,当新的数据插入到数据库时,由数据库自动生成,但这种设计不一定适合所有场景。
随着越来越多的应用程序使用、Entity Core等ORM(对象关系映射)框架,应用被设计成为工作单元(Unit Of Work)模式,需要在数据持久化之前生成主键,解决主实体与子系统的依赖关系;为了保证在多线程并发以及站点集群环境中主键的唯一性,最简单最常见的方式是将主键设计成为GUID类型。
工作单元是数据库应用程序经常使用的一种设计模式,简单一点来说,就是对多个数据库操作进行打包,记录对象上的所有变化,并在最后提交时一次性将所有变化通过系统事务写入数据库。目的是为了减少数据库调用次数以及避免数据库长事务。关于工作单元的知识可以在各类博客网站中都有说明,在这里就不做详细的介绍了。
GUID(全球唯一标识符)也称为UUID,是一种由算法生成的二进制长度为128位的数字标识符。在理想情况下,任何计算机之间都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID标准的实现。
RFC 41222描述了创建标准GUID,如今大多数GUID生成算法通常是一个很长的随机数,再结合一些像网络MAC地址这种随机的本地组件信息。
GUID的优点允许开发人员随时创建新值,而无需从数据库服务器检查值的唯一性,这似乎是一个完美的解决方案。
很多数据库在创建主键时,为了充分发挥数据库的性能,会自动在该列上创建聚集索引。我们先来说一说什么是聚集索引。集索引确定表中数据的物理顺序,类似于电话簿,按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表也只能包含一个聚集索引。它能够快速查找到数据,但是如果插入数据库的主键不在列表的末尾,向表中添加新行时就非常缓慢。例如,看下面这个例子,在表中已经存在三行数据(例子来自Jeremy Todd的博客《GUIDs as fast primary keys under 》):
此时非常简单:数据行按对应ID列的顺序储存。如果我们新添加一行ID为8的数据,不会产生任何问题,新行会追加的末尾。
但如果我们想插入一行的ID为5的数据。
ID为7,8的数据行必须向下移动。虽然在这算什么事儿,但当您的数据量达到数百万行的级别之后,这就是个问题了。如果您还想要每秒处理上百次这种请求,那可真是难上加难了。
这就是GUID主键引发的问题:它是随机产生的,所以在数据插入时,随时都会涉及到数据的移动,导致插入会很缓慢,还会涉及大量不必要的磁盘活动。根据数据库的存储的相关知识,会带如下两点问题:
空间的浪费以及由此带来的读写效率的下降;
更主要的,存储的碎片化以及由此带来的读写效率严重下降。
GUID最关键的问题就是它是随机的。我们需要设计一种有规则的GUID生成方式,在之后生成的GUID类型总是比之前的要大,保证插入数据库的主键是在表数据的末尾追加的,这种我们称之为有序GUID。
二、GUID排序规则
在讲解有序GUID之前,我们必须先了解一下GUID在.Net中以及各个数据库中的排序规则,排序规则不一样,生成有序GUID的规则也会随之变化。
128位的GUID主要有4部分组成:Data1, Data2, Data3, and Data4,你可以看成下面这样:“1-3333-4444-”。
Data1 占4个字节, Data2 2个字节, Data3 2个字节加 Data4 8个字节。我们分别的对各字节编上序号:
GUID在.Net中的排序规则
在.Net中,GUID默认的排序规则是按左到右的,看下面这个示例。
输出结果:
通过上面的输出结果,我们可以得到排序的权重如下
这与数字排序规则一致,从右到左进行依次进行排序(数字越小,权重越高,排序的优先级越高)。
GUID在各个数据库中的排序规则
在SQL Server数据库中,我们有一种非常简单的方式来比较两个GUID类型的大小值(其实在SQL Server数据库中称为类型):
上面的例子来自Ferrari的博客《How are GUIDs sorted by SQL Server?》。
查询结果:
通过上面可以得到如下结果:
通过分析,我们可得到如下权重列表:
在官方文档中,有一篇文档关于GUID与的值比较:《 GUID and Values》。
不同的数据库处理GUID的方式也是不同的。在SQL Server存在内置GUID类型,没有原生GUID支持的数据库通过模拟来方式来实现的。在Oracle保存为raw bytes类型,具体类型为raw(16);在MySql中通常将GUID储存为char(36)的字符串形式。
关于Oracle、MySql数据库的排序规则与.Net中排序规则,不过篇章的限制,这里不再做具体的演示,您可以自己进行测试。我们在这里只给出最终的结论:
Oracle数据库未提供对GUID类型的支持,使用的是raw bytes类型保存数据,真实类型为raw(16),排序规则是按Oracle二进制进行排序的;
MySql数据库未提供对GUID类型的支持,使用的是字符串的类型保存数据,使用是的char(36)类型,由于使用的是字符串类型,排序规则与GUID在.Net中的规则一致。
三、有序GUID
有序GUID是有规则的生成GUID,保证在之后生成的GUID的值总是比之前的要大。不过在上一节中,已经提到过各个数据库对GUID支持不一样,而且排序的规则也不一样,所以我们需要为每一个数据库提供不一致的有序GUID生成规则。
函数
我们都知道SQL Server数据库有一个()函数,用于创建有序GUID。在创建表时,可以将它设置成为GUID类型字段的默认值,在插入新增数据时自动创建主键的值(该函数只能做为字段的默认值,不能直接在SQL中调用)。示例如下:
()函数只能在数据库使用,不过在 的 MSDN 文档中有说明, 是对 Windows 函数的包装,(v=sql.120).aspx。这样我们可以在C#通过非托管方法调用:
但是上面的方法也存在三个问题:
1、这个方法涉及到安全问题,函数依赖的计算硬件,该方法的后12位其实是网卡的MAC地址。这是我电脑生成的一组有序GUID。
这是我本地电脑的网卡的MAC地址:
2、由于函数生成的有序GUID中包括MAC地址,所以如果在服务器集群环境中,肯定存在一台服务器A上生成的有序GUID总比另一台服务器B生成要更小,服务器A产生的数据插入到数据库时,由于聚集索引的问题,总是会移动服务器B已经持久化到数据库中的数据。集群的服务器越多,产生的IO问题更严重。在服务器群集环境中,需要自行实现有序GUID。
3、函数生成的GUID规则与SQL Server中排序的规则存在不一致,这样仍然会导致严重的IO问题,所以需要将GUID重新排序后再持久化到数据库。例如上面列出生成的GUID列表,依次生成的数据可以看出,是第4位字节在自增长,在这与任何一个数据库的排序规则都不一致;关于该函数生成的规则,可以见此文章:。
下面的方法是将生成的GUID调整成为适合Sql Server使用的有序GUID(针对其它数据库支持,您可以按排序规则自行修改):
小结:
函数存在隐私的问题,不适合集群环境,并且需要重新排序后再提交到数据库;
COMB解决方案
COMB 类型的GUID 是由Jimmy Nilsson在他的“The Cost of GUIDs as Primary Keys”一文中设计出来的。
基本设计思路是这样的:既然GUID数据生成是随机的,会造成索引效率低下,影响了系统的性能,那么能不能通过组合的方式,保留GUID的前10个字节,用后6个字节表示GUID生成的时间(),这样我们将时间信息与GUID组合起来,在保留GUID的唯一性的同时增加了有序性,以此来提高索引效率(这是针对Sql Server数据库来设计的)。
在框架中已经实现该功能,可以在github上看到实现方式: .cs#L45-L69。
在EF以及EF Core也同样实现了类似的解决方案,EF Core的实现方式:#L25-L44。
在这里介绍一下使用的方式,由EF Core框架自动生成有序GUID的方式:
但是请注意,这两个ORM的解决方案只针对Sql Server数据库,因为只保证了最后几位字节是按顺序来生成的。
框架
框架也是我要推荐给您,因为它提供了常见数据库生成有序Guid的解决方案。
基本原理与COMB方案一样,使用时间来保证有序GUID的顺序,使用System... ider保证生成的数据的唯一性;关于该框架的设计思路以及针对各个数据库的性能测试,见链接:。
使用方式,建议您参考ABP框架,在ABP中使用框架来生成有序GUID,关键代码链接: blob//src/Abp/tor.cs#L36-L51。
四、总结
我们来总结一下:
------ END ------
作者简介
唐同学:架构师,目前负责ERP运行平台整体架构设计和开发。
也许您还想看
国家开放大学2024秋《数据库基础与应用》形考任务1-4完整答案
电大搜题
超多的题库,支持文字、图片,语音搜题,包含国家开放大学、广东开放大学、云南开放大学、北京开放大学、上海开放大学、江苏开放大学、超星、青书、奥鹏等等多个平台题库,考试作业必备神器。
课程考核
本课程考核采用形成性考核与终结性考试相结合的方式。形成性考核占课程综合成绩的30%,终结性考试占课程综合成绩的70%。最终成绩=形考成绩30%+终考成绩70%考核方式相关信息以国家开放大学当学期发布的考试安排文件为准。
形考任务一
一、单选题1.在利用计算机进行数据处理的四个发展阶段中,第三个发展阶段是()。
【答案】数据库系统
2.属性的取值范围被称为()。
【答案】域
3.实用ER图进行描述的是()。
【答案】概念数据模型
4.若实体A和B是1对多的联系,实体B和C是1对1的联系,则实体A和C是()联系。
【答案】1对多
5.若实体A和B是多对多的联系,实体B和C是1对1的联系,则实体A和C是()联系。
【答案】多对多
6.下面不属于数据库体系结构中三级模式的是()。
【答案】关系模式
7.在文件系统中,存取数据的基本单位是()。
【答案】记录
8.层次数据模型的结构是一种()。
【答案】树结构
9.一个关系中的每一行称为一个()。
【答案】元组
10.设D1、D2和D3定义域中的基数分别为2、3和4,则D1×D2×D3的元组数为( )。
【答案】24
11.设D1、D2、D3和D4为定义域,则在它们的笛卡尔积的运算结果中,每个元组具有的分量个数为()。
【答案】4
12.设关系R1具有a1个属性和b1个元组,关系R2具有a2个属性和b2个元组,则关系R1×R2所具有的属性个数为()。
【答案】a1+a2
13.若一个关系为R(学生号,姓名,性别,年龄),则可以作为主码的属性为()。
【答案】学生号
14.设两个关系R1和R2中分别包含有m和n个元组,R1对R2存在着一对多的联系,将其进行自然连接,在得到的运算结果中最多包含的元组个数为()。
【答案】n
15.设一个关系R1中的属性A是外码,它对应关系R2中的主码为B,其中被称为父关系的是()。
【答案】R2
16.设一个集合A={3,4,5,6,7},另一个集合B={1,3,5,7,9},则A和B的交集中包含的元素个数为()。
【答案】3
17.设一个集合A={3,4,5,6,7,8},另一个集合B={1,3,5,7,9},则B和A的差集(即B-A)中包含的元素个数为()。
【答案】2
18.在一个关系R中,若X、Y和Z为互不相同的单属性,并且存在X→Y和Y→Z,则X到Z的函数依赖类型为()。
【答案】传递
19.在一个关系R中,若存在X→Y和X→Z,则存在X→YZ,称此函数依赖的规则是()。
【答案】合并性
20.设一个关系为R(A,B,C,D,E),它的最小函数依赖集为FD={A→B,C→D,(A,C)→E},则该关系的候选码为()。
【答案】(A,C)
21.设一个关系为R(A,B,C,D,E,F,G),它的最小函数依赖集为FD={A→B,C→D,B→E,E→F},则该关系的候选码为()。
【答案】(A,C,G)
22.设一个关系为R(A,B,C,D,E),它的最小函数依赖集为FD={A→B,A→C,C→D},则该关系的候选码为()。
【答案】(A,E)
23.在一个关系R中,若属性集X函数决定属性集Y,则记作为()。
【答案】X→Y
24.对关系进行规范化,若需要很好地保持着数据的无损连接性和函数依赖性,则最高应该规范化到()。
【答案】第三范式
25.把关系的第一范式规范化为第二范式的过程就是消除属性之间的()。
【答案】部分依赖二、判断题
26.实体之间的联系有3种,即1对1联系、1对多联系和多对多联系。()【答案】对
27.实体之间的联系共有两种,即1对多联系和多对多联系。()
【答案】错
28.在一个关系数据模型中,所有关系的定义不是用一个关系来表示的。()
【答案】错
29.关系数据模型是以树结构为基础的。()
【答案】错
30.在关系数据模型中,运算对象是关系,而运算结果是一个单值。()【答案】错
31.数据库体系结构具有三级模式结构和两级存储映象。()
【答案】对
32.进行数据库系统运行、管理和维护的人员被称为应用程序员。()【答案】错
33.数据库的逻辑结构模型只有两种,层次模型和关系模型。()
【答案】错
34.已知两个定义域的基数分别为m和n,则它们的笛卡儿积中的元组数为m+n。()
【答案】错
35.假定一个笛卡儿积中有m个元组,在由它所产生的任何一个关系中,其元组数必然大于等于m。()
【答案】错
36.在一个关系中,元组个数可以为0。()
【答案】对
37.在一个关系中,既包含有关系模式,又必须包含有关系的内容。()【答案】错
38.关系的完整性总共包括实体完整性和参照完整性这两种。()
【答案】错3
9.在一个关系中,主码可能同时有多个。()
【答案】错
40.在一个关系中,可以定义主码,也可以不定义主码。()
【答案】对
41.对一个关系R进行选择运算,运算结果关系中的元组个数小于等于R中的元组个数。()
【答案】对
42.对一个关系R进行投影运算,运算结果关系中的元组个数必然等于R中的元组个数。()
【答案】错
43.对两个关系进行等值连接,在其运算结果的关系中,属性个数小于两个关系的属性个数之和。()
【答案】错
44.假定在一个关系中存在X→Y的函数依赖,则称Y为决定因素。()
【答案】错
45.假定在一个关系中存在X→Y并且X⊇Y,则称X→Y为平凡函数依赖。()
【答案】对
46.假定在一个关系中存在X→Y,并且X的任何真子集都不能函数决定Y,则称X→Y为部分函数依赖。
【答案】错
47.假定在一个关系中存在X→Y,并且存在X的一个真子集也能够函数决定Y,则称X→Y为完全函数依赖。()
【答案】错
48.假定在一个关系中存在X→Y和Y→Z,并且X、Y和Z是互不相同的单属性,则存在着X→Z的传递函数依赖。()
【答案】对
49.在一个关系的最小函数依赖集中,可能存在着传递函数依赖。()【答案】错
50.在一个关系中,若存在X→Y和WY→Z,则不存在WX→Z。()
【答案】错
形考任务二
一、单选题1.在SQL的查询语句中,group by选项实现的功能是()。【答案】分组统计
2.在SQL的建立基本表操作中,定义主码约束所使用的保留字为()。【答案】PRIMARY
3.在SQL的建立基本表操作中,定义外码约束所使用的保留字为()。【答案】FOREIGN
4.在带有保留字VIEW的SQL语句中,其操作对象是()。
【答案】视图
5.在SELECT查询语句的ORDER BY子句中,若需要按照指定列的升序排列表,则使用的保留字是()。
【答案】ASC
6.在SQL的SELECT语句中,不包含的功能子句是()。
【答案】删除
7.当在SELECT查询语句的from选项中,实现对表的中间连接功能时,使用的保留字为()。
【答案】INNER
8.当在SELECT查询语句的from选项中,实现对表的右连接功能时,使用的保留字为()。
【答案】RIGHT
9.利用SQL语言所建立的基本表在数据库中属于()。
【答案】实表
10.若两个基本表是通过对应的主码建立联系的,则该联系的类型只能是()。
【答案】1对1
11.以一个基本表中的主码同另一个基本表中的外码建立联系,则这种联系的类型为()。
【答案】1对多
12.在一个数据库应用系统设计的过程中,第三个阶段是()。
【答案】逻辑设计
13.在一个数据库应用系统设计的过程中,第四个阶段是()。
【答案】物理设计
14.在数据库应用系统设计的需求分析阶段,不需要做的事情是()。【答案】创建基本表
15.在数据库应用系统设计的概念设计阶段,需要做的事情是()。
【答案】画出ER图
二、判断题
16.在SQL语言中,字符型常量和日期型常量需要使用单引号括起来。()
【答案】对
17.在SQL语言中,整数型常量和实数型常量需要使用单引号括起来。()
【答案】错
18.在SQL语言中,整数型常量和实数型常量不需要使用任何符号作为起止标记符。()
【答案】对
19.使用一条INSERT语句只能向表中插入一条记录,不能同时插入多条记录。()
【答案】错
20.使用一条UPDATE语句只能修改表中一条记录,不能同时修改多条记录。()
【答案】错
21.一个视图只能建立在一个基本表上,不能建立在多个基本表上。()【答案】错
22.可以在SELECT语句的FROM选项中,为给出的每个表附加一个别名。()
【答案】对
23.在SELECT语句的FROM选项中,只能给出一个表,不能给出多个表。()
【答案】错
24.在SELECT语句的FROM选项中,每对表之间的连接方式共有两种。()
【答案】错
25.一个数据库应用系统开发过程的第1个阶段是概念设计。()
【答案】错
26.需求分析阶段的主要目标是画出数据流图,建立数据字典和编写需求说明书。()
【答案】对
27.概念设计也要贯彻概念单一化原则,即一个实体只用来反映一种事实,一个实体中的所有属性都是用来直接描述码的。()
【答案】对
28.商品实体与销售实体之间是1对多的联系,其中商品实体为父表,销售实体为子表。()
【答案】对
29.在介绍旅店管理的数据库设计中,客房表为基本表,客房空闲表为视图。()
【答案】对
30.在介绍旅店管理的数据库设计中,住宿费表为基本表,消费卡表为视图。()
【答案】错
三、匹配题
31.根据主教材第四章所给的商品库和教学库,为下列所给的每条SQL查询语句匹配相应的功能。选项:A从教学库中查询出没有被姓名为王明的学生所选修的所有课程信息。B从教学库中查询出没有选修任何课程的学生信息。C从商品库中查询出每一种商品的商品代号、分类名、数量和品牌等信息。D从商品库中查询出所有商品的不同品牌的总数。E从教学库中查询出每个专业的学生人数,并按人数多少降序排列。(1)select x.商品代号,分类名,数量,品牌
from 商品表1 x,商品表2 y
where x.商品代号=y.商品代号
上方语句功能为: 1(2)select count(*) as 品牌数
from (select 品牌 from 商品表2) as xxk
上方语句功能为: 2(3) select *
from 学生
where 学生号 not in (select 学生号 from 选课)
上方语句功能为: 3(4)select 专业,count(*) as 专业人数
from 学生
group by 专业
order by 2 desc
上方语句功能为: 4(5) select *
from 课程
where 课程号 in (select 课程号 from 学生 x, 选课 y
where x.学生号=y.学生号 and x.姓名='王明')
上方语句功能为: 5【答案】(1)C.C(2)D.D(3)B.B(4)E.E(5)A.A32.根据教材第四章所给的商品库和教学库,为下列所给的每种功能匹配相应的查询语句。选项:Aselect商品代号,分类名,单价,数量,单价*数量 as 总价值
from 商品表1
order by *
from 商品表1
where 数量 between 10 and 20 (或where 数量>=10 and 数量all(select 单价
from 商品表1
where 分类名='空调器'
)Dselect 学生.*
from 学生,选课
where 学生.学生号=选课.学生号 and 学生.姓名'刘芹'
and 课程号=any(select 课程号
from 学生,选课
where 学生.学生号=选课.学生号 and 姓名='刘芹'
)Eselect 分类名
from 商品表1
group by 分类名 having count(*)>1(1)从商品库中查询出数量在10和20之间的所有商品。
对应的查询语句为: 1(2)从商品库中查询出比所有空调器的单价都高的每种商品。
对应的查询语句为: 2(3)从商品库中查询出同一类商品多于一种的所有分类名。
对应的查询语句为: 3(4)从商品库中查询出每种商品的总价值,并按降序排列出来。
对应的查询语句为:4(5)从教学库中查询出至少选修了姓名为刘芹的学生所选课程中任一门课的所有学生。
对应的查询语句为:5【答案】(1)B.B(2)D.D(3)E.E(4)A.A(5)E.E
形考任务三
一、单选题1.对Access数据库文件的基本操作是()。
【答案】打开、保存和关闭
2.下面属于Access数据库中所含操作对象的是()。
【答案】窗体
3.在Access数据库中,不存在的操作对象的类型是()。
【答案】视图
4.在Access数据库中,不存在的操作对象的类型是()。
【答案】表格
5.在Access的主界面操作窗口中,不存在的区域为()。
【答案】描述区
6.在Access工作窗口的功能区中,不存在的选项卡为()。
【答案】查询
7.在Access中,用来定义和保存数据的对象是( )。
【答案】表
8.在Access的宏和模块对象中,所包含的内容为()。
【答案】命令
9.能够在Access数据库中使用各种控件元素的对象类型是()。
【答案】窗体
10.在Access数据库的六大对象类型中,用于存储数据的对象是()。【答案】表
11.在Access中,能够使表中的某些字段不被显示出来的做法是()。【答案】隐藏
12.在Access中,字段的“有效性规则”属性可用来限制用户在该字段中输入的数据,它与该字段构成一个()。
【答案】逻辑表达式
13.在Access的表定义中,字段的OLE对象类型用来存储()。
【答案】文本数据
14.在Access的表设计视图中,其上半部分所列的数据项不包括()。【答案】字段属性
15.在Access的表设计视图中,进行字段有效性规则的设置时,字符文本需要使用的定界符为()。
【答案】双引号
16.在Access的表设计视图中,不属于字段属性设置的选项是()。
【答案】数据类型
17.在Access中,需要进行数据的导入和导出操作时,应使用的选项卡为()。
【答案】外部数据
18.在Access中,当建立表之间的关系时,不能够进行的选择是()。
【答案】级联插入相关记录
19.在Access 2010数据库中,数据表中的字段类型有多种,其中用来保存文本内容的两种数据类型是()。
【答案】文本和备注
20.如果要将查询结果作为一个新表添加到数据库中,应该使用()。【答案】生成表查询
21.在Access中要创建一个查询对象,不可以使用()。
【答案】窗体设计
22.下列不属于修改数据的查询是()。
【答案】选择查询
23.在Access的查询设计网格中,不包含的数据行是()。
【答案】与
24.在Access的查询设计网格中,不包含的数据行是()。
【答案】计算
25.在Access的“查询工具设计”选项卡功能区中,可以看到“查询类型”中的六大分类,分别是选择、交叉表、生成表、更新、追加和()。
【答案】删除
二、判断题
26.在Access数据库中,所有的基本数据都是存储在表对象中的。()【答案】对
27.Access数据库中的宏对象是在查询对象中使用的。()
【答案】错
28.Access数据库中,窗体和报表的数据来源是表或查询。()
【答案】对
29.嵌入到Access管理系统中的语言是VBA语言。()
【答案】对
30.一个Access数据库应用系统是一个由各种所需要的对象而组成的系统。()
【答案】对
31.一个Access数据库应用系统中最多存在着四种不同类型的操作对象。()
【答案】错
32.在利用Access新创建的空白数据库中,将自动打开一个表对象。()
【答案】对
33.在Access数据库管理系统界面中,同一时刻只能打开一个数据库文件。(
)【答案】对
34.在Access中,当打开一个新的数据库文件时,原有打开的数据库文件将自动被关闭掉。()
【答案】对
35.在Access数据库管理系统界面中,只存在着选项卡功能区和对象打开区,不存在导航窗格区。()
【答案】错
36.在Access中,数据表外观的调整只能改变其观感,不能改变表中数据的存储格式和内容。()
【答案】对
37.在Access中,查阅向导是一种数据类型,其值的来源可以是数据库中一个表内某列的值。()
【答案】对
38.在Access中,经常是通过数据表视图窗口来定义和修改表结构。()【答案】错
39.在Access的数据表中,字段的列宽和数据行的显示高度都是不可以调整的。()
【答案】错
40.在Access中,当打开一个数据表时,不能够隐藏和冻结某些字段。()
【答案】错
41.在Access中,建立两个数据表之间的关系连线时,此两个表之间的关系可以是1对1的关系。()
【答案】对
42.在Access的数据表视图窗口中,能够查看与之关联的子数据表的内容。()
【答案】对
43.在Access中,通过建立查询不能够改变现有表中的数据内容。()【答案】错
44.在Access中,通过建立交叉表查询能够改变现有表中的数据内容。()
【答案】错
45.在Access中,通过建立参数查询不能够改变现有表中的数据内容。()
【答案】对
46.在Access中,一个查询对象中的内容,能够来源于多个数据表。()【答案】对
47.在Access中,一个查询对象中的内容,可以来源于其它的查询对象。()
【答案】对
48.在Access中,查询设计视图包含上下两个部分,上半部分显示出进行查询设计的网格,下半部分显示出待查表的名称和字段。()
【答案】错
49.在Access的查询设计网格中,被列出的字段可以进行显示,也可以取消其显示。()
【答案】对
50.在Access中,利用查询只能够得到表中字段的内容,不能够对其进行计算、分组统计和汇总。()
【答案】错
形考任务四
一、单选题
1.下面不属于Access窗体中可用视图状态的是()。
【答案】追加视图
2.在Access中,一屏只能显示表中一条记录的窗体类型属于()。
【答案】纵栏式
3.在窗体使用的控件中,用于显示和修改数据表中字段的常用控件是()。
【答案】文本框控件
4.在Access中,若要实现不同操作对象之间的切换,则应该使用的对象是()。
【答案】窗体
5.在Access的操作界面中,命令按钮控件主要被使用的对象类型是()。
【答案】窗体
6.在Access中,有四种自动创建窗体的命令,下面不属于此类命令的是()。
【答案】空白窗体
7.在Access中,不属于系统提供的建立窗体命令的名称是()。
【答案】主子窗体
8.在Access的窗体中,若用来显示“是/否”型字段,则不应该选取的控件是()。
【答案】列表框
9.在Access中,所有控件被分为三大类,其中不属于此类名称的是()。
【答案】字符型
10.在Access中,一个窗体由三个部分所组成,其中包括窗体页脚、主体和()。
【答案】窗体页眉
11.报表中不可缺少的部分是()。
【答案】主体
12.如果要设计一个报表,该报表将用于标识公司的资产设备,则应将该报表设计为()。
【答案】标签报表
13.报表由5个部分所组成,紧邻主体部分之后的部分是()。
【答案】页面页脚
14.报表由5个部分所组成,则最末尾的部分是()。
【答案】报表页脚
15.报表有4种视图状态,分别是报表视图、打印预览、设计视图和()。
【答案】布局视图
16.报表操作中可以使用5种命令生成报表,包括报表、空报表、标签、报表向导和()。
【答案】报表设计
17.下列不属于Access数据库中六种操作对象类型的是()。
【答案】过程
18.宏操作命令的功能是打开一个()。
【答案】窗体
19.在Access中,若利用宏打开一个查询,则选择的宏操作命令是()。【答案】
20.创建宏时至少要定义一个宏操作,并要设置相应的()。
【答案】宏操作参数
21.当启动一个数据库时将自动执行一个宏,此宏的名称必须为()。【答案】
22.在Access中,将焦点转移到窗口中指定控件上的宏操作命令是()。
【答案】
23.在VBA语言中,全局变量定义语句的开始关键字是()。
【答案】Public
24.在Access中,每个模块对象内的过程所包含的语法成分是()。
【答案】语句
25.在Access数据库中,模块被分为类模块和()。
【答案】标准模块
二、判断题
26.在Access中,普通窗体视图才对应有布局视图,数据表窗体视图没有对应的布局视图。()
【答案】对
27.在Access中,使用“窗体向导”命令不可以创建主/子窗体。()【答案】错
28.对于Access中的每个窗体对象,只有布局视图和设计视图状态,而没有其他的视图状态。()
【答案】错
29.在Access中,文本框控件不仅能够用于显示数据,而且能够用于输入或者编辑数据。()
【答案】对
30.在Access中,一个窗体是由各种控件组合而成的一个整体对象。()【答案】对
31.在Access的窗体中,绑定型控件主要起到信息提示和美化窗体的作用。()
【答案】错
32.在Access的窗体中,一个选项组对象只能包含多个切换按钮、不能包含多个选项按钮。()
【答案】错
33.报表与窗体一样具有对数据的修改和显示功能。()
【答案】错
34.标签报表是通过报表向导从表或查询中选取部分字段生成的。()【答案】错
35.可以利用“空报表”和“报表设计”命令,向报表中添加相关控件。()
【答案】对
36.利用“报表设计”命令建立报表时,不能向报表中添加相关控件。()
【答案】错
37.利用“标签”命令建立标签报表时,将依次打开一系列标签向导对话框。()
【答案】对
38.当打开一个表对象后,利用“报表”命令建立报表时,将立即产生出针对该表对象的一个报表。()
【答案】对
39.在Access中,建立一个宏对象时,可以包含有一条或若干条宏命令。()
【答案】对
40.在Access中,利用表达式生成器能够建立一个宏对象。()
【答案】错
41.通过使用宏对象,用户不必利用VBA编写代码,即可添加相应控件的操作功能。()
【答案】对
42.在运行一个宏时,宏中的每一个命令操作将由上向下顺序执行。()【答案】对
43.利用宏对象能够关闭表、查询、窗体等对象。()
【答案】对
44.进行VBA程序开发所使用的编辑工具是VBE(Visual Basic for Editor)。()
【答案】对
45.利用VBA编写相应事件的过程代码时,使用的是表达式生成器。()【答案】错
46.在VBA语言中,所使用的语句关键字、函数名、变量名、对象名等,不必区分字母大小写,它们是等效的。()
【答案】对
47.对一个控件建立相应的事件过程时,它可以是以SUB为标识的一般过程,也可以是以为标识的函数过程。()
【答案】错
48.在Access中,对窗体和报表进行复制、导出等操作时,所含的事件过程将不会跟着被复制和导出。()
【答案】错
49.在VBA语言中,进行数据库访问的方法之一是采用ADO接口技术,它的英文含义是ActiveX Data Objects。()
【答案】对
50.在VBA语言中,进行数据库访问的方法有多种,本教材中主要介绍的是DAO方法。()
【答案】错
电大搜题
*请认真填写需求信息,我们会在24小时内与您取得联系。