数据库原理与应用教案4

9.概念结构设计是将系统需求分析得到的用户需求抽象为信息结构过程。概念结构设计的结果是数据库的概念模型。概念结构能转化为机器世界中的数据模型,并用DBMS实现这些要求。 概念结构的设计可分为两步:第一步是抽象数据并设计局部视图;第二步是集成局部视图,得到全局的概念结构。

10. E-R图是描述现实世界的概念模型的图形,E-R图也称为实体-联系图。它提供了表示实体集,属性和联系的方法。构成E-R图的基本要素是实体集、属性和联系。

11.视图集成就是把设计好的各个子系统的分E-R图综合成一个系统的总E-R图,同时消除属性冲突、命名冲突、机构冲突,为关系数据库逻辑结构设计做准备。

视图的集成可以有两种方法:一种方法是多个分E-R图综合一次集成;另一种方法是逐步集成,累加的方法一次集成两个分E-R图。

12.逻辑结构设计是把概念模型结构转换成某个具体的 DBMS所支持的数据模型。 逻辑结构设计步骤为:

1 把概念模型转换成一般的数据模型。

2 把一般的数据模型转换成特定的DBMS所支持的数据模型。 3 通过优化方法将其转化为优化的数据模型。 13

1 一个实体集转换为关系模型中的一个关系,实体的属性就是关系的属性,实体的码就是关系的码,关系的结构时关系模式。

2 一个1:1联系可以转换为一个独立的关系,也可以与任意一端实体集所对应的关系合并。如果将1:1联系转换为一个独立的关系,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,且每个实体的码均是该关系的候选码。如果将1:1联系与某一端实体所对应的关系合并,则需要在被合并关系中增加属性,其新增的属性为联系本身的属性和与联系相关的另一个实体的码。

3 实体间的1:n联系可以有两种转换方法:一种方法是将联系转换为一个独立的关系,其关系的属性由与该联系相连的各实体集的码一击联系本身的属性组成,而该关系的码为n端实体的码;另一种方法是在n端实体集中增加新属性,新属性由联系对应的1端实体集的码和联系自身的属性构成,新增属性后原关系的码不变。

4 一个m:n联系转换为一个关系:与该联系相连的各实体集的码以及联系本省的属性均转换为关系的属性,新关系的码为两个相连实体码的组合。

14.数据库物理设计的内容主要是选择存取方法和存储结构,包括确定关系、索引、聚簇、日志、备份等的存储安排和存储结构,确定系统配置等。

数据库的威力设计可以分为两步惊醒:

1 确定数据的物理结构,即确定数据库的存取方法和存储结构。 2 对物理结构进行评价。

15.数据库运行一段时间后,由于记录不断增、删、改,会使数据库的物理存储情况变坏,降低了数据的存取效率,数据库的性能也下降。这时,数据库管理员就要对数据库进行重组织或部分重组织。

织按原数据库设计要求重新安排存储位置、回收垃圾、减少指针链等,以提高系统性能。

41

重构造通过部分修改数据库的模式和内模式,使数据库适应新的应用环境。

16.转换后的关系模型如所示。

出版社(出版社名,地址,邮政编码);

作者(姓名,性别,年龄,证件号码,单位);

出版(出版社名,作者姓名,出书数量,联系方式)。

试题三

1.试述SQL语言的特点。

2.设职工---社团数据库有三个基本表: 职工(职工号,姓名,年龄,性别);

社会团体(编号,名称,负责人,活动地点); 参加(职工号,编号,参加日期); 其中:

1)职工表的主码为职工号。

2)社会团体表的主码为编号;外码为负责人,被参照表为职工表,对应属性为职工号。

3)参加表的职工号和编号为主码;职工号为外码,其被参照表为职工表,对应属性为职工号;编号为外码,其被参照表为社会团体表,对应属性为编号。试用SQL语句表达下列操作: 1)定义职工表、社会团体表和参加表,并说明其主码和参照关系。 2)建立下列两个视图。

社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别); 参加人情况(职工号,姓名,社团编号,社团名称,参加日期) 3)查找参加唱歌队或篮球队的职工号和姓名。 4)查找没有参加任何团体的职工情况。 5)查找参加了全部社会团体的职工情况。

