设计一个用于管理会议室的数据库。经调查分析,得到的数据项列出如下:
房间号r CHAR(4),部门号d CHAR(3),部门名称dname CHAR(20),
房间容量content INT,部门主管dmanager CHAR(8),开会日期mdate DATE,
会议名称cname CHAR(20),会议主题(subject)CHAR(80),会议类型(type),
部门人数dnum INT,当前房间状态state CHAR(1),
并确定以会议室(room)信息、部门(department)信息、会议(conference)信息为实体,它们
通过”开会(meeting)”联系起来。为了简化问题做如下假定:
会议以部门召开,但一个部门在同一会议室不能重复召开同一个会议。会议室按部门借用,且不预借。当前房间状态取值为'1'表示该会议室当前正在开会,取值为'0'表示该会议室当前未被借用。数据库概念设计的只包含主键属性的简化E-R图如下:
要求:
(1) 数据库的逻辑结构设计:给出相应的表名、表的属性名(数据类型可省)、主键。
(2) 给出下列查询的SQL语句:
a) 当前未借用的会议室(房间号)和容量;
b) 2000年4月8日有哪些部门(部门名称)在开会?他们的主管是谁?
c) 2000年4月8日'信息中43'在哪个会议室(房间号)开会?会议名称和主题是什么?
d) 当前能够适合'信息中43'开会的有哪些会议室(房间号)?
答案说明:本题目答案来自网络整理或转载,最终答案请以官网为准。
答 案:(1) 数据库的逻辑结构设计(给出相应的表名、表结构、主键): room(r#contentstate)主键:r# department(d#dnamedmanagerdnum)主键:d# conference(cnameSubjecttype)主键:cname meeting(r#d#cnamemdate)主键(r#d#cname) (2) 给出下列查询的SQL语句: a) 当前未借用的会议室(房间号)和容量: select r#content from room where state='O’ b) 2000年4月8日有哪些部门(部门名称)在开会?他们的主管是谁? Select dnamedmanager from departmentdmeeting m; Where d.d#=m.d# and mdate='2000年4月8 日' 或 Select dnamedmanager from department d; Where d.d#=in(select m.d#=from meeting m; Where mdate='2000年4月8日) c) 2000年4月8日'信息中心在哪个会议室(房间号)开会?会议名称和主题是什么? Select r#m.cnamesubject from department dmeeting mconference c; Where d.d#=m.d# and m.cname=c.cname and; Mdate='2000年4月8日'and dname='信息中心' 或(注:本题中Select r#c.cname…….也可以是Select r#m.cname……. Select r#c.cnamesubject from meeting mconference c; Where Mdate='2000年4月8日'and m.cname=c.cname and; m.d#=(select d.d# from department d where dname='信息中心') d) 当前能够适合信息中心开会的有哪些会议室(房间号)? Select r# from room where state='O'and; content>=(select dnum from department where dname='信息中心')
(1) 数据库的逻辑结构设计(给出相应的表名、表结构、主键): room(r#,content,state)主键:r# department(d#,dname,dmanager,dnum)主键:d# conference(cname,Subject,type)主键:cname meeting(r#,d#,cname,mdate)主键(r#,d#,cname) (2) 给出下列查询的SQL语句: a) 当前未借用的会议室(房间号)和容量: select r#,content from room where state='O’ b) 2000年4月8日有哪些部门(部门名称)在开会?他们的主管是谁? Select dname,dmanager from departmentd,meeting m; Where d.d#=m.d# and mdate='2000年4月8 日' 或 Select dname,dmanager from department d; Where d.d#=in(select m.d#=from meeting m; Where mdate='2000年4月8日,) c) 2000年4月8日'信息中心,在哪个会议室(房间号)开会?会议名称和主题是什么? Select r#,m.cname,subject from department d,meeting m,conference c; Where d.d#=m.d# and m.cname=c.cname and; Mdate='2000年4月8日'and dname='信息中心' 或(注:本题中Select r#,c.cname,…….也可以是Select r#,m.cname,……. Select r#,c.cname,subject from meeting m,conference c; Where Mdate='2000年4月8日'and m.cname=c.cname and; m.d#=(select d.d# from department d where dname='信息中心') d) 当前能够适合,信息中心,开会的有哪些会议室(房间号)? Select r# from room where state='O'and; content>=(select dnum from department where dname='信息中心')