三級數(shù)據(jù)庫歷年考試真題論述題詳解[2]

字號:

設(shè)計(jì)一個(gè)用于管理會(huì)議室的數(shù)據(jù)庫。經(jīng)調(diào)查分析,得到的數(shù)據(jù)項(xiàng)列出如下:
    房間號r#CHAR(4),部門號d#CHAR(3),部門名稱dnameCHAR(20),
    房間容量contentINT,部門主管dmanagerCHAR(8),開會(huì)日期mdateDATE,
    會(huì)議名稱cnameCHAR(20),會(huì)議主題(subject)CHAR(80),會(huì)議類型(type),
    部門人數(shù)dnumINT,當(dāng)前房間狀態(tài)stateCHAR(1),
    并確定以會(huì)議室(room)信息,部門(department)信息,會(huì)議(conference)信息為實(shí)體,它們通過“開會(huì)(meeting)”聯(lián)系起來。為了簡化問題做如下假定:
    l 會(huì)議以部門召開,但一個(gè)部門在同一會(huì)議室不能重復(fù)召開同一個(gè)會(huì)議。
    l 會(huì)議室按部門借用,且不預(yù)借。
    l 當(dāng)前房間狀態(tài)取值為‘1’表示該會(huì)議室當(dāng)前正在開會(huì),取值為‘0’表示該會(huì)議室當(dāng)前未被借用。
    數(shù)據(jù)庫概念設(shè)計(jì)的只包含主鍵屬性的簡化E-R圖如下:
    cname
    r#
    會(huì)議conference
    房間room
    部門department
    d#
    開會(huì)meeting
    m
    n
    p
    要求:
    ⑴數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計(jì):給出相應(yīng)的表名、表的屬性名(數(shù)據(jù)類型可省)、主鍵。(14分)
    ⑵給出下列查詢的SQL語句:(16分,每小題4分)
    a)當(dāng)前未借用的會(huì)議室(房間號)和容量:
    b)2000年4月8日有哪些部門(部門名稱)在開會(huì)?他們的主管是誰?
    c)2000年4月8日‘信息中心’在哪個(gè)會(huì)議室(房間號)開會(huì)?會(huì)議名稱和主題是什么?
    d)當(dāng)前能夠適合‘信息中心’開會(huì)的有哪些會(huì)議室(房間號)?
    答案:
    (1)數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計(jì)(給出相應(yīng)的表名,表結(jié)構(gòu),主鍵;(14分)
    room(r#,content,state)主鍵:r#(3分)
    department(d#,dname,dmanager,dnum)主鍵:d#(3分)
    conference(cname,subject,type)主鍵:cname(3分)
    meeting(r#,d#,cname,mdate)主鍵(r#,d#,cname)(5分)
    (2)給出下列查詢的SQL語句:(16分,每小題4分)
    a)當(dāng)前未借用的會(huì)議室(房間號)和容量:
    selectr#,contentfromroomwherestate=’0’
    b)2000年4月8日有哪些部門(部門名稱)在開會(huì)?他們的主管是誰?
    Selectdname,dmanagerfromdepartmentd,meetingm
    whered.d#=m.d#andmdate=’2000年4月8日’
    或
    Selectdname,dmanagerfromdepartmentd
    whered.d#=in(selectm.d#=frommeetingmWheremdate=’2000年4月8日’)
    c)2000年4月8日’信息中心’在哪個(gè)會(huì)議室(房間號)開會(huì)?會(huì)議名稱和主題是什么?
    Selectr#,m.cname,subjectfromdepartmentd,meetingm,conferencec
    whered.d#=m.d#andm.cname=c.cnameand
    Mdate=’2000年4月8日’anddname=’信息中心’
    或(注:本題中Selectr#,c.cname,......也可以是Selectr#,m.cname,......
    Selectr#,c.cname,subjectfrommeetingm,conferencec
    WhereMdate=’2000年4月8日’andm.cname=c.cnameand
    m.d#=(selectd.d#fromdepartmentdwheredname=’信息中心’)
    d)當(dāng)前能夠適合’信息中心’開會(huì)的有哪些會(huì)議室(房間號)?
    Selectr#fromroomwherestate=’O’and
    content>=(selectdnumfromdepartmentwheredname=’信息中心’)