数据库实验 数据完整性管理Word格式文档下载.docx

上传人:b****5 文档编号:20655366 上传时间:2023-01-24 格式:DOCX 页数:11 大小:2.98MB
下载 相关 举报
数据库实验 数据完整性管理Word格式文档下载.docx_第1页
第1页 / 共11页
数据库实验 数据完整性管理Word格式文档下载.docx_第2页
第2页 / 共11页
数据库实验 数据完整性管理Word格式文档下载.docx_第3页
第3页 / 共11页
数据库实验 数据完整性管理Word格式文档下载.docx_第4页
第4页 / 共11页
数据库实验 数据完整性管理Word格式文档下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数据库实验 数据完整性管理Word格式文档下载.docx

《数据库实验 数据完整性管理Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据库实验 数据完整性管理Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。

数据库实验 数据完整性管理Word格式文档下载.docx

在表设计界面中,单击并按住Ctrl键

拖动左边的行选定块,选定sno和cno字段,单击工具按钮设置主键。

如图

所示:

域完整性

3.将“ssex”字段设置为只能取“男”,“女”两值:

在表设计界面,点击鼠标右键——CHECK约束,——添加约束,添加CK_student_sex名称,然后在约束表达式框中输入“ssexin('

男'

'

女'

)”。

如图所示。

参照完整性

4.将“student”表和“sc”表中的“sno”字段设为参照:

打开“sc”表的设计界面,点击工具栏按钮,在弹出的属性(properties)对话框中点击“新建”按钮,在“主键表(Primarykey

table)”下拉框中选择“student”表,在其下的字段选择框中选择“sno”,在“外键表(Foreign

keytable)”下拉框中选择“sc”表,在其下的字段选择框中选择“sno”,单击关闭即可。

命令方式操作方法:

1.将“student”表的“sno”字段设为主键:

当“student”表已存在则执行:

altertablestudentaddconstraintpk_snoprimarykey(sno)

当“student”表不存在则执行:

Createtablestudent(snoCHAR(5)primarykey,

snameCHAR(10)NOTNULL,

ssexCHAR

(2),

sageint,

sdeptCHAR(4))

注:

可用命令“droptablestudent”删除“student”表

2.添加一身份证号字段,设置其惟一性.(注:

操作前应删除表中的所有记录)

Altertablestudentaddidchar(18)unique(id)

3.将“sc”表的“sno”和“cno”设置为主键:

当“sc”表已存在则执行:

altertablescaddconstraintPK_SnoCnoprimarykey(sno,cno)

当“sc”表不存在则执行:

Createtablesc(snoCHAR(5),

cnoCHAR

(2),

gradeINTNULL,

constraintPK_SnoCnoprimarykey(sno,cno))

4.将“ssex”字段设置为只能取“男”,“女”两值:

altertablestudentaddconstraintCK_Sexcheck(ssexin('

'

))

当“student”表不存在则执行:

snameCHAR(10),

ssexCHAR

(2)check(ssexin('

)),

sageint,sdeptCHAR(4))

5.设置学号字段只能输入数字:

