文档详情

实验六--数据库的完整性定义与检查-(2).doc

发布:2025-02-13约2.86千字共4页下载文档
文本预览下载声明

实验六数据库的完整性定义与检查

实验目的:

1.充分理解关系数据库中关于数据库完整性的概念。

2.掌握实体完整性的定义和检查方法。

3.掌握参照完整性的定义和检查方法。

4.掌握用户自定义完整性的定义和检查方法。

实验内容:

一、在企业管理器中定义以下数据表中各字段的完整性约束(包括实体完整性、参照完整性和用户定义完整性)。

1.Student表。记录学生基本信息。

表1-1Student表结构

列名

说明

数据类型

约束

Sno

学号

字符串,长度为7

主码

Sname

姓名

字符串,长度为10

非空

Ssex

性别

字符串,长度为2

取“男”或“女”

Sage

年龄

整数

取值15-45

Sdept

所在系

字符串,长度为20

默认为“计算机系”

CREATETABLE[dbo].[Student](

[Sno][char](9)PRIMARYKEY,

[Sname][char](8)NOTNULL,

[Ssex][char](2)CHECK(SsexIN(女,男)),

[Sage]SMALLINTCHECK(Sage=15ANDSage=45),

[Sdept][char](20)default(计算机)

)

2.Course表。记录课程信息。

表1-2Course表结构

列名

说明

数据类型

约束

Cno

课程号

字符串,长度为10

主码

Cname

课程名

字符串,长度为20

非空

Ccredit

学分

整数

取值大于0

Semester

学期

整数

取值大于0

Period

学时

整数

取值大于0

CREATETABLE[dbo].[Course](

[Cno][char](10)PRIMARYKEY,

[Cname][char](20)NOTNULL,

[Ccredit]SMALLINTCHECK(Ccredit0),

[Semester]SMALLINTCHECK(Semester0),

[Period]SMALLINTCHECK(Period0),

)

3.Sc表。记录学生选修课程的信息。

表1-3Sc表结构

列名

说明

数据类型

约束

Sno

学号

字符串,长度为7

主属性,引用Student的外码

Cno

课程号

字符串,长度为10

主属性,引用Course的外码

Grade

成绩

整数

取0-100

CREATETABLE[dbo].[SC](

[Sno][char](9)NOTNULL,

[Cno][char](10)NOTNULL,

[Grade]SMALLINTCHECK(Grade=0andGrade=100),

PRIMARYKEY(Sno,Cno),

FOREIGNKEY(Sno)REFERENCESStudent(Sno),

FOREIGNKEY(Cno)REFERENCESCourse(Cno)

)

二、在查询编辑器中,写出创建表的语句同时写出设置实体完整性、参照完整性和用户自定义完整性的语句。

三、完整性检查(在查询编辑器中输入SQL语句,执行语句后,DBMS自动进行完整性的检查)

1.实体完整性检查

(1)在STUDENT表中插入一条学生记录,其中插入的学号值为表中已存在的一个学号值,执行语句,查看结果。

insert

intostudent(sno,sname,ssex,sage,sdept)

values(0012,冯小楠,女,20,CS)

消息2627,级别14,状态1,第1行

违反了PRIMARYKEY约束PK_Student。不能在对象dbo.student中插入重复键。

语句已终止。

在SC表中插入一条学生选课记录,学号值为空或课程号值为空,执行语句,查看结果。

insert

intoSC(sno,cno,grade)

values(,002,90)

消息547,级别16,状态0,第1行

INSERT语句与FOREIGNKEY约束FK_Sc_Student冲突。该冲突发生于数据库StudentScore,表dbo.Student,columnSno。

语句已终止。

2.参照完整性检查

(1)在SC表中插入一条学生选课记录,插入的学号值为STUDENT表中没有的一个学号,或插入的课程号的值为COURSE表中没有的一个课程号。

insert

intoSC(sno,cno,grade)

values(0013,002,90)

消息547,级别16,状态0,第1行

INSERT语句与FOREIGNKEY约束FK_Sc_Student冲突。该冲突发生于数据库Studen

显示全部
相似文档