数据库---设计题.doc

上传人:b****9 文档编号:98750 上传时间:2022-10-03 格式:DOC 页数:7 大小:661KB
下载 相关 举报
数据库---设计题.doc_第1页
第1页 / 共7页
数据库---设计题.doc_第2页
第2页 / 共7页
数据库---设计题.doc_第3页
第3页 / 共7页
数据库---设计题.doc_第4页
第4页 / 共7页
数据库---设计题.doc_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

数据库---设计题.doc

《数据库---设计题.doc》由会员分享,可在线阅读,更多相关《数据库---设计题.doc(7页珍藏版)》请在冰豆网上搜索。

数据库---设计题.doc

应用题

1、已知关系V和W,如下所示:

VW

B

1

3

A

B

a

1

a

2

b

1

b

2

c

1

请写出V÷W的结果关系。

答:

1)从关系V中可取{a,b,c}

其中:

a的象集为:

{1,2}

b的象集为:

{1,2}

c的象集为:

{1}

2)W在(B)上的投影为:

{1,2}

3)因为a和b的象集包含了W在(B)上的投影,所以V÷W={a,b}

2、设有关系R和S如下:

RS

A

B

C

1

2

3

4

5

6

7

8

9

B

C

D

2

3

4

4

2

5

8

5

4

请写出Π1,2,3,6(R►◄S)的结果关系。

书P46

2=2

答:

A

B

C

D

1

2

3

5

4

5

6

4

3、一部门要利用计算机进行人事和生产两个方面的管理,其各自的信息需求如下。

人事方面的实体:

部门:

部门名称、电话号码、办公地点。

职工:

职工号、姓名、年龄、性别。

生产方面的实体:

生产:

车间名、车间电话、账号、职工号。

产品:

产品号、产品名、数量、生产车间名。

上述实体中,部门和车间可视为同一级管理部门,且每一个部门有多名职工,一个职工只属于一个部门;一个车间可生产多重产品,一种产品可为多个车间生产。

请根据上述要求完成如下设计:

1)分别设计人事、生产两个局部E-R图。

2)综合人事、生产局部E-R图而产生一个总体E-R图。

答:

人事E-R图

生产E-R图

总的E-R图

4、将3-24如图所示的两个局部E-R图合并为全局E-R图。

书P69

(注:

每名学生的总分是他所选课程成绩的总和)

5、一个读者可以订阅多种期刊,一种期刊可由多个读者订阅,订阅有订阅期限属性。

读者有读者编号、姓名、通信地址、电话等属性,期刊有期刊编号、期刊名称、定价等属性。

6、假设教学管理规定:

(1)一名学生可选修多门课,一门课可有若名干学生选修。

(2)一名教师可讲授多门课,一门课只能有一名教师讲授。

(3)一名学生选修一门课,仅有一个成绩。

学生的属性有学号、学生姓名;教师的属性有教师编号,教师姓名;课程的属性有课程号、课程名。

根据上述语义画出E-R图,要求在E-R图中画出实体的属性并注明联系的类型。

7、设有一个顾客商品关系数据库,有3个基本表,表解构如下:

商品表:

Article(商品号,商品名,单价,库存量)

客户表:

Customer(顾客号,顾客名,性别,年龄,电话)

订单表:

OrderItem(顾客号,商品号,数量,购买价,日期)

(1)请用SQL语言创建一个视图GM_VIEW,检索顾客的顾客号、顾客名和订购商品的商品名、金额和日期(金额=数量X购买价)

CREATEVIEWGM_VIEW(顾客号,顾客名,商品名,金额,日期)

AS

SELECTOrderItem.顾客号,Customer.顾客名,Article.商品名,OrderItem.数量*OrderItem.购买价as金额,OrderItem.日期

FROMOrderItem,Customer,Article

WHEREOrderItem.顾客号=Customer.顾客号

ANDOrderItem.商品号=Article.商品号

(2)请用SQL语言的ALTERTABEL命令给商品表Article增加一个字段,字段名为:

产地,数据类型为:

CHAR,长度为:

30。

ALTERTABLEArticleADD产地CHAR(30)

8、使用SQL语言的CREATE语句创建教师表T,各字段的定语如下:

教师号,CHAR

(2),主码;教师名,CHAR(8),不能为空;职称,CHAR(10);年龄,int。

注意,主码约束名采用系统默认。

答:

CREATETABLET(教师号char

(2)PRIMARYKEY,教师名char(8)NOTNULL,

职称char(10)NULL, 年龄intNULL)

9、假设城市交通管理业务规则如下:

(1)每个驾车者必须有驾驶执照,驾照有编号、姓名、性别、年龄、身份证号、工作单位、发证日期等属性。