1) 查找参加了职工号为“1001”的职工所参加的全部社会团体的职工号。 2) 求每个社会团体的参加人数。

3) 求参加人数最多的社会团体的名称和参加人数。 4) 求参加人数超过100人的社会团体的名称和负责人。

10)把对社会团体和参加两个表的数据查看、插入和删除数据的权力赋给用户李平,并允许他将此权力授予其他用户。

3.设工程—零件数据库中有四个基本表:

供应商(供应商代码,姓名,所在城市,联系电话); 工程(工程代码,工程名,负责人,预算); 零件(零件代码,零件名,规格,产地,颜色);

供应零件(供应商代码,工程代码,零件代码,数量) 试用SQL语句完成下列操作:

1)找出天津市供应商的姓名和电话。

2)查找预算在50000~100000元之间的工程的信息,并将结果按预算降序排列。 3)找出使用供应商S1所供零件的工程号码。

4)找出工程项目J2使用的各种零件名称及其数量。 1) 找出上海厂商供应的所有零件号码。 2) 找出使用上海产的零件的工程名称。

42

3) 找出没有使用天津产的零件的工程号码。 4) 把全部红色零件的颜色改成蓝色。

5) 将由供应商S5供给工程代码为J4的零件P6改为由S3供应,并作其他必要的修改。 10)从供应商关系中删除S2的记录,并从供应零件关系中删除相应的记录。 4.在嵌入式SQL中,如何区分SQL语句和主语言语句?

5.在嵌入式SQL中,如何解决数据库工作单元与源程序工作单元之间的通信?

6.在嵌入式SQL中,如何协调SQL语言的集合处理方式和主语言的单记录处理方式? 7.SQL语言集数据查询、数据操作、数据定义、和数据控制功能于一体,语句INSERT、DELETE、UPDATE实现下列哪类功能————。 A.数据查询 B。数据操纵 C.数据定义 D。数据控制

8.下面列出的关于视图的条目中,不正确的是————。 A.视图是外模式 B。视图是虚表 C.使用视图可以加快查询语句的执行速度 D.使用视图可以简化查询语句的编写

9.在SQL语言的SELECT语句中,能实现投影操作的是———。 A.SELECT B.FROM C.WHERE D.GROUP BY 10.SQL语言集数据查询、数据操作、数据定义、和数据控制功能于一体,语句ALTER TABLE 实现哪类功能————。

A.数据查询 B.数据操纵 C.数据定义 D.数据控制

11.在关系数据库系统中,为了简化用户的查询操作,而又不增加数据的存储空间,常用的方法是创建————。

A. 另一个表 B. 游标 C. 视图 D.索引

试题三答案

1.SQL语言集数据查询、数据操纵、数据定义和数据控制功能一体,它除了具有一般关系数据库语言的特点外,还具有3个特点:①SQL具有自含式和嵌入式两种形式:②SQL具有语言简洁、易学易用的特点:③SQL支持三级模式结构。 2.

1) CREAT TABLE 职工(职工号 CHAR(10)NOT NULL UNIQUE, 姓名 CHAR(8)NOT NULL, 年龄 SMALLINT, 性别 CHAR(2), CONSTRAINT C1 CHECK(性别IN(‘男’,‘女’)));

CREAT TABLE 社会团体(编号 CHAR(8)NOT NULL UNIQUE, 名称 CHAR(12)NOT NULL, 负责人 CHAR(8),

活动地点 VARCHAR(50),

CONSTRAINT C2 FOREIGN KEY(负责人)REFERENCES职工 (职工号)); CREAT TABLE 参加(职工号 CHAR(8), 编号 CHAR(8),

43

参加日期 DATA,

CONSTRAINT C3 PRIMARY KEY(职工号,编号),

CONSTRAIN C3 FOREIGN KEY(职工号)REFERENCES职工(职工号));

2)CREAT VIEW 社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别) AS SELECT 编号,名称,负责人,姓名,性别 FROM 社会团体,职工

WHERE 社会团体.负责人=职工.职工号;

