一、背景
常見的數據庫設計是使用連續的整數為做主鍵,當新的數據插入到數據庫時,由數據庫自動生成,但這種設計不一定適合所有場景。
隨著越來越多的應用程序使用、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小時內與您取得聯系。