1. 问答题(20分,每题5分)
(1) 简述完成SQL核心操作的9个动词?。 (2) 简述数据库系统的三级模式结构。
(3)列举3种web数据库连接访问技术方法,并说明其优缺点。 (4) 简述web工作流程。
2. 数据库设计(30分)
现有如下3张表,属于“员工信息”数据库。 员工表(Emp)
员工号 E01 E02 E03 E04
公司号 C01 C02 C03 Soft Hard WEB 姓名 Tom Kate Zhang Zhao 居住街道名 ChangAnJie ChangAnJie NanJingLu LuoShiLu 居住城市名 Beijing Beijing Shanghai Shanghai 公司表 公司名称 所在城市 Beijing Hangzhou Wuhan 工作表(Works) 员工号 E01 E02 E03 E04 公司号 C01 C01 C03 C03 工资 3000 4000 2000 3500 要求完成数据库的设计如下:
(1) 在数据库中创建以上三个表格,给每个表创建主键。(5分) (2) 向员工表中插入该表给出的前两行数据。(5分) (3) 实现下列查询(10分)
1) 给出所有居住城市与工作公司所在城市不相同的员工姓名。(5分) 2)给出位于“Hangzhou”的每个公司的公司名和员工工资总额,并按照工资总额降序排列。(5分) (4)更新数据库(10分)
对于居住在“Shanghai”的“WEB”公司的所有员工。 1)若 工资 <= 2000 ,则工资增长25% 2)若 2000 < 工资 <= 3000 , 则工资增长15%
3. 数据库范式化过程设计(15分)
原始数据如下表所示,请设计规范化到第三范式的数据库表。 学号 1 2 3 1 4 3
姓名 张三 李四 王五 张三 赵一 王五 性别 男 女 女 男 女 女 课程号 002 001 002 003 002 003 课程名 微机原理 自控原理 微机原理 电机拖动 微机原理 电机拖动 老师姓名 李老师 陈老师 李老师 罗老师 李老师 罗老师 分数 87 78 90 88 89 90 4. ADO程序设计(25分)
(1)ADO主要由哪三大对象组成,简述其功能。(5分) (2)简述ADO访问数据库的步骤。(5分)
(3)写出ADO连接ODBC和SQL Server的连接语句。(5分)
(4)编写采用ADO方法访问数据库的程序段,完成从数据库中获取数据记录并取出记录集的最后10条记录的功能,写出主要语句并进行注释。(编程语言可任选,10分)
5. 谈谈数据库技术在工程项目中的应用,以及其发展前景。(10分) 参考答案:
一、(1)数据查询:SELECT (查询出数据,也可用于变量赋值)
数据定义(表/视图/查询/存储过程/自定义函数/索引/触发器等):CREATE (创建)、DROP(删除)、ALTER(修改)
数据操作:INSERT(插入)、UPDATE(更新)、DELETE(删除) 数据控制:Grant(授权)、revoke(回收权限)
(2)理论性课本上都有三级模式(内模式、外模式??好像)
数据库系统的三级模式结构是指数据库系统是由模式、外模式和内模式三级构成的。 1.模式 模式也称逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。 模式实际上是数据库数据在逻辑级上的视图。一个数据库只有一个模式。定义模式时不仅要定义数据的逻辑结构,而且要定义数据之间的联系,定义与数据有关的安全性、完整性要求。 2.外模式 外模式也称用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。 外模式通常是模式的子集。一个数据库可以有多个外模式。应用程序都是和外模式打交道的。外模式是保证数据库安全性的一个有力措施。每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据对他们是不可见的 3.内
模式 内模式也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。 例如,记录的存储方式是顺序结构存
储还是B树结构存储;索引按什么方式组织;数据是否压缩,是否加密;数据的存储记录结构有何规定等。 (3)JSP、ASP、??
(4)数据库 WEB数据库 服务器 二、作业题
有一个员工数据库,存放了3个表:员工表(员工号,员工姓名,员工居住街道名,员工居住城市名),工作表(员工号、公司号、薪水),公司表(公司号,公司名字,公司所在城市名),试设计SQL语句完成下列功能。 1、 在数据库中创建以上3个表 2、 向数据表中插入数据
--emp(e01,TOM,ChangAnJie,BeiJing) --comp(c01,Soft,Beijing) --Works(e01,c01,3000) 3、实现如下查询
(1)给出所有居住城市与工作公司所在城市不相同的员工姓名。
(2)给出所有位于“CHANG ZHOU”的每个公司名和员工工资总额,并按照工资总额排序
4、更新数据库
对于居住在”shanghai”的Web公司所有员工 (1) 若工资<=2000,则工资增长25% (2) 若2000
答:1、书本中建库(61)建表(115)详解(很容易找到,就不再赘述) 2插入数据:USE 员工数据库
insert dbo.员工表(员工号,员工姓名,员工居住街道名,员工居住城市名) values('e04','Zhong','ChaoXi','ShangHai') GO
3(1)给出所有居住城市与工作公司所在城市不相同的员工姓名: SELECT 员工姓名 FROM 员工表 AS X
WHERE 员工居住城市名 NOT IN (SELECT 公司所在城市名 FROM 公司表 WHERE 公司号 IN (SELECT 公司号 FROM 工作表 AS Y WHERE Y.员工号 = X.员工号)) (2)给出位于“CHangZhou”的每个公司的公司名和员工工资总额降序排列: SELECT 公司名字 , SUM(薪水) AS SUM_薪水 FROM 公司表 JOIN 工作表1
ON 公司表.公司号 = 工作表1.公司号 WHERE 公司所在城市名 = C'HangZhou' GROUP BY 公司表.公司号 , 公司名字 ORDER BY SUM_薪水 DESC 4
(1)UPDATE 工作表1
SET 薪水 = 薪水 * 1.15
WHERE 公司号 IN (SELECT 公司号 FROM 公司表 WHERE 公司名字 = 'Web') AND (薪水 > 2000 AND 薪水 <= 3000) AND 员工号 IN (SELECT 员工号 FROM 员工表 WHERE 员工居住城市名 = 'ShangHai') (2)UPDATE 工作表1 SET 薪水 = 薪水 * 1.25
WHERE 公司号 IN (SELECT 公司号 FROM 公司表 WHERE 公司名字 = 'Web') AND 薪水 <= 2000
AND 员工号 IN (SELECT 员工号 FROM 员工表 WHERE 员工居住城市名 = 'ShangHai') 附加: 求平均值: USE 学生成绩数据库
SELECT AVG(分数) from dbo.成绩信息表 GO 删除记录 USE 员工数据库
delete dbo.员工表 where 员工号='e04' GO 修改记录 USE 员工数据库
UPDATE dbo.员工表 set 员工居住街道名='ChangAnJie' where 员工号='e02' GO 三、解答:
第一范式(1NF),它是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。在本题中,很显然,可以看出原始数据表本身满足该条件,所以可以将其作为第一范式;选择
第二范式(2NF),是在第一范式的基础上建立起来的,即满足第二范式必须先满足第一范式。第二范式要求数据库表中的每个实例或行必须可以被惟一地区分。在本题目中,通过观察,将学号和课程号作为主键,其第二范式存在关系如下:
(学号,课程号) (姓名,性别,课程名,老师姓名,分数) 这个数据库表不满足第二范式,为了消除了数据冗余,把原始数据表改为如下2个表:
学生:Student(学号, 姓名, 性别,成绩); 课程:Course(课程号,课程名, 老师姓名);
第三范式(3NF), 满足第三范式必须先满足第二范式。简而言之,第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。在第二范式中我们知道学生表中存在成绩通过课程号依赖于学号的传递依赖关系。因此为了消除传递依赖可以将上述两表改进为一下3个表:
学生:Student(学号, 姓名, 性别,成绩); 课程:Course(课程号,课程名, 老师姓名);
成绩查询表,check(学号, 课程号, 成绩)。 四、解答: (1)ADO三大对象分别是Command、Connection和Recordset。
其中,Connection对象:它用来和数据库源建立连接,可以使用它建立和管理应用程序和ODBC 数据库之间的连接。
Recordset 对象:它可以根据我们的查询限制,检索并且显示一组 数据库的记录,并且,保持查询返回的记录的位置,允许一次一项逐步扫描结果。
Command 对象:它主要用来改善查询。通过它,我们可以象用上面两个对象那样执行查询。它们唯一的不同之处,在于用Command
感谢您的阅读,祝您生活愉快。
因篇幅问题不能全部显示,请点此查看更多更全内容