CREAT VIEW参加人情况(职工号,姓名,社团编号,参加日期) AS SELECT参加.职员号,姓名,社会团体.编号,名称,参加日期 FROM 职工,社会团体,参加

WHERE 职工.职工号=参加.职工号AND 参加.编号=社会团体.编号; 3) SELECT 职工号,姓名

FROM 职工,社会团体,参加

WHERE 职工.职工号=参加.职工号 AND 参加.编号=社会团体.编号 AND 社会团体.名称 IN(‘唱歌队’,‘篮球队’); 4)SELECT* FROM 职工

WHERE NOT EXISTS(SELECT* FORM 参加

WHERE 参加.职工号=职工.职工号); 5)SELECT* FROM 职工

WHERE NOT EXISTS(SELECT* FROM 参加 WHERE NOT EXISTS

(SELECT* FROM 社会团体

WHERE参加.职工号=职工.职工号 AND 参加.编号=社会团体.编)); 6)SELECT 职工号 FROM 职工 WHERE NOT EXISTS(SELECT*

FROM 参加 参加1

WHERE 参加1.职工号=‘1001’AND NOT EXISTS (SELECT*

FROM 参加 参加2

WHERE 参加2.编号=参加1.编号 AND 职工号=职工.职工号));

7) SELECT COUNT(职员号) FROM 参加 GROUP BY 编号; 8)SELECT 社会团体.名称,COUNT(参加.职工号) FROM 社会团体 参加

WHERE 社会团体.编号=参加.编号 GROUP BY 参加编号

HAVING MAX (COUNT(参加.职工号))=COUNT(参加.职工号)); 9)SELECT 社会团体.名称,职工.姓名 FROM 职工,社会团体,参加

WHERE 社会团体.编号=参加.编号 AND 社会团体.负责人=职工.职工号 GROUP BY 参加.编号 HAVING COUNT(参加.编号)>100;

10) GRANT SELECT,INSERT,DELECT ON 社会团体,参加 TO 李平

44

参加2. WHERE GRANT OPTION; 3.

1) SELECT 姓名,联系电话 FROM 供应商 2) SELECT* FROM 工程

WHERE 预算 BETWEEN 50000 AND 100000 ORDER BY 预算 DESC;

3) SELECT 工程代号 FROM 供应零件 WHERE 供应商代码=‘SI’; 4) SELECT 零件.零件名,供应零件.数量 FROM 零件 供应零件

WHERE 零件.零件代码=供应零件.零件代码AND供应零件.工程代码=‘J2’; 5)SELECT 零件代号 FROM 供应商,供应零件

WHERE 供应商.供应商代码=供应零件.供应商代码 AND 供应商.所在城市=‘上海’;

6) SELECT 工程名 FROM 供应商,供应零件,工程 WHERE 供应商.供应商代码=供应零件.供应商代码AND 供应零件.工程代码=工程.工程代码 AND 供应商.所在城市=‘上海’;

7) SELECT 工程号码 FROM 工程 WHERE NOT EXISTS(SELECT*

FROM 供应零件

WHERE工程.工程代码=供应零件.工程代码 AND 供应商代码 IN (SELECT 供应商代码

FROM 供应商 8) UPDATE 零件 SET 颜色=‘蓝色’WHERE 颜色=‘红色’; 9) UPDATE 供应零件 SET 供应商代码=‘S3’

WHERE 供应商代码=‘S5’ AND 工程代码=’J4’ AND 零件代码=‘P6’; 10) DELETE FROM 供应零件 WHERE 供应商代码=’S2’; DELETE FROM 供应商 WHERE 供应商代码=’S2’;

4. 在嵌入方式下,SQL语句在嵌入主语言的程序时其前缀加EXEC SQL ;其结束处用END_EXEC或用分号“;”。

5.数据的工作单元和程序工作单元之间通信的主要方式有:主语言通过变量向SQL语句 提供参数;SQL语句的当前工作状态和运行环境数据要返馈给应用程序。

6.使用游标解决SQL一次一集合的操作与主语言一次一记录操作的矛盾。游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。用户可以通过游标逐一获取记录,并将记录赋给主变量,交给主语言做进一步处理。

7.B 8.C 9.A 10.C 11.C

45

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4