资源描述
第1周(第四章:SQL体系结构、组成、建库建表,索引自学)
一、实验课:
1. 建立school数据库
2. 在school下建立如下数据库表,根据表中数据选取合适的数据类型及宽度,设置各表的主键及表间外键联系:
注意:字段名是对应汉字字段名的汉语拼音第一个字母组合而成
l 学生表S:学号,姓名,性别,出生日期,籍贯,手机号码,院系号;
表1:S
xh
xm
xb
csrq
jg
sjhm
yxh
1101
李明
男
1993-03-06
上海
13613005486
02
1102
刘晓明
男
1992-12-08
安徽
18913457890
01
1103
张颖
女
1993-01-05
江苏
18826490423
01
1104
刘晶晶
女
1994-11-06
上海
13331934111
01
1105
刘成刚
男
1991-06-07
上海
18015872567
01
1106
李二丽
女
1993-05-04
江苏
18107620945
01
1107
张晓峰
男
1992-08-16
浙江
13912341078
01
l 院系表D:院系号,名称,地址,联系电话;
表2:D
yxh
mc
dz
lxdh
01
计算机学院
上大东校区三号楼
65347567
02
通讯学院
上大东校区二号楼
65341234
03
材料学院
上大东校区四号楼
65347890
l 教师表T:工号,姓名,性别,出生日期,学历,基本工资,院系编号;
表3:T
gh
xm
xb
csrq
xl
jbgz
yxh
0101
陈迪茂
男
1973-03-06
副教授
3567.00
01
0102
马小红
女
1972-12-08
讲师
2845.00
01
0201
张心颖
女
1960-01-05
教授
4200.00
02
0103
吴宝钢
男
1980-11-06
讲师
2554.00
01
l 课程表C:课号,课名,学分,学时,院系号;(默认学分4,学时40)
表4:C
kh
km
xf
xs
yxh
08305001
离散数学
4
40
01
08305002
数据库原理
4
50
01
08305003
数据结构
4
50
01
08305004
系统结构
6
60
01
08301001
分子物理学
4
40
03
08302001
通信学
3
30
02
l 开课表O:学期,课号,工号,上课时间;
表5:O
xq
kh
gh
sksj
2012-2013秋季
08305001
0103
星期三5-8
2012-2013冬季
08305002
0101
星期三1-4
2012-2013冬季
08305002
0102
星期三1-4
2012-2013冬季
08305002
0103
星期三1-4
2012-2013冬季
08305003
0102
星期五5-8
2013-2014秋季
08305004
0101
星期二1-4
2013-2014秋季
08305001
0102
星期一5-8
2013-2014冬季
08302001
0201
星期一5-8
l 选课表E:学号,学期,课号,工号,平时成绩,考试成绩,总评成绩;(成绩范围1-100)
表6:E
xh
xq
kh
gh
pscj
kscj
zpcj
1101
2012-2013秋季
08305001
0103
60
60
60
1102
2012-2013秋季
08305001
0103
87
87
87
1102
2012-2013冬季
08305002
0101
82
82
82
1102
2013-2014秋季
08305004
0101
null
null
null
1103
2012-2013秋季
08305001
0103
56
56
56
1103
2012-2013冬季
08305002
0102
75
75
75
1103
2012-2013冬季
08305003
0102
84
84
84
1103
2013-2014秋季
08305001
0102
null
null
null
1103
2013-2014秋季
08305004
0101
null
null
null
1104
2012-2013秋季
08305001
0103
74
74
74
1104
2013-2014冬季
08302001
0201
null
null
null
1106
2012-2013秋季
08305001
0103
85
85
85
1106
2012-2013冬季
08305002
0103
66
66
66
1107
2012-2013秋季
08305001
0103
90
90
90
1107
2012-2013冬季
08305003
0102
79
79
79
1107
2013-2014秋季
08305004
0101
null
null
null
3. 在学生表中建立索引idx1:院系号升序,姓名降序
在课程表中建立索引idx2:课名
二、研讨课:(参考答案)
1. 请说明school数据库中各表的主键和外键。同时说明:在学生表中的yxh字段输入“04”或在院系表中删除yxh为“01”记录,会有什么结果?
l 学生表S:学号,院系号
l 院系表D:院系号
l 教师表T:工号,院系号
l 课程表C:课号,院系号
l 开课表O:学期,课号,工号,课号,工号
l 选课表E:学号,学期,课号,工号,学号,学期,课号,工号
不能输入04:因为外键值在对应主键中没有出现
不能删除:因为外键表中有相应数据 或 级联删除和院系相关的数据
2. 什么是关系型数据库?什么是非关系型数据库?各举1个典型产品简单介绍他们特点?
关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加·科德于1970年首先提出的,并配合“科德十二定律”。现如今虽然对此模型有一些批评意见,但它还是数据存储的传统标准。标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。 关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。ORACLE、SQLServer、Sybase、Informix、mysql等。
非关系型的数据库(NoSQL),随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。CouchDB、MonogDB等。
3. 教师表中定义两个检查约束:
1) 性别只能输入“男”和“女”
check(xb=’男’ or xb=’女’)
2) 男老师的基本工资必须超过2500元
check((xb=’男’ and jbgz>2500)or xb=’女’)
第2周(第四章:投影、选择、多表连接和嵌套,排序自学)
一、实验课:
1. 查询2011年进校年龄大于20岁的男学生的学号与姓名。
2. 检索刘晓明不学的课程的课程号。
3. 检索马小红老师所授课程的学年,学期,课程号,上课时间。
4. 查询计算机学院男生总评成绩及格、教授开设的课程的课程号、课名、开课教师姓名,按开课教师升序,课程号降序排序。
5. 检索学号比张颖同学大,年龄比张颖同学小的同学学号、姓名。
6. 检索同时选修了“08305001”和“08305002”的学生学号和姓名。
二、研讨课:
1. 用四种方法表达查询:检索马小红老师所授课程的学期,课程号,上课时间。
1) select xq,kh,sksj from o,t where o.gh=t.gh and xm=’马小红’
2) select xq,kh,sksj from o where gh in (select gh from t where xm=’马小红’)
3) select xq,kh,sksj from o where exists(select * from t where o.gh=t.gh and xm=’马小红’)
4) select xq,kh,sksj from o where ’马小红’ in (select xm from t where o.gh=t.gh)
2. 检索有学生重修的教师编号和姓名。
select gh,xm from t where gh in (select a.gh from e a,e b where a.xh=b.xh and a.kh=b.kh and a.xq>b.xq)
3. 如果O表加一个个开课编号(标识码)会带来哪些影响(优缺点)?
第3周(第四章:除法、聚合函数、分组、集合操作,外连接自学)
一、实验课:
1. 验证在1000万个以上记录时在索引和不索引时的查询时间区别。
2. 查询每个学生选课情况(包括没有选修课程的学生)。
select s.*,e.* from s left join e on s.xh=e.xh
3. 检索所有课程都选修的的学生的学号与姓名。
4. 检索选修课程包含1106同学所学全部课程的学生学号和姓名。
5. 查询每门课程中分数最高的学生学号和学生姓名。
6. 查询年龄小于本学院平均年龄,所有课程总评成绩都高于所选课程平均总评成绩的学生学号、姓名和平均总评成绩,按年龄排序。
select x1.xh,x1.xm,avg(e.zpcj) as pj
from s as x1 join e on x1.xh=e.xh
where year(getdate())-year(x1.csrq)<
(select avg(year(getdate())-year(x2.csrq)) from s as x2
where x1.yxh=x2.yxh)
and e.xh not in (select y1.xh from e as y1 where
y1.zpcj<=(select avg(y2.zpcj) from e as y2 where y1.kh=y2.kh))
group by x1.xh,x1.xm,year(getdate())-year(x1.csrq)
order by year(getdate())-year(x1.csrq)
二、研讨课:
1. 什么是聚集索引?什么是非聚集索引?索引的作用是什么?请说明上述实验题1的验证过程及所得到的结果?
聚集索引:在聚集索引中,表中各行的物理顺序与索引键值的逻辑(索引)顺序相同。表只能包含一个聚集索引。聚集索引通常可加快UPDATE和DELETE操作的速度,因为这两个操作需要读取大量的数据。创建或修改聚集索引可能要花很长时间,因为执行这两个操作时要在磁盘上对表的行进行重组。
非聚集索引:非聚集索引具有完全独立于数据行的结构,使用非聚集索引不用将物理数据页中的数据按列排序。非聚集索引中存储了组成非聚集索引的关键字值和行定位器。非聚集索常用于:包含大量非重复值的列, 不返回大型结果集的查询, 精确匹配的查询经常使用的列。
索引的作用是加快查询速度
2. 用多种方法表达查询:检索同时选修了“数据库原理”和“离散数学”的学生学号和姓名。
1) select xh,xm from s where xh in (select xh from e,c where e.kh=c.kh and c.km=’数据库原理’)
intersect
select xh,xm from s where xh in (select xh from e,c where e.kh=c.kh and c.km=’离散数学’)
2) select xh,xm from s where xh in (select a.xh from e a,e b where a.xh =b.xh and a.kh in (select kh from c where km=’数据库原理’) and b.kh in (select kh from c where km=’离散数学’)
3. 查询每门课的排名,输出课程号,学号,总评成绩,排名;按课程号升序,课程相同按排名从高到低。(提示:某个同学一门课的排名就是该门课成绩大于等于他的人数)
select x.kh,x.xh,x.zpcj,count(*) as pm
from E as x,E as y
where (x.zpcj<y.zpcj or (x.zpcj=y.zpcj and x.xh=y.xh)) and x.kh=y.kh
group by x.kh,x.xh,x.zpcj
order by 1,4
--加上学期
select x.xq,x.kh,x.xh,x.zpcj,count(*) pm
from e as x,e as y
where (x.zpcj<y.zpcj or (x.zpcj=y.zpcj and x.xh=y.xh))
and x.kh=y.kh and x.xq=y.xq
group by x.xq,x.kh,x.xh,x.zpcj
order by 1,2,5
第4周(第四章:数据更新、视图、嵌入式SQL部分自学)
一、实验课:
1. 建立计算机学院总评不及格成绩学生的视图,包括学生学号、姓名、性别、手机、所选课程和成绩。
2. 在E表中插入记录,把每个学生没学过的课程都插入到E表中,使得每个学生都选修每门课。
insert into e(xh,xq,kh,gh)
select s.xh,o.xq,o.kh,o.gh from s,o
where s.xh+o.kh not in (select xh+kh from e)
and o.kh+o.gh in (select kh+gh from o as x where
gh<=all(select gh from o as y where x.kh=y.kh))
3. 求年龄大于所有女同学年龄的男学生姓名和年龄。
4. 在E表中修改08305001课程的平时成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%。
5. 删除没有开课的学院。
6. 查询优、良、中、及格、不及格学生人数
二、研讨课:
1. 补全下面程序段虚线框中的语句,使该程序能够正确地利用给出的数据库,逐个显示年龄高于某个值(通过共享变量maxage给出)的学生的学号、姓名、性别、院系号,并按用户的当场要求,保持或修改这个学生的院系号(通过共享变量newdno中给出)。
void ChangeDNO()
{ …
EXEC SQL BEGIN DECLARE SECTION;
int maxage;
char xh[7], xm[9], sex[3], yxh[4], newdno[4];
EXEC SQL END DECLARE SECTION;
…
EXEC SQL DECLARE ex cursor for select xh,xm,xb,yxh from s where 2014-year(csrq)>:maxage;
gets(maxage);
…
EXEC SQL fetch from ex into :xh,:xm,:xb,:yxh;
EXEC SQL OPEN ex
while (1)
{
if (SQLCA.SQLSTATE ! =‘00000’)
break;
printf(“%s,%s, %s,%s”, eno, ename, sex, yxh);
printf(“UPDATE DNO? ”);
scanf(“%c”, &yn);
if (yn==‘y’ or yn=‘Y’)
{ printf(“INPUT NEW DNO: ”);
EXEC SQL UPDATE s set yxh=:newdno where current of ex
scanf(“%c”, &newdno);
EXEC SQL fetch from ex into :xh,:xm,:xb,:yxh;
}
}
EXEC SQL CLOSE ex;
…
2. 1)用多种方法表达查询:检索刘晓明不学的课程的课程号。
① select kh from c where kh not in (select kh from s,e where s.xh=e.xh and xm=’ 刘晓明’)
② select kh from c
except
select kh from s,e where s.xh=e.xh and xm=’ 刘晓明’
③ select c.kh from c left join (select kh from s,e where s.xh=e.xh and xm=’ 刘晓明’ ) as x on c.kn=x.kn where x.kh is null
select c.kh from e join s on e.xh=s.xh and xm=’ 刘晓明’
right join c on e.kh=c.kh
where e.kh is null
2)删除没有开课的学院。
delete from c where yxh not in (select yxh from c,o where c.kh=o.kh)
delete from t where yxh not in (select yxh from c)
delete from s where yxh not in (select yxh from c)
delete from d where yxh not in (select yxh from c)
1) 视图判断实验课第一题的视图能否更新。
3.
1) 设计一个能更新的视图,要求更新后的数据满足视图定义的范围:“系统结构”还未有总评成绩的选课视图。写出如下对视图的更新命令,并判断是否可行,如不可行请说出理由
create view st as select * from e where zpcj is null and kh in
(select kn from c where km=’ 系统结构’) with check option
l 插入数据(1107, 2013-2014秋季, 08305004, 0101, null,null,null)
不能,主键重复
l 插入数据(1107, 2012-2013冬季, 08305002,0102, null,null,null)
不能,插入的不是“系统结构”
l 将所有学生平时成绩增加10分,但不能超过100分
update st set pscj=100 where pscj>90
update st set pscj=pscj+10 where pscj<=90
第5周(第一、二章:数据管理、数据库技术、数据库体系结构、DBMS,自学DBS)
一、实验课:抽查前四周的实验内容
二、研讨课:根据上半学期的学习情况,对学生在学习中的问题,两个班合班上习题课
三、作业:数据库中的 “3”(只针对数据库原理1)
1. 数据库发展史上的 3 个里程碑
2. 数据库界 3 个图灵奖获得者
3. 数据管理的 3 个阶段
4. 3种数据模型
5. 数据库系统 3 层体系结构
6. 数据抽象过程中的 3 个世界
7. 数据描述时的 3 层设计
8. 数据模型 3 要素
9. 3种数据模式
10. 数据库的 3 次大论战
11. 关系数据库的3种完整性约束
12. 能唯一标识关系中每一行的属性或属性组,有那3种键
13. 实体间的联系有那3种
14. 关系的3种更新
15. 文件系统的3个缺点
第6周(第二、六章:E_R模型和扩展E-R模型)
一、实验课:数据库连接编程(PB10.0与SQL Serve r):第13章实验5-1
二、研讨课:
1. 根据以下说明设计实体联系图
【说明】
某单位资料室需要建立一个图书管理系统,初步的需求分析结果如下:
(1) 资料室有图书管理员若干名,他们负责已购入图书的编目和借还工作,每名图书管理员的信息包括工号和姓名;
(2) 读者可在阅览室读书,也可通过图书流通室借还图书,读者信息包括读者ID、姓名、电话和Email,系统为不同读者生成不同的读者ID;
(3) 每部书在系统中对应惟一的一条图书在版编目数据(CIP,以下简称书目),书目的基本信息包括ISBN号、书名、作者、出版商、出版年月,以及本资料室拥有该书的册数(以下简称册数),不同书目的ISBN号不相同;
(4) 资料室对于同一书目的图书可拥有多册(本),图书信息包括图书ID、ISBN号、存放位置、当前状态,每一本书在系统中被赋予惟一的图书ID;
(5) 一名读者最多只能借阅十本图书,且每本图书最多只能借两个月,读者借书时需由图书管理员登记读者ID、所借图书ID、借阅时间和应还时间,读者还书时图书管理员在对应的借书信息中记录归还时间;
(6) 当某书目的可借出图书的数量为零时,读者可以对其进行预约登记,即记录读者ID、需要借阅的图书的ISBN号、预约时间。
某书目的信息如表1-1所示,与该书目对应的图书信息如表1-2所示。
表1-1 书目信息
书 名
作 者
出版商
ISBN号
出版年月
册数
经办人
《数据结构》
严蔚敏
吴伟民
清华大学出版社
ISBN7-302-02368-9
1997.4
4
01
表1-2 图书信息
图书ID
ISBN号
存放位置
状态
经办人
C832.1
ISBN7-302-02368-9
图书流通室
已借出
01
C832.2
ISBN7-302-02368-9
图书阅览室
不外借
01
C832.3
ISBN7-302-02368-9
图书流通室
未借出
01
C832.4
ISBN7-302-02368-9
图书流通室
已预约
01
【系统的主要业务处理如下】
(1) 入库管理:图书购进入库时,管理员查询本资料室的书目信息,若该书的书目尚未建立,则由管理员编写该书的书目信息并录入系统,然后编写并录入图书信息;否则,修改该书目的册数,然后编写并录入图书信息,对于进入流通室的书,其初始状态为“未借出”,而送入阅览室的书的状态始终为“不外借”。
(2) 借书管理:读者借书时,若有,则由管理员为该读者办理借书手续,并记录该读者的借书信息,同时将借出图书的状态修改为“已借出”。
(3) 预约管理:若图书流通室没有读者要借的书,则可为该读者建立预约登记,需要记录读者ID、书的ISBN号、预约时间和预约期限(最长为10天)。一旦其他读者归还这种书,就自动通知该预约读者。系统将自动清除超出预约期限的预约记录并修改相关信息。
(4) 还书管理:读者还书时,则记录相应借还信息中的“归还时间”,对于超期归还者,系统自动计算罚金(具体的计算过程此处省略)。系统同时自动查询预约登记表,若存在其他读者预约该书的记录,则将该图书的状态修改为“已预约”,并将该图书ID写入相应的预约记录中(系统在清除超出预约期限的记录时解除该图书的“已预约”状态);否则,将该图书的状态修改为“未借出”。
(5) 通知处理:对于已到期且未归还的图书,系统通过Email自动通知读者;若读者预约的书已到,系统则自动通过Email通知该读者来办理借书手续。
(1)n (2)m (3)1 (4)n, 或m (5)m (6)n
其中,(1)、(2)的答案可互换,(5)、(6)的答案可互换。
2. 根据以下说明设计实体联系图
【说明】
某汽车维修站拟开发一套小型汽车维修管理系统,对车辆的维修情况进行管理。
1)对于新客户及车辆,汽车维修管理系统首先登记客户信息,包括:客户编号、客户名称、客户性质(个人、单位)、折扣率、联系人、联系电话等信息;还要记录客户的车辆信息,包括:车牌号、车型、颜色等信息。一个客户至少有一台车。客户及车辆信息如表2-1所示。
表2-1 客户及车辆信息
客户编号
GS0051
客户名称
××公司
客户性质
单位
折扣率
95%
联系人
杨浩东
联系电话
82638779
车牌号
颜色
车型
车辆类别
**0765
白色
帕萨特
微型车
2)记录维修车辆的故障信息。包括:维修类型(普通、加急)、作业分类(大、中、小修)、结算方式(自付、三包、索赔)等信息。维修厂的员工分为:维修员和业务员。车辆维修首先委托给业务员。业务员对车辆进行检查和故障分析后,与客户磋商,确定故障现象,生成维修委托书。如表2-2所示。
表2-2 维修委托书
No.20130702003 登记日期:2013-07-02
车牌号
**0765
客户编号
GS0051
维修类型
普通
作业分类
中修
结算方式
自付
进厂时间
20130702 11:09
业务员
张小江
业务员编号
012
预计完工时间
故障描述
车头损坏,水箱漏水
3)维修车间根据维修委托书和车辆的故障现象,在已有的维修项目中选择并确定一个或多个具体维修项目,安排相关的维修工及工时,生成维修派工单。维修派工单如表2-3所示。
表2-3 维修派工单
No.20130702003
维修项目编号
维修项目
工时
维修员编号
维修员工种
012
维修车头
5.00
012
机修
012
维修车头
2.00
023
漆工
015
水箱焊接补漏
1.00
006
焊工
017
更换车灯
1.00
012
机修
4)客户车辆在车间修理完毕后,根据维修项目单价和维修派工单中的工时计算车辆此次维修的总费用,记录在委托书中。
车辆
委托书
维修项目
派工
故障
员工
客户
维修工
业务员
*
委托
*
1
1
*
1
*
拥有
1
*
隶属
员工
业主
经理
图3-1 实体联系图
收费员
(c)
(d)
收费
(a)
(b)
权限
部门
合法
(e)
(f)
3. 设计的实体联系图(不完整)如图3-1所示。
【说明】
某公司拟开发一套小区物业收费管理系统。初步的需求分析结果如下:
(1)业主信息主要包括:业主编号,姓名,房号,房屋面积,工作单位,联系电话等。房号可唯一标识一条业主信息,且一个房号仅对应一套房屋;一个业主可以有一套或多套的房屋。
(2)部门信息主要包括:部门号,部门名称,部门负责人,部门电话等;一个员工只能属于一个部门,一个部门只有一位负责人。
(3)员工信息主要包括:员工号,姓名,出生年月,性别,住址,联系电话,所在部门号,职务和密码等。根据职务不同员工可以有不同的权限,职务为“经理”的员工具有更改(添加、删除和修改)员工表中本部门员工信息的操作权限;职务为“收费”的员工只具有收费的操作权限。
(4)收费信息包括:房号,业主编号,收费日期,收费类型,数量,收费金额,员工号等。收费类型包括物业费、卫生费、水费和电费,并按月收取,收费标准如表3-1所示。其中:物业费=房屋面积(平方米)×每平米单价,卫生费=套房数量(套)×每套房单价,水费=用水数量(吨)×每吨水单价,电费=用电数量(度)×每度电单价。
(5)收费完毕应为业主生成收费单,收费单示例如表3-2所示。
表3-2 收费单示例
表3-1 收费标准
房号:A1608 业主姓名:李斌
收费类型
单位
单价
序号
收费类型
数量
金额
物业费
平方米
1.00
1
物业费
98.6
98.60
卫生费
套
10.00
2
卫生费
1
10.00
水 费
吨
0.70
3
水 费
6
4.20
电 费
度
0.80
4
电 费
102
81.60
合计
壹佰玖拾肆元肆角整
194.40
收费日期:2012-9-2 员工号:001
【问题】
填写图3-1中(a)~(f)处联系的类型(注:一方用1表示,多方用m或 n 或 *表示),并补充完整图3-1中的实体、联系和联系的类型。
隶属
员工
业主
经理
图2-1 补充完整的实体联系图
收费员
1
n
收费
n
m
权限
部门
合法
1
n
收费标准
n
三、作业:画出以下3题的E-R模型
1. 第1周所建数据库
2. 假定一个数据库包括如下信息:
l 职工:工号、姓名、所在部门
l 部门:部门名、经理、部门所有职工、销售产品
l 产品:产品名、制造商名、价格、型号
l 制造商:制造商名、地址、生产的产品名、价格
3. 假设要为某高校后勤关于班车运行管理信息系统建立一个数据库,对车辆、司机、维修、保险和工作班车运行等信息进行管理。该高校后勤有关班车运行的业务管理规则如下:
l 该高校有若干个校区,每个校区有一个车队。
l 每个车队有一个车队长、若干车辆和司机。
l 车辆和司机分别在不同的保险公司里投保。
l 车辆由若干汽车维修公司进行维修。
l 每个工作班车包括班次编号、起点、终点和发车时间。
l 每个车队负责该高校若干不同工作班车的运行。
第7周(第二、七章:数据模型,E-R模型转关系模型)
一、实验课:数据库连接编程(PB10.0与SQL Serve r):第13章实验5-2
二、研讨课:
1. 设计第6周研讨第1题图书管理系统的主要关系模式,然后给出各关系模式的主键和外键。
管理员(工号,姓名)
读者 (读者ID,姓名,电话,Email)
书目 (ISBN号,书名,作者,出版商,出版年月,册数,经办人)
图书(图书ID,ISBN号,存放位置,状态,经办人)
借还记录(读者ID, 图书ID,借出时间,应还时间,归还时间) 外键:读者ID,图书ID
预约登记(读者ID, ISBN号,预约时间,预约期限) 外键:读者ID, ISBN号
2. 在第6周研讨第3题的基础上完成下列工作:
1)根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):
业主( (1) ,姓名,房屋面积,工作单位,联系电话)
员工( (2) ,姓名,出生年月,性别,住址,联系电话,职务,密码)
部门( (3) ,部门名称,部门电话)
权限( 职务,操作权限)
收费标准( (4) )
收费信息( (5) ,收费类型,收费金额,员工号)
2)根据图3-1,将逻辑结构设计阶段生成的关系模式中的空(1)~(5)补充完整,然后给出各关系模式的主键和外键。
(1)业主编号,房号
主键:房号 外键:无
(2)员工号,所在部门号
主键:员工号 外键:所在部门号
(3)部门号,部门负责人
主键:部门号 外键:部门负责人
(4)收费类型,单位,单价
主键:收费类型 外键:无
(5)房号,业主编号,收费日期
主键:房号,业主编号,收费日期 外键:房号,员工号
3. 一个三元关系是否可以用三个二元的M:n关系代替,试举例说明。(示意图)
E1
R23
E3
N
M
R12
R23
E2
M
M
N
N
E1
R
E3
E2
P
N
M
例: E1:表示学生; E2表示图书; E3 表示书店
R12表示学生有哪些书; R23表示书店卖那些书; R13表示学生去过哪些书店
但表示不了R学生在那个书店卖了那本书
三、作业:将第6周3题的E-R模型转为关系模型
第8周(第三章:关系代数,关系演算自学)
一、实验课:数据库连接编程(PB10.0与SQL Serve r):第13章实验5-3
二、研讨课:
1. 请用SQL,关系代数,元组关系演算,域关系演算写出如下查询:检索同时选修了“08305001”和“08305002”的学生学号和姓名。(提示:不止4种查询表达方式)
sql和关系代数:自连接和集合交运算
关系代数和关系演算:自连接
答案略
2. 请用关系代数写出检索同时有3个或3个以上学生选课的老师所在学院名,教师名
pmc,xm(D⋈T⋈p4(s4=11Ù11=18Ù3=10Ù10=17Ù1<>8Ù8<>15Ù1<>15(E´E´E)))
3. 用元组关系演算写出如下查询:
l 检索选修课程包含1106同学所学全部课程的学生学号和姓名。
l 检索刘晓明不学的课程的课程号。
{t|($u)(S(u)∧("v)(E(v)∧(v[1]=’1106’Þ($w)(E(w)∧w[1]=u[1]∧w[3]=v[3])))∧t[1]=u[1]∧t[2]=u[2])}
{t|($u)($v)("w)(C(u)∧S(v)∧E(w)∧(v[2]=’刘晓明’∧v[1]=w[1]
Þw[3]¹u[1])∧t[1]=u[1])}
三、作业:用关系代数写出如下1-5
1. 查询1992年以前出生的男学生的学号与姓名。
2. 检索刘晓明不学的课程的课程号。
3. 查询计算机学院男生总评成绩及格、教授开设的课程的课程号、课名、开课教师姓名,
4. 检索所有课程都选修的的学生的学号与姓名。
5. 检索选修课程包含1106同学所学全部课程的学生学号和姓名。
6. 写出如下关系式的结果:
l 关系代数表达式
A
B
C
A
展开阅读全文