在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內。錯選、多選或未選均無分。
1.以下不是數據庫技術所具備的特點是( )
a.數據結構化 b.數據冗余小
c.有較高的數據獨立性 d.數據聯系弱
2.在信息模型的“學生”實體中,對每個學生的具體情況的描述,稱為( )
a.實體值 b.實體型
c.屬性值 d.屬性型
3.可用于區別實體集中不同個體的屬性或屬性組合,稱為該實體的( )
a.屬性型 b.鍵
c.外部鍵 d.實體型
4.設一個體育項目可以有多個運動員報名,一個運動員可參加多個項目,運動員與體育項目之間是( )
a.一對一的聯系 b.一對多的聯系
c.多對一的聯系 d.多對多的聯系
5.實體完整性約束可以通過( )
a.定義外部鍵來保證 b.定義主鍵來保證
c.用戶定義的完整性來保證 d.定義字段類型來保證
6.下面結論不正確的是( )
a.若a→b,b→c,則a→c b.若a→b,a→c,則a→(b,c)
c.若b→a,c→a,則(b,c)→a d.若(b,c)→a,則b→a,c→a
7.設r為k1度關系,s為k2度關系,則r和s的笛卡爾積的度為( )
a.k1 b.k2
c.k1 k2 d.k1×k2
8.將e—r圖轉換為關系模型,屬于數據庫設計的( )
a.事務設計階段 b.物理設計階段
c.邏輯設計階段 d.應用程序設計階段
9.數據庫系統開發完成以后,不需要提供給用戶的文檔資料是( )
a.系統說明書 b.技術說明書
c.使用說明書 d.可行性說明書
10.使用sql語句在學生成績表(學號,課程號,成績)中,查詢平均成績大于60分的學生時,不必使用的子句是( )
a.select b.group by
c.where d.having
11.定義內存變量時,不能使用的數據類型是( )
a.數值型 b.日 期型
c.通用型 d.字符型
12.下列函數中,返回非邏輯型值的函數是( )
a.bof b.recno
c.found d.eof
13.在foxpro中,對數函數log(n)是以( )
a.10為底 b.2為底
c.e為底 d.n為底
14.在foxpro中定義字段變量時,允許用戶自行定義數據長度的是( )
a.邏輯型 b.數值型
c.日 期型 d.通用型
15.下列命令中,不與用戶進行交互方式操作的命令是( )
a.browse b.replace
c.edit d.modify
16.在數據庫文件已打開、而索引文件尚未打開時,打開索引文件的命令是( )
a.use<索引文件名> b.index to<索引文件名>
c.index on<索引文件名> d.set index to<索引文件名>
17.下列敘述中,正確的是( )
a.創建數據庫文件的索引文件時,只能按關鍵字表達式的值升序排列
b.一個數據庫文件可以在不同工作區中同時打開
c.字段變量不受工作區的約束,任意使用
d.在一個工作區中可以同時打開由join命令生成的庫文件以及原來的庫文件
18.設x=123.456,執行命令
@10,10 say"x=" get x picture "99999.99"
輸出結果是(其中: 表示一個空格)( )
a.x=123.456 b.x= 123.45
c.x= 123.46 d.x=123.45
19.存盤并關閉命令文件編輯窗口的按鍵是( )
a.ctrl ks b.ctrl w
c.ctrl kd d.ctrl s
20.生成屏幕程序后,要對其進行修改,必須首先修改的文件的擴展名是( )
a.scx b.sct
c.spr d.spx
二、填空題(本大題共10小題,每小題1分,共10分)
請在每小題的空格中填上正確答案。錯填、不填均無分。
21.關系數據操縱語言的操作對象與結果都是________________。
22.數據模型應具有描述數據和________________兩方面的功能。
23.實體和屬性屬于________________世界的術語。
24.設關系表r(a,b)中包含3個元組,表s(c,d,e)中包含2個元組,r和s做自然連接后所得關系的基數為__________。
25.引用完整性約束規則是限制引用________________的記錄。
26.關系模式的分解應保持無損性和________________。
27.1nf的關系消除非主屬性對候選鍵的__________函數依賴后,可將范式等級提高到2nf。
28.在foxpro中,字符型字段的最大字符數為________________。
29.foxpro中使用index命令建立索引文件,索引表達式允許是字符型、數值型、日 期型表達式,當需要多字段索引時,索引表達式必須是_____表達式。
30.在foxpro的格式化輸出命令中,picture子句的作用是用于定義數據的________________。 三、程序分析題(本大題共3小題,每小題5分,共15分)
31.現有數據庫stud.dbf,其字段有sno(學號,字符型),sname(姓名,字符型),age(年齡,整型),sex(性別,字符型),cno(班號,字符型),avgrade(平均成績,數值型)。stud.dbf所包含的記錄如下:
sno sname age sex cno avgrade
99001 王曉明 23 男 90991 54.4
99002 張雨梅 22 女 90992 90.6
99003 何玉鑫 24 男 90993 68.0
99004 周雨心 22 女 90991 69.8
99005 商 海 25 男 90991 82.0
99006 劉達西 24 男 90192 91.4
99007 朱國海 23 男 90991 85.6
99008 周維維 23 女 90993 77.7
給出下述程序的執行結果。
set talk off
use stud
go 2
list next 3 fields sname for cno="90992".and. sex="女"
index on cno to studidx
go 3
skip-2
display fields sname, sex for cno="90991"
list fields sname, avgrade for avgrade>90
set talk on
return
執行結果為:
(1)
(2)
(3)
32.給出下述程序的執行結果。
set talk off
s=0
x=1
for i=1 to 8 step 2
s=s x
x=2
? x
endfor
? s
return
執行結果:
(1)
(2)
(3)
(4)
(5)
33.現有數據庫文件supply.dbf,用于存放供應信息,其字段有:sname(供應商,字符型),iname(商品,字符型),price(單價,數值型)。supply.dbf中的內容如下:
sname iname price
s1 i1 80
s2 i1 90
s3 i3 70
s2 i2 90
s3 i4 80
s1 i2 90
給出下述程序的執行結果。
set talk off
clear all
dimension ary(3)
use supply
sort to new on iname, price
use new
do while. not. eof( )
scatter to ary
mnum=1
scan rest while iname=ary(2)
if price< >ary (3)then
mnum=mnum 1
endif
endscan
if mnum=1 then
? ary(2) space(2) str(ary(3),2)
endif
enddo
use
return
執行結果:(1)
(2)
(3)
四、程序設計題(本大題共5小題,每小題5分,共25分)
34.已知考試成績數據庫文件grade.dbf,其字段有:number(序號,字符型),name(姓名,字符型),age(年齡,數值型),math(數字,數值型),english(英語,數值型),pass(通過,邏輯型)。現要求將數學和英語成績均不低于60分的記錄的pass字段值置為真。請完成下述程序。
set talk off
use grade
replace pass with (1) for (2) all
list for (3) to (4)
use
set talk on
return
(1)
(2)
(3)
(4)
35.已知數據庫文件 product.dbf,其字段有pno(產品編號,字符型),pname(產品名,字符型),amount(數量,數值型),price(價格,數值型),parea(產地,字符型)。現要求列出產地為“四川”的產品的數量,以及產品數量最多的產地。請完成下述程序:
set talk off
clear
select sum(amount), parea from (1) ;
where parea="四川";
order by amount desc
select product
index on (2) to pindx
total on (3) to ptot
d=space(20)
select 2
use ptot
max1=amount
do while.not.eof( )
if (4) then
max1=amount
d=parea
endif
skip
enddo
?"產地:",d,"最大數量",max1
close all
set talk on
return
(1)
(2)
(3)
(4)
36.已知學生數據庫文件stud.dbf,其字段有sno(學號,數值型),sname(姓名,字符型)。現抽取學號能被3整除的學生參加數學建模比賽,要求顯示被抽到的學生的學號和姓名。請完成下述程序。
set talk off
use stud
copy structure to stud1 fields sno, sname
select 2
use stud1
append blank
select 1
do while (1)
if (2) then
select 2
replace sno with a->sno, sname with a->sname
(3)
endif
select 1
(4)
enddo
select 2
list
close all
set talk on
return
(1)
(2)
(3)
(4)
37.數據庫文件study.dbf的字段有:sname(學生名,字符型),cno(課程號,字符型),grade(分數,數值型)。數據庫文件course.dbf的字段有:cname(課程名,字符型),cno(課程號,字符型),credit(學分,數值型)。下述程序的功能是查找只有一個學生學過的課程信息。請完成下述程序。
set talk off
(1)
select b
use course
select a
use study
join with course to new fields cno, course->cname, course->credit, sname;
for (2)
use new
index on cno to new
do while (3)
scatter to ary
count to num while (4)
if num=1 then
? ary(1), ary(2), ary(3)
endif
enddo
clear all
return
(1)
(2)
(3)
(4)
38.數據庫文件orders.dbf用于存放顧客的購物信息,其字段有:cname(顧客名,字符型),iname(商品名,字符型),num(數量,數值型)。下述程序的功能是按數量對orders.dbf中的記錄以升序排列。請完成下述程序。
set talk off
dimension ary(3), tmp(3)
use orders
for i=reccount( ) to 1 step –1
go i
scatter to ary
(1)
scan next i
if (2) then
(3)
gather from ary
for j=1 to 3
ary(j)=tmp(j)
endfor
endif
endscan
gather from ary
endfor
list
use
return
(1)
(2)
(3)
五、綜合題(本大題共2小題,每小題5分,共10分)
39.數據庫文件hotel.dbf的字段有:roomno(房間號,字符型),roomtype(房間類型,字符型),roomprice(單價,數值型)和occupied(入住,邏輯型)。其中roomtype有"a"、
"b"、"c"、"d"四類房型。請說明函數occupy( ),roty( ),ropr( )的功能。
set talk off
set procedure to stat
use hotel
clear
?? occupy ( )
?? roty ( )
?? ropr ( )
use
set procedure to
return文件stat.prg的內容如下:
function occupy( )
private num
num=0
scan
if occupied then
num=num 1
endif
endscan
occupy=num/reccount( )
return occupyfunction roty( )
private num1
num1=0
scan
if occupied .and. roomtype="a"then
num1=num1 1
endif
endscan
roty=num1
return roty
function ropr( )
private num2
num2=0
scan
if occupied .and. roomtype="b"then
num2=num2 roomprice
endif
endscan
ropr=num2
return ropr
(1)函數occupy()功能:
(2)函數roty()功能:
(3)函數ropr()功能:
40.已知關系模式r(city, street, zip)其中city為城市編號,street為街道編號,zip為郵政編碼,一個城市的一條街道只有一個郵政編碼,一個郵政編碼只屬于一個城市。請寫出r上成立的所有函數依賴及所有候選鍵,并說明r最高是第幾范式。