06年01月資料庫及套用試題

一、單項選擇題(本大題共20小題,每小題2分,共40分)
在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題後的括弧內。錯選、多選或未選均無分。
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
? 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 occupy

function 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最高是第幾範式。