刚才我博客中收录的一文程的实例和你这一样,估计是你们老师也是从网上找的一个题吧解答如下:
第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。
假定选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分),关键字为组合关键字(学号, 课程名称),因为存在如下决定关系:
(学号, 课程名称) → (姓名, 年龄, 成绩, 学分)
这个数据库表不满足第二范式,因为存在如下决定关系:
(课程名称) → (学分)
(学号) → (姓名, 年龄)
即存在组合关键字中的字段决定非关键字的情况。
由于不符合2NF,这个选课关系表会存在如下问题:
(1) 数据冗余:
同一门课程由n个学生选修,"学分"就重复n-1次;同一个学生选修了m门课程,姓名和年龄就重复了m-1次。
(2) 更新异常:
若调整了某门课程的学分,数据表中所有行的"学分"值都要更新,否则会出现同一门课程学分不同的情况。
(3) 插入异常:
假设要开设一门新的课程,暂时还没有人选修。这样,由于还没有"学号"关键字,课程名称和学分也无法记录入数据库。
(4) 删除异常:
假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是,与此同时,课程名称和学分信息也被删除了。很显然,这也会导致插入异常。
把选课关系表SelectCourse改为如下三个表:
学生:Student(学号, 姓名, 年龄);
课程:Course(课程名称, 学分);
选课关系:SelectCourse(学号, 课程名称, 成绩)。
这样的数据库表是符合第二范式的, 消除了数据冗余、更新异常、插入异常和删除异常
二、填空题
1数据库文件由数据文件和( 日志 )文件构成。
2完整性约束主要包括( 实体 )完整性、域完整性和( 参照 )完整性。
3数据库系统的应用结构C/S结构的中文全称是( 客户服务器结构 ),B/S结构的中文全称是( 浏览器/服务器结构 )。
4 SQL server局部变量名字必须以( @ )开头。
5创建、修改和删除数据库对象的语句分别是create、(alter )和(drop )。
6在SQL server中计算最大、最小、平均、求和与计数的聚合函数是max、min、(avg )、( sum )和( count )。
7数据完整性用于保证数据库中数据的( 正确性 )、( 一致性 )和(可靠性 )。
8触发器在工作过程中会产生两张临时的表,即( inserted )和( deleted )。
9create procedure是用来创建( 存储过程 )的语句。
10根据题意补充代码:
Student表如表1所示,sc表如表3所示。
(1) 查询学生总人数
代码:select count() as 总人数from student
(2) 计算C01课程的平均成绩
代码:Select avg(成绩) as平均成绩from sc where 课程号= ‘C01 ‘
(3) 求计算机系的学生学号和姓名;
代码:select 学号,姓名from student
Where 系别=’计算机系’
(4)创建触发器,限制不能删除有人选的课程。
代码:
CREATE trigger limit ON 课程
FOR delete
AS
IF EXISTS (SELECT 课程课程号 FROM 课程 JOIN 选课 ON 课程课程号 = 选课课程号)
Print ‘该课程有人选,不能删除’
rollback
评卷人 得分
三、简答题
1 简述什么是实体完整性。
实体完整性是用于保证数据表的每一个特定实体记录都是唯一的。
2简述视图与基本表的区别和联系。
区别:1、视图是已经编译好的sql语句。而表不是
2、视图没有实际的物理记录。而表有。
3、表是内容,视图是窗口
4、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表其他内容。表是实表;视图是虚表。
6、视图的建立和删除只影响视图本身,不影响对应的基本表。
联系:视图是在基本表之上建立的表,它的结构和内容都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系
四、编程题
1表1:student表(学生表)
学号 姓名 性别 年龄 系别
1 周杨 男 18 计算机系
2 沈晔 女 21 经管系
3 张宁萍 女 19 电子工程系
4 李立初 男 19 艺术系
表2:course表(课程表)
课程号 课程名 学分
C01 SQLServer 4
C02 数据结构 3
C03 专业英语 2
表3:sc表(选课表)
学号 课程号 成绩
1 C01 88
2 C01 90
2 C02 70
3 C03 79
1、 把course表中课程号为3的课程的学分修改为3。
Update course
Set 学分=’3’
Where 课程=’3’
Select from course
2、 在student表中查询年龄大于18的学生的所有信息,并按学号降序排列。
Select from student
Where 年龄>18
Order by 学号 desc
3、 在以上三个表中查询选的课程的“学分”为3,并且成绩大于80的学生的学号、姓名
和性别。
Select student学号, student姓名, student性别fromstudent, course, sc
Where student学号= sc学号 and course课程号= sc课程号 and course学分=’3’ and sc成绩>’80’
4、 将student表的列系别改为nchar(8)数据类型,并且不允许为空。
Alter table student
Alter column 系别 nchar(8) not null
5、 在student表中插入彭夏雨同学的记录。姓名:彭夏雨,学号:4,年龄:20
Insert student
Values(‘彭夏雨’,’4’,’ 20’)
6声明一个长度为8的字符型变量“shuaige”, 并赋初值为”陈俊杰”。请按前面的要求写
出相应的语句。
Declare@shuaige char(8)
Set@shuaige=’陈俊杰’
7、查询周杨同学所上课程的成绩。
Selectsc成绩from student,sc
Wherestudent学号=sc学号 and姓名=’周扬’
以上就是关于数据库问题,答对了,高分赠!!全部的内容,包括:数据库问题,答对了,高分赠!!、数据库求答案、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)