《数据库认证》大作业软件测试结果文档格式.docx
《《数据库认证》大作业软件测试结果文档格式.docx》由会员分享,可在线阅读,更多相关《《数据库认证》大作业软件测试结果文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
男'
orcSex='
女'
),--性别,性别只能取男或者女,使用了检查约束
cStuNativechar(20),--籍贯
sStuBirthdaysmalldatetime,--出生日期
cDepartmentIdchar(6)notnullreferencesDepartment(cDepartmentId),--院系编号,设置为外键,使用了外关键字约束
cSpecialityIdchar(8)notnullreferencesSpeciality(cSpecialityId),--专业编号,设置为外键,使用了外关键字约束
cClassNumchar(4),--班号
sEnterTimesmalldatetime,--入学时间
vStuAdrressvarchar(40),--学生家庭地址
vStuTelvarchar(20)--学生电话号码
)
createtableCourse--课程信息表
(cCourseIdchar(10)notnullconstraintpkCourseIdprimarykey,--课程编号,设置为主键,使用了主关键字约束
cCourseNamechar(20)notnullunique,--课程名称,使用unique进行唯一性约束
cCourseTypeIdchar(5)notnullreferencesCourseType(cCourseTypeId),--课程类型编号,设置为外键,使用了外关键字约束
iLectureint,--授课学时
tSemestertinyint,--开课学期
fCreditfloat,--课程学分
…….
3、视图
(1)创建视图
--建立学院代码为‘610000’教师的视图,包括教师的教师编号、姓名、性别和出生年月.使用withcheckoption可选项,是对视图进行更新操作(增加、删除、修改)时,要保证更新操作的行满足视图定义中的条件表达式
createviewTeacherInformation_view
as
selectcTeacherId,cTeacherName,sTeacherBirthday
fromTeacherInformationwherecDepartmentId='
610000'
withcheckoption
select*fromTeacherInformation_view
--建立课程1(上课编号)的学生花名册的视图,该花名册包括学生的学号、姓名、专业名称和这门课程的成绩
createviewCourse1_StudentInformation_view
as
selectStudent_Course.cStuId,cStuName,cSpecialityName,fStuScorefrom
StudentInformation,Speciality,Student_Course
whereStudent_Course.sTeacherCourseId=1andStudent_Course.cStuId=StudentInformation.cStuId
andStudentInformation.cSpecialityId=Speciality.cSpecialityId
select*fromCourse1_StudentInformation_view
(2)修改视图
--修改视图TeacherInformation_view,使其包括教师的职称这一列
alterviewTeacherInformation_view
selectcTeacherId,cTeacherName,cSex,sTeacherBirthday,cProfessionName
fromTeacherInformation,ProfessionwherecDepartmentId='
andTeacherInformation.tProfessionId=Profession.tProfessionId
(3)删除视图
--删除视图TeacherInformation_view
dropviewTeacherInformation_view
4、存储过程
(1)创建和执行存储过程
--创建一个无参的存储过程,完成的功能是在表StudentInformation、Course、Student_Course、Teacher_Course中查询以下字段:
班级、学号、姓名、性别、课程名称、分数
createprocedureStuScoreInfo
begin
selectStudentInformation.cClassNumas班级,StudentInformation.cStuIdas学号,cStuNameas姓名,cSexas性别,cCourseNameas课程名称,fStuScoreas分数
fromStudentInformation,Course,Student_Course,Teacher_Course
whereStudentInformation.cStuId=Student_Course.cStuIdandStudent_Course.sTeacherCourseId=Teacher_Course.sTeacherCourseId
andTeacher_Course.cCourseId=Course.cCourseId
End
…..
(2)删除存储过程
--删除存储过程StuScoreInfo
dropprocedureStuScoreInfo
--删除存储过程Stu_Age
dropprocedureStu_Age
--删除存储过程list_student_department
dropprocedurelist_student_department
5、触发器
(1)--创建一个after触发器,要求实现以下功能:
在StudentInformation表上创建一个删除类型的触发器Stu_Delete,当在StudentInformation表中删除某一条记录后,触发该触发器,在Student_Course表中删除与此学号对应的记录
createtriggerStu_Delete
onStudentInformation
fordelete
declare@StuIdchar(8)
select@StuId=cStuIdfromdeleted
deletefromStudent_CoursewherecStuId=@StuId
end
--创建了Stu_Delete触发器之后,输入以下语句
deletefromStudentInformationwherecStuId='
02080001'
02080002'
--删除Stu_Delete触发器
droptriggerStu_Delete
(2)--创建一个insteadof触发器,要求实现以下功能,在Student_Course表上创建一个删除类型的触发器NotAllowDelete,当在Student_Course表中删除记录时,触发该触发器,显示不允许删除表中数据的提示信息
createtriggerNotAllowDelete
onStudent_Course
insteadofdelete
print'
本表中的数据不允许被删除!
不能执行删除操作!
'
--创建了NotAllowDelete触发器之后,执行以下语句
deletefromStudent_CoursewherecStuId='
--删除NotAllowDelete触发器
droptriggerNotAllowDelete
(3)--创建一个after触发器,要求实现以下功能:
在Student_Course表上创建一个插入、更新类型的触发器ScoreCheck,当在fStuScore字段中插入或修改考试分数后,触发该触发器,检查分数是否在0-100之间
createtriggerScoreCheck
forinsert,update
ifupdate(fStuScore)
declare@ScoreValuereal
select@ScoreValue=(selectfStuScorefrominserted)
if@ScoreValue>
100or@ScoreValue<
输入的分数有误,请确认输入的考试分数!
--创建了ScoreCheck触发器之后,输入以下语句
insertintoStudent_Course
values('
'
5'
-50'
02080003'
7'
105'
--删除ScoreCheck触发器
droptriggerScoreCheck
6、事务
--事务的使用。
删除学号为02080001的学生的信息
declare@tran_namevarchar(20)
select@tran_name='
my_tran_delete'
begintran@tran_name
committran@tran_name
--事务的回滚,删除学号为02080002的学生的信息,让事务回滚到保存点savepoint
mytran'
savetransave_point
if@@error=0
rollbacktransave_point
else
2)给出Northwind库的整体ER关系图,给出Employees和Customers表的数据库字典。
图1、图2为
sql2000示例数据库Northwind的ER图,使用Powerdesigner反向工程方法获得
图
(1)
图
(2)
具体字段的含义如下:
① Categories:
种类表
相应字段:
CategoryID:
类型ID;
CategoryName:
类型名;
Description:
类型说明;
Picture:
产品样本
② CustomerCustomerDemo:
客户类型表1
相应字段:
CustomerID:
客户ID;
CustomerTypeID:
客户类型ID
③ CustomerDemographics:
客户类型表2
客户类型ID;
CustomerDesc:
客户描述
④ Customers:
客户表
CustomerID:
CompanyName:
所在公司名称;
ContactName:
客户姓名;
ContactTitle:
客户头衔;
Address:
联系地址;
City:
所在城市;
Region:
所在地区;
PostalCode:
邮编;
Country:
国家
Phone:
电话;
Fax:
传真
⑤ Employees:
员工表
EmployeeID:
员工代号;
LastName+FirstName:
员工姓名;
Title:
头衔;
TitleOfCourtesy:
尊称;
BirthDate:
出生日期;
HireDate:
雇用日期;
家庭地址;
City:
国家用;
HomePhone:
宅电;
Extension:
分机;
Photo:
手机;
notes:
照片;
ReportsTo:
上级;
PhotoPath:
照片
⑥ EmployeeTerritories:
员工部门表
员工编号;
TerritoryID:
部门代号
⑦ OrderDetails:
订单明细表
OrderID:
订单编号;
ProductID:
产品编号;
UnitPrice:
单价;
Quantity:
订购数量;
Discount:
折扣
⑧ Orders:
订单表
客户编号;
OrderDate:
订购日期;
RequiredDate:
预计到达日期;
ShippedDate:
发货日期;
ShipVia:
运货商;
Freight:
运费;
ShipName:
货主姓名;
ShipAddress:
货主地址
ShipCity:
货主所在城市;
ShipRegion:
货主所在地区;
ShipPostalCode:
货主邮编;
ShipCountry:
货主所在国家
⑨ Products:
产品表
ProductID:
产品ID;
ProductName:
产品名称;
SupplierID:
供应商ID;
CategoryID:
QuantityPerUnit:
数量;
UnitsInStock:
库存数量;
UnitsOnOrder:
订购量;
ReorderLevel:
再次订购量;
Discontinued:
中止
⑩ Region:
地区表
RegionID:
地区ID;
RegionDescription:
地区描述
⑪ Shippers:
运货商
ShipperID:
运货商ID;
CompanyName:
公司名称;
联系电话
⑫ Suppliers:
供应商表
ShipperID:
供应商姓名;
Phone;
⑬ Territories:
地域表
TerritoryID:
地域编号;
TerritoryDescription:
地域描述;
地区编号
数据库名:
Northwind
Suppliers
序号
列名
数据类型
长度
小数位
标识
主键
允许空
默认值
字段说明
1
SupplierID
int
4
√
2
CompanyName
nvarchar
80
3
ContactName
60
ContactTitle
5
Address
120
6
City
30
7
Region
8
PostalCode
20
9
Country
10
Phone
48
11
Fax
12
HomePage
ntext
16
RegionID
RegionDescription
nchar
100
Products
ProductID
ProductName
CategoryID
QuantityPerUnit
40
UnitPrice
money
(0)
UnitsInStock
smallint
UnitsOnOrder
ReorderLevel
Discontinued
bit
Orders
OrderID
CustomerID
EmployeeID
OrderDate
datetime
RequiredDate
ShippedDate
ShipVia
Freight
ShipName
ShipAddress
ShipCity
ShipRegion
13
ShipPostalCode
14
ShipCountry
Employees
LastName
FirstName
Title
TitleOfCourtesy
50
BirthDate
HireDate