手机版

《企业数据库应用》试卷

发布时间:2024-11-28   来源:未知    
字号:

《企业数据库应用》试卷

一、 数据库方案设计(20分)

1. 某企业生产若干产品,每种产品由不同的零件组成,有的零件可用在不同的产品上;

这些零件由不同的原材料构成,不同的零件所使用的材料可以相同;这些零件按所属的不同产品分别放在仓库中。使用E-R图描述该企业产品、零件、材料、仓库等信息关联关系的概念模型,并建立其对应的关系模型。要求:

1) 分别描述各局部关系的概念模型,合理确定各实体和联系的主要属性和关键属

性。(12分) 产品(产品号,产品名,规格型号,单价); 零件(零件号,零件名称,零件数量,供应商号,仓库号,单价,描述); 材料(材料号,材料名称,类别); 仓库(仓库号,面积,管理员,所在城市); 存放(仓库号,材料号,数量); 组成(产品号,零件号,数量); 制造(零件号,材料号,数量); 储存(仓库号,零件号,数量);

2) 将各局部概念模型整合成全局概念模型(课省略属性描述),并进行优化处理。

(3分)

二、 3) 将全局概念模型转化为关系数据模型,并使其符合3NF规范。(5分) 数据定义语言运用(30分)

存储,主文件组包括主要数据文件SalesDat1.mdf,初始大小为10MB,按10%自动增长,最大大小不受限制;次文件组dbgroup_S包括辅助数据文件SalesDat2.ndf,初始大小为5MB,按5MB自动增长,最大限制为20MB;日志文件存放在SalesLog.ldf中,初始大小为5MB,按10%自动增长,最大大小不受限制。(10分)

USE master

GO

CREATE DATABASE Sales_db 2. 在C:\Sales目录中创建一个名为Sales_db的数据库,将数据文件分为两个文件组

《企业数据库应用》试卷

ON

/*主文件组包括主要数据文件SalesDat1.mdf,初始大小为10MB,按10%自动增长,最大大小不受限制*/

PRIMARY

(NAME=” SalesDat1”,

FILENAME=”C:\Sales\SalesDat1.mdf”,

SIZE=10MB,

MAXSIZE= UNLIMITED,

FILEGROWTH =10%),

FILEGROUP dbgroup_S

/*次文件组dbgroup_S包括辅助数据文件SalesDat2.ndf,初始大小为5MB,按5MB自动增长,最大限制为20MB*/

(NAME=”SalesDat2”,

FILENAME=”C:\Sales\SalesDat2.ndf”,

SIZE=5MB,

MAXSIZE= 20MB,

FILEGROWTH =5MB),

LOG ON

/*日志文件存放在SalesLog.ldf中,初始大小为5MB,按10%自动增长,最大大小不受限制*/

(NAME=”SalesLog”,

FILENAME=”C:\Sales\SalesLog.ldf”,

SIZE=5MB,

MAXSIZE= UNLIMITED,

FILEGROWTH =10%);

GO

3. 在数据库Ex_db积)、职工(仓库号、职工号,工资)、供应商(供应商号、供应商名、地址、电话)、订购单(职工号、供应商号、订单号、订购日期)。约束要求如下:仓库面积不小于100M2,每座城市只能设一个仓库;职工最低工资为800元,最高5000元,缺省值为1200元;订购单中的职工和供应商信息不能为空。该关系模型的关系示意图如下:(20分)

《企业数据库应用》试卷

答案:

USE Ex_db

IF EXISTS(SELECT name FROM sysobjects

WHERE name=’仓库’ AND xtype=’U’DROP TABLE 仓库)

GO

/*(1)建立仓库表*/

CREATE TABLE 仓库(

仓库号 CHAR(5) PRIMARY KEY,

城市 CHAR(10) constraint un_city unique,

面积 INT CHECK (面积 > 100) )

/*(2)建立职工表*/

CREATE TABLE 职工(

仓库号 CHAR(5) FOREIGN KEY REFERENCES 仓库,

职工号 CHAR(5) PRIMARY KEY,

工资 INT CHECK (工资 >= 800 AND 工资 <= 5000)

DEFAULT 1200 )

/*(3)建立供应商表*/

CREATE TABLE 供应商(

供应商号 CHAR(5) PRIMARY KEY,

供应商名 CHAR(20),

地址 CHAR(20),

电话 INT)

/*(4)建立订购单表*/

CREATE TABLE 订购单(

职工号 CHAR(5) NOT NULL FOREIGN KEY REFERENCES 职工,

供应商号 CHAR(5) NOT NULL FOREIGN KEY REFERENCES 供应商,

订购单号 CHAR(5) PRIMARY KEY,

订购日期 DATETIME DEFAULT getdate())

GO

《企业数据库应用》试卷

三、 数据查询语言应用(每小题5分,共计20分)

某个学籍数据库有如下表结构:学生(学号、姓名、性别、出生日期、班级)

课程(课程号、课程名称、课程类别、课时) 选课(学号、课程号、成绩)

请完成下列查询要求:

4. 查询出“信管0701”班的所有男生的学号和姓名。

SELECT 学号,姓名

FROM 学生

WHERE 班级=’信管0701’ AND 性别=’男’

5. 查询出各班级学生人数。

