数据库认证实验答案

更新时间:2024-06-06 21:37:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验二 数据库设计方法

为一个综合性运动会建立数据库,涉及的实体如下: 实验要求1:设计概念模型的E-R图。

运动会数据系统E-R图编号名称团长姓名运动员编号姓名性别年龄代表团1:n运动员参赛成绩竞赛项目项目编号编号名称比赛地点比赛时间

实验要求2:推出关系数据库。 关系模式:

代表团(代表团编号,代表团名称,团长姓名)

运动员(运动员编号,姓名,性别,年龄,代表团编号) 参赛项目(项目编号,项目名称,比赛时间,比赛地点) 参赛(运动员编号,项目编号,参赛成绩)

实验思考

1、简述E-R图的构成三要素。

实体、属性、联系

2、简述关系的性质。

关系中不允许出现相同的元组

关系中元组的顺序(即行序)可任意 关系中属性的顺序可任意

同一属性名下的各个属性值必须来自同一个域,必须是同一类型的数据 关系中各个属性必须有不同的名字,不同的属性可来自同一个域,即它们的分量可以取自同一个域。

关系中每一个分量必须是不可分的数据项,或者说所有的属性值都是原子的,即是一个确定的值,而不是值的集合

3、实体之间的联系有哪几种,并简述之。

一对一、一对多、多对多

4、试举出三个实例,要求实体型之间分别有一对一、一对多、多对多的联系。

一对一:班级与班长之间的联系:

一个班级只有一个正班长

一个班长只在一个班中任职

一对多:班级与学生之间的联系: 一个班级中有若干名学生, 每个学生只在一个班级中学习

多对多:课程与学生之间的联系:

一门课程同时有若干个学生选修

个学生可以同时选修多门课程

实验四 表的管理

实验内容:

1、 使用企业管理器按下表结构创建表

create database Course_Class_Student use Course_Class_Student; create table Course (

CourseID int primary key,

CourseName varchar(20) not null, Category char(8), Period smallint , Credit tinyint )

use Course_Class_Student; create table ClassInfo (

ClassID int not null,

ClassName varchar(20) not null, )

2、使用T-SQL语句按下表结构创建表

use Course_Class_Student create table student (

StudentNum char(9) primary key not null, StudentName varchar(8) not null, Sex bit,

Birthday smalldatetime , ClassID int )

4、使用T-SQL语句修改表的结构

alter table student add Nation varchar(20) alter table student add Stature int

5、使用企业管理器实现对数据的操作

insert into Course values (1,'哲学','公共',36,2) insert into Course values (2,'实用英语(1)','公共',72,3) insert into Course values (3,'实用英语(2)','公共',72,3) insert into Course values (4,'计算机应用基础','公共',102,5)

insert into Course values (5,'C语言程序设计','专业基础',102,5) insert into Course values (6,'关系数据库技术基础','专业基础',102,5)

6、使用T-SQL语句实现对数据的操作

(1)使用INSERT语句向Course表中添加记录:(计算机网络,专业基础,72,4)

insert into Course values (7,'计算机网络','专业基础',72,4)

(2)使用UPDATE语句将Course表中的“计算机应用基础”课的学时数改为106。

update Course set Period=106 where CourseName = '计算机应用基础'

(3)使用DELETE语句将Course表中的公共课全部删除。

delete from Course where Category = '公共'

7、使用T-SQL语句按下表结构创建表(在创建表时定义约束)

create table Grade(

StudentNum char(9) NOT NULL , CourseID int NOT NULL ,

DailyGrade decimal(5,1) CHECK (DailyGrade BETWEEN 0 AND 20), PracticeGrade decimal(5,1) CHECK (PracticeGrade BETWEEN 0 AND 30), TestGrade decimal(5,1) CHECK (TestGrade BETWEEN 0 AND 50) )

8、使用T-SQL语句修改表的结构

(1)为班级表ClassInfo添加入学时间EnrollDate字段,并定义入学时间不小于2001年9月1日。

ALTER TABLE ClassInfo add EnrollDate DATETIME CHECK (EnrollDate >= 2001-09-01)

(2)为班级表ClassInfo定义主键约束,定义班级号ClassID为主键。

Alter table ClassInfo add primary key(ClassID)

