計(jì)算機(jī)等級(jí)考試三級(jí)數(shù)據(jù)庫(kù)論述題真題(2-3)
5.(2002年)為學(xué)校中學(xué)生選課管理這個(gè)現(xiàn)實(shí)問(wèn)題進(jìn)行數(shù)據(jù)庫(kù)模式設(shè)計(jì)。根據(jù)調(diào)查分析,確定它的屬性集合為:U={S#,C#,SNAME,CNAME,TEACHER,GRADE,SD}
下面給出兩種確定的模式設(shè)計(jì)方案:
方案一:只有一個(gè)關(guān)系模式:
R(S#,C#,SNAME,CNAME,TEACHER,GRADE,SD)
方案二:如果根據(jù)屬性之間存在的聯(lián)系或相關(guān)性,建立如下三個(gè)關(guān)系:
S(S#,SNAME,SD),C(C#,CNAME,TEACHER),SC(S#,C#,GRADE)
(1).試分析這兩種模式設(shè)計(jì)方案各自的優(yōu)缺點(diǎn)。(26分)
(2).通常情況下你認(rèn)為哪種方案更“好”些?請(qǐng)說(shuō)明理由。(4分)
答案:
對(duì)一個(gè)現(xiàn)實(shí)問(wèn)題,進(jìn)行關(guān)系數(shù)據(jù)庫(kù)模式設(shè)計(jì),通常其設(shè)計(jì)結(jié)果不是唯一的。每個(gè)方案有各自的優(yōu)缺點(diǎn)。對(duì)本題可以得到如下的分析結(jié)果:
對(duì)方案一:這個(gè)關(guān)系模式存在如下問(wèn)題:(每個(gè)問(wèn)題4分,共16分。若只給出問(wèn)題,沒有說(shuō)明得2.5分)
(1).數(shù)據(jù)存在大量冗余。例如:(至少給出1項(xiàng))
S#,SNAME,SD要重復(fù)“每個(gè)學(xué)生選修的課程數(shù)”
C#,CNAME,TEACHER要重復(fù)“學(xué)生選修這門課的人數(shù)”
(2).更新異常。由于數(shù)據(jù)存在大量冗余,容易引起更新異常。例如,當(dāng)更新某門課程的教師時(shí),由于數(shù)據(jù)存在大量冗余,可能造成與這門課程有關(guān)的元組中,一部分元組的TEACHER的值被更新,而另一部分元組的TEACHER的值未被更新。
(3).插入異常。顯然,這個(gè)關(guān)系的主鍵是S#和C#。由于主鍵屬性值不能為空值,當(dāng)?shù)怯泴W(xué)生信息時(shí),由于該學(xué)生尚未選課,C#未確定,該學(xué)生的其他信息也無(wú)法登入,這不是我們的意愿。
(4).刪除異常。如果某些課程因故刪除了,則只選修這些課程的學(xué)生信息也被刪除了,這往往也不是我們的本意,我們并不希望刪除這些學(xué)生的信息。
對(duì)方案二:如果根據(jù)屬性之間存在的聯(lián)系或相關(guān)性,建立了三個(gè)關(guān)系,則方案一中存在的異,F(xiàn)象被消除了。(得5分)
但對(duì)諸如“查找張三的數(shù)據(jù)庫(kù)技術(shù)課程的成績(jī)”之類的問(wèn)題時(shí),這需要連接這三個(gè)關(guān)系才能完成,這個(gè)查詢代價(jià)高而且會(huì)影響效率。(得2.5分)
相比之下,第一個(gè)方案則可直接投影、選擇就可以完成這類查詢,不需要連接操作,顯然代價(jià)低而且效率高。(得2.5分)
比較這兩種設(shè)計(jì)方案:本人認(rèn)為第二種設(shè)計(jì)方案雖然對(duì)某些查詢問(wèn)題連接操作較多,但它仍比第一種方案“好”,因?yàn)樗淮嬖谏鲜霎惓?wèn)題。(得4分)
6.(2003年)在"學(xué)生-選課-課程"數(shù)據(jù)庫(kù)中有三個(gè)關(guān)系:S(S#,SNAME,SEX,AGE,SD),SC(S#,C#,GRADE),C(C#,CNAME,TEACHER)。它們的主碼分別是S#,(S#,C#),C#,并且其他屬性都允許為空值(NULL)。用下面的SQL語(yǔ)句創(chuàng)建了兩個(gè)視圖:
createviewCS_SasselectS#,SNAME,AGEfromS
whereSD=’計(jì)算機(jī)系’;
createviewS_G(S#,GAVG)asselectS#,avg(GRADE)
fromSCgroupbyS#;
若用下面的.SQL語(yǔ)句對(duì)上述視圖進(jìn)行修改,它們能被成功執(zhí)行嗎?為什么?
(1)updateCS_SsetSNAME=’WANGPING’whereS#=’200301001’;
(這里假定在表S中存在學(xué)生號(hào)S#=’200301001’的行。)
(2)insertintoCS_Svalues(’200302189’,’YANGXIN’,21);
。ㄟ@里假定在表S中不存在學(xué)生號(hào)S#=’200302189’的行。)
(3)updateS_GsetGAVG=85whereS#=’200301001’;
(這里假定在表SC中存在學(xué)生號(hào)S#=’200301001’的行。)
要求:
首先回答這三個(gè)SQL語(yǔ)句中哪個(gè)(些)能被成功執(zhí)行,哪個(gè)(些)不能被成功執(zhí)行(12分),再進(jìn)一步說(shuō)明能被成功執(zhí)行或不能被成功執(zhí)行的理由(18分)。
答案:
(1).第(1)和(2)兩個(gè)SQL語(yǔ)句能被成功執(zhí)行;第(3)個(gè)SQL語(yǔ)句不能被成功執(zhí)行。
(2).因?yàn)閷?duì)視圖的修改最終要轉(zhuǎn)換為對(duì)基本表的修改。
Ⅰ對(duì)于第(1)個(gè)SQL語(yǔ)句能被成功執(zhí)行的理由是:執(zhí)行這個(gè)SQL語(yǔ)句將轉(zhuǎn)換成執(zhí)行如下的SQL語(yǔ)句:
updateSsetSNAME=’WANGPING’
whereSD=’計(jì)算機(jī)系’andS#=’200301001’;
、?qū)τ诘?2)個(gè)SQL語(yǔ)句能被成功執(zhí)行的理由是:執(zhí)行這個(gè)SQL語(yǔ)句將轉(zhuǎn)換成執(zhí)行如下的SQL語(yǔ)句:
insertintoSvalues(’200302189’,’YANGXIN’,NULL,21,’計(jì)算機(jī)系’)
或insertintoS(S#,SNAME,AGE,SD)values(’200302189’,’YANGXIN’,21,’計(jì)算機(jī)系’)
轉(zhuǎn)換后的這兩個(gè)SQL語(yǔ)句,在本題意的假定下是能夠被成功執(zhí)行的。所以第(1)和(2)個(gè)SQL語(yǔ)句能被成功執(zhí)行。
、髮(duì)于第(3)個(gè)SQL語(yǔ)句不能被成功執(zhí)行的理由是:由于視圖S_G中的一個(gè)行是由表SC中若干行經(jīng)過(guò)分組求平均值得到的,因此對(duì)視圖S_G的更新就無(wú)法轉(zhuǎn)換成對(duì)基本表SC的更新。所以第(3)個(gè)SQL語(yǔ)句不能被成功執(zhí)行。http://fnhaliao.com/
【計(jì)算機(jī)等級(jí)考試三級(jí)數(shù)據(jù)庫(kù)論述題真題(2-3)】相關(guān)文章:
計(jì)算機(jī)等級(jí)考試三級(jí)數(shù)據(jù)庫(kù)論述題真題(2-4)10-09
計(jì)算機(jī)等級(jí)考試三級(jí)數(shù)據(jù)庫(kù)論述題真題(2-1)10-09
計(jì)算機(jī)等級(jí)考試三級(jí)數(shù)據(jù)庫(kù)論述題真題(2-2)10-09
全國(guó)計(jì)算機(jī)等級(jí)考試三級(jí)數(shù)據(jù)庫(kù)論述題匯總10-09
全國(guó)計(jì)算機(jī)等級(jí)考試三級(jí)數(shù)據(jù)庫(kù)技術(shù)考試歷年真題10-09
計(jì)算機(jī)等級(jí)考試三級(jí)數(shù)據(jù)庫(kù)技術(shù)樣題10-09
計(jì)算機(jī)等級(jí)三級(jí)數(shù)據(jù)庫(kù)題01-27