(2)每个机动车要有一个牌照,牌照有车号、型号、制造商、生产日期、所有者等属性。

(3)若司机违反交通规则,将受到惩罚,惩罚记录有日期、车号、驾照编号、违章情节记载、处罚方式等属性。

要求:

(1)根据上述业务规则设计E-R模型

(2)将E-R模型转换成关系模型

答:

驾驶员(编号,姓名,性别,年龄,身份证号,工作单位,发证日期)

机动车(车号,型号,制造商,生产日期,所有者)

驾驶违章(日期,车号,驾照编号,违章情节记载,处罚方式)

10、某企业需要采购多种材料,每种材料可由多个供应商提供,且每个供应商可以为企业提供多种材料,材料有材料编号、材料名称和规格等属性;供应商有供应商号、名称、地址和电话号码等属性;采购时需要记录采购日期、单价和数量等信息。

要求:

(1)根据上述语义设计E-R模型,并注明联系类型,可省略属性

(2)将E-R模型转换成关系模型,并指出每个关系的主码和外码。

材料(材料编号,材料名称,规格)主码:

材料编号

供应商(供应商号,名称,地址,电话号码)主码:

供应号员

采购材料(日期,材料编号,供应商号,单价,数量)

11、有“旅行社”、“景点”和“游客”3个实体,联系“组团”将3个实体联系在一起,形成他们之间的三元联系。

从E-R图导出关系,并指出每个关系的主码和外码。

答:

游客(游客编号,姓名,工作单位,电话)主码:

游客编号

旅行社(旅行社名,地址,电话,联系人)主码:

旅行社名

景点(景点名,地址,电话)主码:

景点名

组团(旅行社名,游客编号,景点名)主码:

旅行社名,游客编号,景点名

11、将如图的E-R模型转换为关系模型,并说明各个关系的主码。

12、假设有3个表:

学生表:

S(学号,姓名,性别),课程表:

C(课程号,课程名,学分)

学生选课表:

SC(学号,课程号,成绩)

(1)请用SQL语句创建学生选课表SC,要求包含主码、外码的定义,同时要保证“成绩”的取值范围0~100(包含0和100)。

CREATETABLESC(学号char(8)NOTNULL,课程号char(6)NOTNULL,

成绩intcheck(成绩>=0and成绩<=100),

CONSTRAINTchoose_primPRIMARYKEY(学号,课程号),

CONSTRAINTchoose_StudentFOREIGNKEY(学号)REFERENCESS(学号),

CONSTRAINTchoose_CourseFOREIGNKEY(课程号)REFERENCESC(课程号))

(2)请用SQL语句创建一个包括姓名、课程名和成绩的视图CJ。

CREATEVIEWCJ(姓名,课程名,成绩)

AS

SELECTS.姓名,C.课程名,SC.成绩

FROMSC,S,CWHERESC.学号=S.学号ANDSC.课程号=C.课程号

13、创建一个名为ins_proc的存储过程,实现向student表中插入一条记录,新记录的值由参数提供。

如果未提供性别,则由参数的默认值设置。

CREATEPROCEDUREins_proc

@SHCHAR(5),@XMCHAR(8),@XBCHAR

(2)='男',

@CSRYDATETIME,@BHCHAR(3)

AS

BEGIN

INSERTINTOstudent(学号,姓名,性别,出生日期,班号)

VALUES(@SH,@XM,@XB,@CSRY,@BH)

END

14、创建一个触发器select_trigger,实现当向表student中插入一条记录时,自动显示student表中的所有记录。

CREATETRIGGERselect_triggeronSTUDENT

forinsert

as

select*fromSTUDENT

15、创建一个触发器,实现向成绩表中插入值时,检查插入值是否合适,当插入的值大于100或者小于0时,提示“插入值不合适,请重新插入值”,并回滚插入操作;当插入值在0到100之间时,提示“插入数据成功”,并显示插入后的结果。

CREATETRIGGER成绩检查on成绩表

forinsert

as

Declare@CJint

select@CJ=成绩frominserted

if@CJ<0or@CJ>100

begin

rollback

raiserror('插入值不合适,请重新插入值',16,1)

end

else

begin

commit

raiserror('插入数据成功',16,1)

end

endif

2、编写实现银行转账业务的存储过程。

答:

Createproctransfer@moneyint

As

Begintransaction

If(select余额from账户where账号=’A’)<@money

Begin

Print‘余额不够,转账失败!

Rollback

End

Else

Begin

Update账户set余额=余额-@moneywhere账号=’A’

Update账户set余额=余额+@moneywhere账号=’B’

Print‘转账成功!

End

/*执行存储过程transfer*/

Exectransfer5000

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1