- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL Server中数据完整性探讨
SQL Server中数据完整性探讨
摘要 保证数据完整性是数据库系统有效工作的重要前提条件。本文介绍了四种数据完整性的概念及如何在SQL Server中实现各种数据完整性的方法。
关键词 SQL Server;数据完整性;实体完整性;域完整性;参照完整性;用户定义完整性
中图分类号TP392 文献标识码A 文章编号 1674-6708(2010)26-0226-02
当今社会,各行各业广泛地使用数据库系统为用户提供各种数据服务。系统在与用户交互过程中,往往需要接受用户输入的信息作为数据库中的数据,由于用户的数量大,情况复杂,输入数据的内容、格式是否正确无法保障。如果不对用户输入提交的数据加以辨别,不做任何处理就直接储存到数据库中,势必造成大量错误、无效的数据充斥其中,严重影响系统的正常使用。能否快捷高效地对输入的数据进行检查,最大限度地阻止无效的输入,是衡量一个数据库系统质量的重要指标。
1 数据完整性
数据完整性是数据库的一个重要概念,它是指数据的精确性(正确性)、一致性和可靠性。数据完整性主要包括4种:实体完整性、域完整性、参照完整性(也称引用完整性)及用户自定义完整性。我们以当今应用最广泛的关系型数据库管理系统――SQL Server为工具,介绍几种数据完整性的概念及其实现方法。
2 引用数据实例
create table stuInfo――学生信息表,保存学生基本信息
(stuID CHAR(8) not null,――学号,定长为8个字符
PID VARCHAR(18) not null,――身份证号
stuName VARCHAR(8) not null,――学生姓名
gender CHAR(2) not null,――性别
telphone VARCHAR(13) not null,――联系电话
email VARCHAR(40) null,――电子邮箱
isGraduate BIT not null) ――是否毕业
create table stuMark――学生成绩表,保存学生所选课程及考试成绩
(stuID CHAR(8) not null,――学号
courseID CHAR(5) not null, ――课程号
score NUMERIC(4,1) null)――成绩
create table course ――课程表,保存所有可选课程
(courseID CHAR(5) not null,――课程编号
courseName VARCHAR(20) not null,――课程名
credit int not null)――课程学分
3 4种完整性的概念和实现方法
3.1 实体完整性
实体完整性即记录的正确性,指在一个表中,每一行都是唯一的,不能有完全相同的两条记录。在SQL Server中,实体完整性通过主键约束和唯一约束实现。在表中,如果有某个字段或几个字段的组合可以唯一地标识所在记录对应的实体,就可以在该字段(组)创建主键约束,该字段(组)称为该表的主键。设置了主键约束的字段(组)不能被输入空值(NULL),也不能有重复值。一个表只能有一个主键。如果表中的某一个字段或几个字段的组合不允许有重复值,则可为其创建唯一约束。一个表可以创建多个唯一约束。
对于实例中的3个表,course表的courseID可以设置为主键;stuInfo表中的stuID和PID都有资格设置为主键,但考虑到该数据库为学校使用,且学号stuID比身份证号PID的规律性强,适合排序管理,故将stuID设置为主键,将PID设置为唯一约束。stuMark表的stuID和courseID字段都有重复值,但一个学生选的一门课是唯一的,则可将stuID和courseID放在一起设置为组合主键。
Alter table stuMark add constraint PK_stuID_courseID PRIMARY KEY (stuID,courseID)
alter table stuInfo add constraint PK_stuID PRIMARY KEY(stuID),constraint UQ_PID UNIQUE(PID)
3.2 域完整性
域完整性指二维表列的准确性即字段的准确性,包括输入的值、格式、范围的限定。实现的方法有字段数据类型及宽度的指定、非空约束、检查约束和规则、默认约束和默认值等。
检查约束可以用来限定字段数据的格式和范围,可以防止用户输入允许范围以外的非法数据。如stuInfo表的gender字段,合法数据只
文档评论(0)