网站大量收购独家精品文档,联系QQ:2885784924

MySQL开发和 与实践 第8章 数据完整性约束.ppt

MySQL开发和 与实践 第8章 数据完整性约束.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MySQL开发和 与实践 第8章 数据完整性约束.ppt

;;8.1 定义完整性约束;8.1.1 实体完整性;1.主键约束 主键可以是表中的某一列,也可以是表中多个列所构成的一个组合;其中,由多个列组合而成的主键也称为复合主键。在MySQL中,主键列必须遵守以下规则。 每一个表只能定义一个主键。 唯一性原则。主键的值,也称键值,必须能够唯一标识表中的每一行记录,且不能为NULL。也就是说一张表中两个不同的行在主键上不能具胡相同的值。 最小化规则。复合主键不能包含不必要的多余列。也就是说,当从一个复合主键中删除一列后,如果剩下的列构成的主键仍能满足唯一性原则,那么这个复合主键是不正确的。 一个列名在复合主键的列表中只能出现一次。 在MySQL中,可以在CREATE TABLE或者ALTER TABLE语句中,使用PRIMARY KEY子句来创建主键约束,其实现方式有以下两种。 作为列的完整性约束 在表的某个列的属性定义时,加上关键字PRIMARY KEY实现。;2.候选键约束 如果一个属性集能唯一标识元组,且又不含有多余的属性,那么这个属性集称为关系的候选键。例如,在包含学号、姓名、性别、年龄、院系、班级等列的“学生信息表”中,“学号”能够标识一名学生,因此,它可以作为候选键,而如果规定,不允许有同名的学生,那么姓名也可以作为候选键。 候选键可以是表中的某一列,也可以是表中多个列所构成的一个组合。任何时候,候选键的值必须是唯一的,且不能为空(NULL)。候选键可以在CREATE TABLE或者ALTER TABLE语句中使用关键字UNIQUE来定义,其实现方法与主键约束类似,也是可作为列的完整性约束或者表的完整性约束两种方式。 在MySQL中,候选键与主键之间存在以下两点区别。 一个表只能创建一个主键,但可以定义若干个候选键。 定义主键约束时,系统会自动创建PRIMARY KEY索引,而定义候选键约束时,系统会自动创建UNIQUE索引。;; 现实世界中的实体之间往往存在着某种联系,在关系模型中,实体及实体间的联系都是用关系来描述的,那么自然就存在着关系与关系间的引用。例如,学生实体和班级实体可以分别用下面的关系表示,其中主码(主键)用下划线标识。 学生(学生证号,姓名,性别,生日,班级???号,备注) 班级(班级编号,班级名称,备注) 在这两个关系之间存在着属性的引用,即“学生”关系引用了“班级”关系中的主码(主键)“班级编号”。 在两个实体间,“班级编号”是“班级”关系的主码(主键),也是“学生”关系的外部码(外键)。显然,“学生”关系中的“班级编号”的值必须是确实存在的班级的“班级编号”,即“班级”关系中的该班级的记录。也就是说,“学生”关系中某个属性的取值需要参照“班级”关系的属性和值。 参照完整性规则(Referential Integrity Rule)就是定义外码(外键)和主码(主键)之间的引用规则,它是对关系间引用数据的一种限制。 参照完整性的定义为:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K相对应,则对于R中每个元组在F上的值只允许两种可能,即要么取空值(F的每个属性值均为空值),要么等于S中某个元组的主码值。其中,关系R与S可以是不同的关系,也可以是同一关系,而F与F是定义在同一个域中。例如,在“学生”关系中每个学生的“班级编号”一项,要么取空值,表示该学生还没有分配班级;要么取值必须与“班级”关系中的某个元组的“班级编号”相同,表示这个学生分配到某个班级学习。这就是参照完整性。如果“学生”关系中,某个学生的“班级编号”取值不能与“班级”关系中任何一个元组的“班级编号”值相同,表示这个学生被分配到不属于所在学校的班级学习,这与实际应用环境不相符,显然是错误的,这就需要在关系模型中定义参照完整性进行约束。; 与实体完整性一样,参照完整性也是由系统自动支持的,即在建立关系(表)时,只要定义了“谁是主码”、“谁参照于认证”,系统将自动进行此类完整性的检查。在MySQL中,参照完整性可以通过在创建表(CREATE TABLE)或者修改表(ALTER TABLE)时定义一个外键声明来实现。 MySQL有两种常用的引擎类型(MyISAM和InnoDB),目前,只有InnoDB引擎类型支持外键约束。InnoDB引擎类型中声明外键的基本语法格式如下: [CONSTRAINT [SYMBOL]] FOREIGN KEY (index_col_name,…) reference_definition reference_definition主要用于定义外键所参照的表、列、参照动作的声明和实施策略等4部分内容。它的基本语法格式如下: REFERENCES tbl_name [(index_

文档评论(0)

youngyu0329 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档