SELECT 班级, COUNT(*) AS 人数

FROM 学生

GROUP BY班级

6. 查询出“C语言”课程成绩前5名的学生的学号、姓名和班级

SELECT TOP 5学生.学号, 姓名, 班级

FROM学生 JOIN 选课 ON 学生.学号 = 选课.学号 JOIN 课程 ON课程.课程号 = 选课.课程号

WHERE课程名称 = ‘C语言’

ORDER BY 成绩 DESC

7. 查询出“企业数据库应用”课程成绩高于张三同学此门课程成绩的学生学号。

SELECT学生.学号, 姓名

FROM 学生JOIN 选课 ON 学生.学号 = 选课.学号 JOIN 课程 ON课程.课程号 = 选课.课程号

WHERE课程名称 = ‘企业数据库应用’ AND 成绩 > (

SELECT成绩

FROM 学生JOIN 选课 ON 学生.学号 = 选课.学号 JOIN 课程 ON课程.课程号 = 选课.课程号

WHERE课程名称 = ‘企业数据库应用’ AND姓名 = ‘张三’

)

四、 数据库应用编程(每小题10分,共计30分)

8. 请定义一个可更新游标cur_update_book,该游标的功能为:选择图书

本书,并指定对书价进行更新,然后利用fetch语句提取该游标数

折。图书表book的结构如下:BOOK(book_name,author,press,

DECLARE cur_update_book CURSOR

FOR

SELECT TOP 10 book_name,author,press,price FROM book

ORDER BY price

FOR UPDATE OF price

GO

OPEN cur_update_book --打开游标

FETCH NEXT FROM cur_update_book --逐行提取记录

UPDATE book SET price = price*0.7 WHERE CURRENT OF

cur_update_book --更新价格

《企业数据库应用》试卷

WHILE @@FETCH_STATUS = 0

BEGIN

FETCH NEXT FROM cur_update_book

UPDATE book SET price = price*0.7 WHERE CURRENT OF

cur_update_book

END

CLOSE cur_update_book --关闭并删除游标

DEALLOCATE cur_update_book

9. 创建一个查看商品库存量并返回执行状态码和库存信息的存储过程

编号为输入参数,然后判断该商品的库存量,如果数量大于15,则认为数量充裕!并返回状态码3;如果数量小于5,则输出商品库存量不多并返回状态码1;如果数量在5至15之间,则输出商品库存量良好,供应正常。该存储过程使用了“经销商”数据库中的库存表(库存编号,商品编号)

CREATE PROCEDURE pr_store_good

@商品编号 varchar(20)

@返回值1 varchar(20) output

AS

BEGIN

DECLARE @库存 int DECLARE @返回值2 INT SELECT @库存 =库存量 FROM 库存表 WHERE 商品编号=@商品编号

IF @库存>15

SET @返回值1 = '状态码为:'+ CAST(3 as varchar(10))

IF @库存>5 AND @库存<15

SET @返回值1 = '状态码为:'+ CAST(1 as varchar(10))

SELECT @返回值2 = 库存量 FROM 库存表 WHERE 商品编号=@商品编号

return @返回值2

END

GO

--返回值的接收

declare @接收值1 varchar(20)

declare @接收值2 int

exec pr_store_good @接收值1 output

exec @接收值2 = pr_store_good

print @接收值1

print @接收值2

10. 你在开发某公司的管理信息系统,其中要根据预算来跟踪控制各采购 经现在预算表中都有一个记录。预算表和购买表的结构为:预算(经

现在预算金额),购买(购买代号,购买现金,经理代号),其中:

现有预算金额=预算总金额-购买金额

经理的每次购买都要与“现有预算金额”做比较,当该次的“购

算金额”时。才允许插入到购买表中(一次购买只插入一条记录)。

《企业数据库应用》试卷

的“现有预算金额”(扣减“购买金额”),请在购买表上编写一个触发器 CREATE TRIGGER Purchase_Insert ON 购买表

FOR INSERT

AS

BEGIN

IF (SELECT count(*) FROM Inserted) <> 1

BEGIN

RAISERROR(‘一次购买只允许插入一个记录!’,16, 1) ROLLBACK TRANSACTION

RETURN

END

IF ( SELECT a.现有预算金额-b.购买金额

FROM 预算表 AS a INNER JOIN

Inserted AS b ON a.经理代号=b.经理代号)<0

BEGIN

RAISERROR(‘现有预算金额不足支付购买金额 !’,16, 1) ROLLBACK TRANSACTION

RETURN

END

UPDATE 预算表

SET 现有预算金额 = a.现有预算金额 – b.购买金额

FROM 预算表 AS a INNER JOIN

Inserted AS b ON a.经理代号=b.经理代号

END

分析以下程序,说明各语句的功能,并写出程序运行的结果。 Declare @sum int , @count int

Set @sum=0

Set @count=1

Label_1:

Select @sum=@sum+@count

Select @count=@count+1

If @count<=5

Goto label_1

Select @count , @sum

DECLARE @A INT, @B INT

Declare @sum int , @count int

Set @sum=0Set @count=1Label_1:

Select @sum=@sum+@count

Select @count=@count+1

If @count<=5 Gotolabel_1

《企业数据库应用》试卷.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)