9、使用企业管理器定义约束

(1)为学生表Student定义外键约束,使ClassID参照班级表ClassInfo中的ClassID,并为约束设置级联更新。

(2)为班级表ClassInfo的ClassName定义唯一约束。

10、 默认值对象的创建与使用

(1)使用T-SQL语句创建名为DF_GRADE的默认值对象,值为0。

create default DF_GRADE AS 0

(2)使用企业管理器将DF_GRADE绑定到成绩表Grade中的DailyGrade、PracticeGrade和TestGrade字段上。

exec sp_bindefault 'DF_GRADE','grade.DailyGrade' exec sp_bindefault 'DF_GRADE','grade.PracticeGrade' exec sp_bindefault 'DF_GRADE','grade.TestGrade'

(3)使用sp_unbindefault存储过程将DF_GRADE从DailyGrade、PracticeGrade和TestGrade字段上解除。

exec sp_unbindefault 'grade.DailyGrade' exec sp_unbindefault 'grade.PracticeGrade'

exec sp_unbindefault 'grade.TestGrade'

(4)删除DF_GRADE默认值对象。

DROP DEFAULT df_grade

实验思考:

1、删除表的命令是什么?要将实验中的Student表删除,命令应怎样写?

drop table tableName drop table Student

2、要将Course表中的学分字段删除,相应的SQL语句怎么写?

alter table Course drop column Credit

3、若要删除第9题(1)中所建立的外键约束,使用企业管理器应怎么做?使用T-SQL语句应怎么做?

数据库关系图->新建数据库关系图->将相关的列属性进行连接 T-SQL语句:

alter table student add constraint FK_student_classId foreign key(classId) references ClassInfo(classId)

4、默认值约束和默认值对象是一回事吗? 不是一回事,

实验七 索引

实验内容:

1、 使用企业管理器为学生表stud_info创建一个以stud_id为索引关键字的惟一聚簇索引。

USE student

GO

CREATE INDEX old_index ON stud_info(stud_id)

2、

引名称修改为new_index。

exec sp_rename 'old_index','new_index';

将上一步所建立的索

3、 将前述所建立的new_index索引删除。

drop index student.new_index

4、 使用T-SQL语句为教师表teacher_info创建一个名为Teacher_Index的惟一非聚簇索引,索引关键字为教师编号teacher_id,降序,填充因子为80%。

CREATE UNIQUE NONCLUSTERED INDEX Teacher_Index ON teacher_info(teacher_id) ASC WITH

PAD_INDEX, FILLFACTOR=80,

5、使用T-SQL语句将教师表中的Teacher_Index删除。

drop index teacher.Teacher_Index

6、为stud_info表创建一个基于“入学成绩mark,学号stud_id”组合列的非聚集、复合索引cj_xh_index。

USE student

GO

CREATE INDEX cj_xh_ihdex ON stud_info(mark,stud_id)

7、为lesson_info创建一个基于“课程号course_id,课程类型course_type”组合列的惟一、聚集、复合索引kc_lx_index。

USE student GO

CREATE UNIQUE CLUSTERED INDEX kc_lx_index ON lesson_info(course_id,course_type) WITH

PAD_INDEX, FILLFACTOR=80,

实验九 存储过程

实验内容:

1、 创建一个名为“proc_1”的存储过程,用于查看学生表的所有信息。然后调用该存储过程。

2、创建一个名为“proc_2”的存储过程,用于向学生表的所有字段添加一条记录,记录内容由调用时决定。然后调用该存储过程。

3、创建一个名为“proc_3”的存储过程,用于删除学生表中指定学号的记录,具体学号由调用时决定。然后调用该存储过程。

4、修改存储过程“proc_4”,用于查询不小于指定成绩的学生的基本信息,具体 成绩由调用时决定。

5、创建一个名为“proc_5”的存储过程,用于求一个3位整数的反序数。例如123的反序数为321。

create proc proc_4 @a int as

declare @b int,@c int,@t int,@s int begin

set @t=@a % 10

select @b=@a/10,@b=@b % 10 set @c=@a/100

set @s=@t*100+@b*10+@c select @s end go

exec proc_4 123

本文来源:https://www.bwwdw.com/article/0rf6.html

Top