altertablestudentaddconstraintCK_Sno_Formatcheck(snolike

'

[0-9][0-9][0-9][0-9][0-9]'

6.设置身份证号的输入格式:

altertablestudentaddconstraintCK_ID_Formatcheck((idlike'

[0-9][0-9][0-9][0-9][0-9][0-9][1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]_'

)OR(idlike'

[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]'

7.设置18位身份证号的第7位到第10位为合法的年份(1900-2050)

altertablestudentaddconstraintCK_ID_Format2check(len(id)=18and

((convert(smallint,substring(id,7,4))>

=1900)and(convert(smallint,substring(id,7,4))<

=2050)))

6.设置男生的年龄必须大于22,女生的年龄必须大于20.

AltertablestudentaddconstraintCK_agecheck(ssex='

andsage>

=22orssex='

=20)

9.将“student”表和“sc”表中的“sno”字段设为参照:

altertablescaddconstraintFP_snoforeignkey(sno)referencesstudent(sno)

Createtablesc(snoCHAR(5)constraintFP_sno

foreignkeyreferencesstudent(sno),

cnoCHAR

(2),gradeINTNULL,

constraintPK_SnoCnoprimarykey(sno,cno))

完整性验证

1.实体完整性:

在“student”表数据浏览可视化界面中输入学号相同的两条记录将会出

现错误如图所示:

或者在命令窗口输入下面两条命令也会出现错误提示:

insertintostudentvalues('

95003'

张三'

24,'

CS'

42222919901012903X'

95001'

李四'

21,'

422229199510129031'

下面的语句用来验证“sc”表中的实体完整性:

insertintoscvalues('

95002'

'

10'

65)

90)

2.域完整性:

使用下面的语句验证“ssex”字段的域完整性:

95009'

张匀'

大'

20,'

‘422229************’)

3.参照完整性:

使用下面的语句“验证”sc表中的“sno”字段的域完整性(假设student表中没有学号为“95998”的学生记录):

98998'

98)

(二)实验任务

1、建立课程的实体完整性,和课程号cno的参照完整性;

课程的实体完整性:

课程号cno的参照完整性:

alter 

table 

sc 

add 

 

constraint 

FK_cno 

foreign 

key 

(cno) 

references 

course(cno 

2、对HRM数据库,练习建立三个表的主外键约束、唯一约束、取空值约束、用户自定义的约束(参考HRM数据库表定义图中说明);

主键约束:

Departments:

departments 

FK_DepartmentID 

primary 

(DepartmentiID)

Employee:

Employee 

FK_EmployeeID 

(EmployeeID)

外键约束:

Salary:

salary 

(EmployeeID) 

Employee(EmployeeID)

employee 

FK_EMPLOYEE_DEPARTMENT

(DepartmentID) 

Departments(DepartmentID)

唯一约束:

Departments 

UNIQUE_Department 

UNIQUE 

(DepartmentID)

altertableEmployeeaddconstraintUNIQUE_EmployeeUNIQUE(DepartmentID)

Salary 

UNIQUE_Salary 

非空约束:

表Employee:

column 

EmployeeID 

char(6) 

not 

null 

Name 

char(10) 

Birthday 

Datetime 

Sex 

Bit 

DepartmentID 

char(3) 

表Departments:

表Salary:

Income 

Float(8) 

null

OutCome 

用户自定义约束:

constraintCK_Sex 

check 

(sex 

in 

('

3、建立salary表的Income字段限定在0-9999之间。

CK_Salary_INCOME 

(Income 

between 

and 

9999) 

四、实验总结

(1)举例说明如何操作会违背完整性(实体完整性、参照完整性)

1.实体完整性

指关系里的任何一个属性都是不可再分的。

列如关于学生信息的一个关系student(ID,number,age,sex,grade,e.English)

学生关系grade(成绩)里包含了English的英语成绩,那么就违背了实体完整性。

2.参照完整性

指两个关系之间的,目的是保证数据的一致性。

如再有一个关系courese(id,coursename,number)

当我修改了关系student中的number,那么courese关系中的number就与student中的number不一致了,违背了参照完整性。

3.用户定义完整性

这是自己设置的

列如我设置student关系里的age属性只能在16到24之间,那么超出这个范围的数据将不允许插入,用户每执行一条操作,数据库都会检查上述的三个完整性。

(2)掌握域完整性、实体完整性、参照完整性的实现方法。

(3)深入理解了域完整性、实体完整性、参照完整性的用途和意义

(4)数据完整性包含参照完整性,实体完整性,用户自定义完整性,这些完整性约束能更好的保证数据的规范性以及合法性,并提高数据的安全性,尤其在设计主外键关系的时候,要注意其内在逻辑,肯能很容易就把外间关系弄掉了,或者逻辑考虑不周,导致最后数据插入不进去。

所以数据的逻辑关系在数据库设计时十分重要

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1