精华内容
下载资源
问答
  • 要想了解这完整性约束,先要了解什么是数据完整性。         数据库中的数据是从外界输入的,而数据的输入由于种种原因,会发生输入无效或错误信息。保证输入的数据...

    数据完整性

            要想了解这三类完整性约束,先要了解什么是数据完整性。

            数据库中的数据是从外界输入的,而数据的输入由于种种原因,会发生输入无效或错误信息。保证输入的数据符合规定,成为了数据库系统,尤其是多用户的关系数据库系统首要关注的问题。数据完整性因此而提出。

            数据完整性(Data Integrity)是指数据的精确性(Accuracy) 和可靠性(Reliability)。即数据完整性是指数据库中存储的数据是有意义的或正确的,和现实世界相符。它是应防止数据库中存在不符合语义规定的数据,和防止因错误信息的输入输出造成无效操作或错误信息而提出的。

            数据完整性分为三类:实体完整性(Entity Integrity)、参照完整性(Referential Integrity)、用户自定义完整性(User-definedIntegrity)。

            数据库采用多种方法来保证数据完整性,包括外键、约束、规则和触发器。系统很好地处理了这几者的关系,并针对不同的具体情况用不同的方法进行,相互交叉使用,相补缺点。

            关系模型允许定义三类完整性约束;实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,体现了具体领域中的语义约束。


    一、实体完整性

            实体完整性要求每个数据表都必须有主键,而作为主键的所有字段,其属性必须是独一及非空值。

            实体完整性要保证关系中的每个元组都是可识别的和惟一的,指关系数据库中所有的表都必须有主键,

            而且表中不允许存在无主键值的记录和主键值相同的记录。因为实体必须可区分。

            实际上,当在表中定义了主键时,数据库管理系统会自动保证数据的实体完整性,即保证不允许存在主键值为空的记录以及主键值重复的记录。


    二、参照完整性

            参照完整性也称为引用完整性。参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

            现实世界中的实体之间往往存在着某种联系,在关系模型中,实体以及实体之间的联系都是用关系来表示的,这样就自然存在着关系与关系之间的引用。

            而参照完整性就是描述实体之间的联系的。参照完整性一般是指多个实体或关系之间的关联关系。

            例如,若基本关系 R 的外键为 F,它与基本关系 S 的主键 K 相对应(基本关系 R 和 S 不一定是不同的关系),则对于 R 中的每个元组在 F 上的值必须为:

        (1)空值,F 的每个属性值均为空值。

        (2)S 中某个元组中的主键值。

            即参照的关系中的属性值必须能够在被参照关系找到或者取空值,否则不符合数据库的语义。

            在实际操作时如更新、删除、插入一个表中的数据,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确,不正确则拒绝操作。


    三、用户定义完整性

            用户定义完整性也成为域完整性或语义完整性。用户自定义完整性是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。

            实际上就是指明关系中属性的取值范围,防止属性的值与应用语义矛盾。

            关系模型应提供定义和检验这类完整性的机制,以便用统一的系统方法处理它们,而不要由应用程序承担这一功能

            主要包括非空约束、唯一约束、检查约束、主键约束、外键约束。


    展开全文
  • 要想了解这完整性约束首先要了解什么是数据完整性。数据完整性是指数据库中存储的数据是有意义的或正确的,和现实世界相符。关系模型中完整性约束: – 实体完整性(Entity Integrity) – 参照完整性...

    数据完整性

    要想了解这三类完整性约束首先要了解什么是数据完整性。数据完整性是指数据库中存储的数据是有意义的或正确的,和现实世界相符。关系模型中三类完整性约束:
    – 实体完整性(Entity Integrity)
    – 参照完整性(Referential Integrity)
    – 用户定义的完整性(User-defined Integrity) •
    实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持

    实体完整性

    • 保证关系中的每个元组都是可识别的和惟一的 • 指关系数据库中所有的表都必须有主键,而且表中不允
    许存在如下记录:
    – 无主键值的记录
    – 主键值相同的记录
    • 原因:实体必须可区分
    例如:
    在这里插入图片描述
    上图就出现了主键值(学号是主键)重复的情况。当在表中定义了主键时,数据库管理系统会自动保证数据的实体完整性,即保证不允许存在主键值为空的记录以及主键值重复的记录。

    参照完整性

    也称为引用完整性
    • 现实世界中的实体之间往往存在着某种联系,在关系模型中,实体以及实体之间的联系都是用关系来表示的,这样就自然存在着关系与关系之间的引用
    • 参照完整性就是描述实体之间的联系的
    • 参照完整性一般是指多个实体或关系之间的关联关系
    在这里插入图片描述
    此完整性涉及到了外键:
    • 参照完整性规则就是定义外键与被参照的主键之间的引用规则
    • 外键一般应符合如下要求:
    – 或者值为空
    – 或者等于其所参照的关系中的某个元组的主键值

    用户定义完整性

    • 也称为域完整性或语义完整性
    • 是针对某一具体应用领域定义的数据约束条件
    • 反映某一具体应用所涉及的数据必须满足应用语义的要求
    • 实际上就是指明关系中属性的取值范围,防止属性的值与应用语义矛盾
    • 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统方法处理它们,而不要由应用程序承担这一功能

    展开全文
  • 实现完整性约束条件,Microsoft SQL Server
  • 数据库关系模型的完整性约束

    千次阅读 2019-02-25 10:12:10
    关系模型中有完整性约束,分别是:实体完整性,参照完整性,用户定义完整性 实体完整性 定义:实体完整性是用于保证关系数据库中每个元组都是可区分的,唯一的。 它的意思就是说数据表中每一行都应该有办法...

    关系模型中有三类完整性约束,分别是:实体完整性,参照完整性,用户定义完整性


    实体完整性

    定义:实体完整性是用于保证关系数据库中每个元组都是可区分的,唯一的。

    它的意思就是说数据表中每一行都应该有办法将其唯一区分开来,这自然指的就是主键了,而且主键必须不能为空或部分为空。

    那么它大可以直接叫一些诸如“要有主键”等通俗的名字,但是为何要叫实体完整性呢?
    首先第一点,“实体完整性”这个名字听起来就很高大上,嘿嘿;
    好了不开玩笑了,说认真的。

    • 一个基本表实际上是对应了现实生活中的一个实体集的,比如学生关系就对应了学生的集合,因此我们所谓的表,其实就相当于现实生活中的某一种实体的集合。
    • 而现实生活中的实体都是可以唯一区分的,他们本身就都具有了某种唯一性标识,比如学生的学号,人的身份证等等。
    • 所以既然我们的表是相对于实体集的,那么表中必然需要一个主键来作为这个实体在被抽象后的唯一标识
    • 而主键不能为空就更好理解了,主键要是为空了那还拿什么来唯一标识这个实体呢?即这样就会存在不可区分的实体了,那就和我们上面讲的矛盾了。
    • 因此,这个规则就叫做实体完整性,私下里(不正式啊,只是辅助理解与记忆)可以理解为主键完整性。

    参照完整性

    参照完整性中的参照,说白了就是数据表里的外键。
    举个例子,下面有三个关系:

    学生(学号,姓名)
    课程(课程号,课程名)
    选修(学号,课程号,成绩)
    

    显然,在选修关系中的学号,必须是学生表里真正存在的学号,且选修表里的课程号,也必须是课程表里真正存在的课程号。这就是参照完整性的一个典型表现了。

    在上面的例子中,选修表中的学号就称为选修表的一个外码,它对应的是学生表中的学号。并且称选修关系为参照关系,而学生关系为被参照关系

    但是仅仅这么说还有很多细节没有讲到,下面我们理一理外码的定义。
    首先要知道,外码不能是这个关系(参照关系)的主码,但是是它参照的关系(被参照关系)的主码。
    什么意思呢,就是说学号这个属性在学生表中是主码,而在选修表中不是,这就称学号是选修表中的一个外键(课程号同理)。

    而且参照关系和被参照关系可以是同一个关系,比如:

    学生(学号,姓名,班级,班长)
    

    在上面的关系中,班长属性保存的是班长的学号,那么这就是自己参照自己了。
    即“班长”是外码,而学号是主码。

    而参照完整性,就是指如果属性(或属性组)F是关系R的外码,且对应了关系S的主码K(R和S可以是同一个关系),那么对于R中的每个元组中的F上的值,必须满足:
    (1) 要么F取空值
    (2) 要么等于S中某个元组的主码的值

    比如上面那个学生的例子,或许那个班级还没有选出班长,则班长属性为空。而如果选出了班长,那么班长必然是某一个学生,则他的学号一定是在所有的学号中的某一个。

    用户定义的完整性

    任何关系型数据库,都一定要支持实体完整性和参照完整性。
    但同时往往在不同的情况下,我们还需要一些特殊的约束条件,比如性别只能是男或女,年龄不能超过150岁等等。
    这种针对某一具体关系数据库的约束条件称为用户定义的完整性,它反映某一具体应用所涉及的数据必须满足的语意要求。

    Additionally

    另外,还有一种说法,说关系模型有四种完整性约束,而另外那种完整性约束即为—— 域完整性

    域完整性:(Domain Integrity)是指数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定

    不过我觉得,域完整性其实就是所谓的用户定义的完整性…

    展开全文
  • 种关系完整性约束

    千次阅读 2020-10-05 21:50:54
    关系的完整性约束: (1)实体完整性(必须) 若属性A是基本关系R的主属性,则A不能取空值。 检查和违约处理: 1)检查主码值是否唯一,如果不唯一则拒绝插入或修改。 2)检查主码的各个属性是否为空,只要有一...

    转载博文:https://www.cnblogs.com/cing/p/9253180.html

    关系的3种完整性约束+5种范式
    关系模型组成:关系数据库,关系操作集合,关系完整性约束。

    关系的三类完整性约束:

    (1)实体完整性(必须)

    若属性A是基本关系R的主属性,则A不能取空值。

    检查和违约处理:

    1)检查主码值是否唯一,如果不唯一则拒绝插入或修改。

    2)检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改。

    (2)参照完整性(必须

    若属性F是基本关系R的外码,它与基本关系S的主码K相对应,则对于R中每个元组在F上的值要么为空值,要么等于S中某个元组的主码值。

    检查和违约处理:

    被参照表 参照表 违约处理
    可能破坏参照完整性 插入元组 拒绝
    可能破坏参照完整性 修改外码值 拒绝
    删除元组 可能破坏参照完整性 拒绝/级连删除/设置为空值
    修改主码值 可能破坏参照完整性 拒绝/级连删除/设置为空值

    3)用户定义的完整性(可选)

    比如唯一性、能否取空值等。

    候选码:设K是R<U,F>的属性,若K->U,则K为R的候选码。

    主码:从候选码中选择一个。

    主属性:包含在任何一个候选码中的属性。

    非主属性:不包含在任何码中的属性。

    范式:

    5NF<4NF<BCNF<3NF<2NF<1NF

    第一范式(1NF):每一个分量必须是不可分的数据项。

    存在问题:数据冗余太大,更新异常,插入异常,删除异常。

    违反例子:F={Sno->Sdept, Sdept->Mname, (Sno, Cno)->Grade}

    分解为合格:S(Sno, Sdept, Sno->Sdept), SC(Sno, Cno, Grade, (Sno, Cno)->Grade), DEPT(Sdept, Mname, Sdept->Mname)

    第二范式(2NF):若R属于1NF,且每一个非主属性完全函数依赖于码,则R属于2NF。

    存在问题:插入异常,删除异常,修改复杂。

    违反例子:{(Sno, Cno)->完全函数依赖Grade), Sno->Sdept, (Sno, Cno)->部分函数依赖Sdept, Sno->Sloc, (Sno, Cno)->部分函数依赖Sloc}。

    分解为合格:SC(Sno, Cno, Grade, (Sno, Cno)->Grade), SL(Sno, Sdept, Sloc, Sno->Sdept, Sno->Sloc, Sdept->Sloc)

    第三范式(3NF):若R属于3NF,则每一个非主属性既不部分依赖于码,也不传递依赖于码。

    违反例子:上面的SL是不属于3NF的,因为有传递函数依赖。

    分解为合格:SD(Sno, Sdept, Sno->Sdept), DL(Sdept, Sloc, Sdept->Sloc)。

    **BCNF:**所有非主属性对每一个码都是完全函数依赖,所有主属性对每一个不包含它的码,也是完全函数依赖,没有任何属性完全函数依赖于非码的任何一组属性。

    若R属于BCNF,则一定属于3NF;反过来不成立。

    第四范式(4NF):属性之间不允许有非平凡(若多值依赖X->->Y中,Z为空,则称X->->Y为平凡的多值依赖)且非函数依赖(X->Y)的多值依赖。

    若R属于4NF,则一定属于BCNF。

    在这里插入图片描述

    展开全文
  • 关系的完整性约束

    万次阅读 2017-08-23 21:07:06
    关系的完整性约束 实体完整性 若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值。 参照完整性 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K相对应(或者说F引用了...
  • 关系型数据库的完整性约束

    千次阅读 2020-04-23 17:06:07
    关系模型中的完整性约束 1.实体完整性 2.参照完整性 3.用户定义的完整性 实体完整性 若属性A是基本关系R的主属性,则属性A不能取空值。 实体完整性规定基本关系的所有主属性,都不能取空值。 参照完整性 **外...
  • 1.2 域完整性约束完整性约束的作用:限制此单元格的数据正确,不对其它单元格起作用,域代表当前单元格 域完整性约束:数据类型、非空约束(not null)、默认值约束(default) check约束(mysql不支持)check...
  • 本文对完整性约束,在创建表时以及创建表后如何给约束命名(列级、表级)做了介绍。 最后介绍了在约束命名的条件下,如何删除约束。 1.为约束起命名时,用到的关键字CONSTRAINT。 2.需要注意的是,在同一数据库...
  • MySQL数据库全套视频,带你了解MySQL数据库,免费领取Python自动化学习资料 工具,面试宝典面试技巧
  • 完整性约束条件作用的对象可以是关系、元组、列种。其中列约束主要是列的类型、取值范围、精度、排序等约束条件。元组的约束是元组中各个字段间的联系的约束。关系的约束是若干元组间、关系集合上以及关系之间的...
  • 1、实体完整性:所谓的实体完整性就是指关系(所谓的关系就是表)的主码不能取空值; 比如学生表的主码通常是取学号为主码 2、参照完整性:是指参照关系中每个元素的外码要么为空(NULL),要么等于被参照关系中某个元素...
  • 掌握SQL中实现数据完整性的方法,加深理解关系数据模型的完整性约束
  • 本文实例讲述了mysql完整性约束。分享给大家供大家参考,具体如下: 主要内容 not null 与 default unique primary auto_increment foreign key 约束条件作用:用于保证数据的完整性和一致性 主要分为 PRIMARY...
  • 关系模型的完整性约束

    千次阅读 2018-07-29 00:11:11
    关系的完整性约束分为类: 实体完整性:关系必须有主键,且不能为空; 参照完整性:维护实体之间的引用关系,外键可以为空,或者其值为参照关系对应的主键值; 用户定义的完整性:由应用环境决定,针对具体关系...
  • 定义完整性约束

    千次阅读 2021-04-12 18:15:17
    关系模型的完整性规则是对关系的某种约束条件。在关系模型中,提供了实体完整性、参照完整性和用户定义的完整性项规则。下面将分别介绍MySQL中对数据库完整性三项规则的设置和实现方式。 主要内容: 1)实体完整...
  • 数据库的完整性约束

    千次阅读 2017-01-25 18:14:00
    完整性约束是为了表的数据的正确性!如果数据不正确,那么一开始就不能添加到表中。 1 主键当某一列添加了主键约束后,那么这一列的数据就不能重复出现。这样每行记录中其主键列的值就是这一行的唯一标识。例如...
  • 关系数据库——关系的完整性约束

    千次阅读 2019-04-09 08:38:38
    介绍关系型数据库完整性约束——实体完整性,参照完整性、用户自定义完整性
  • SQL完整性约束

    千次阅读 2017-10-02 15:55:11
    完整性约束用于确定关系型数据库中数据的准确性和唯一性,在关系型数据库中,数据的完整性是通过引用完整性的概念实现的,而引用完整性具有如下的类型。一.主键约束主键约束是数据表一个或多个用以实现记录唯一性的...
  • 一、实体完整性 实体完整性要求每个表都有唯一标识符,每一个表中的主键字段不能为空或者重复的值。 二、参照完整性 参照完整性要求关系中不允许引用不存在的实体。设定相应的更新删除插入规则来更新参考表。 ...
  • 数据库 完整性约束

    千次阅读 2019-05-24 14:57:42
    完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。 参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的...
  • 完整性约束的SQL定义

    千次阅读 2013-03-31 13:31:44
    完整性约束的SQL定义:http://www.cnblogs.com/2007/archive/2007/08/24/868428.html 更新数据库时,表中不能出现不符合完整性要求的记录,以保证为用户提供正确、有效...SQL把各种完整性约束作为数据库模式定义的一部
  • 数据库之完整性约束

    千次阅读 2018-06-10 00:09:41
    数据库对于其内部的数据应该是有要求的,即只有合法的数据才能被写入数据库中,这个合法的法一方面是由用户自己定义(用户自定义完整性),一部分是系统需求(实体完整性约束以及参照性约束)。DB Integrity 是DBMS...
  • MySQL之完整性约束

    2017-07-18 15:59:08
    文章转自:原文地址 ...约束机制(数据约束):主要描述数据结构内数据间的语法、词义联系、他们之间的制约和依存关系,以及数据动态变化的规则,以保证数据的正确、有效和相容。 作为数据库的一种数据模型,
  • MySQL数据库:完整性约束

    千次阅读 2016-10-27 17:20:37
    完整性约束是为了表的数据的正确性!如果数据不正确,那么一开始就不能添加到表中。主键当某一列添加了主键约束后,那么这一列的数据就不能重复出现。这样每行记录中其主键列的值就是这一行的唯一标识。例如学生的...
  • SQL server完整性约束的操作

    千次阅读 2020-04-23 18:05:36
    有关完整性约束完整性约束 本文对在创建表时或者创建表后如何设置约束条件做了详细说明,希望可以帮到大家!!!   【注】:完整性约束条件涉及到该表的多个属性列时,则必须定义在表级上,否则既可以...
  • 实验4完整性约束 数据库的完整性是指数据的正确性和相容性例如,在性別字段中,只 能取男或女两个值中的一个,没有第个可取值;学生的学号必须 唯一在 SQL Server20中,系统提供多种强制数据完整性的机制,以便确 保...
  • 关系模型分类约束:实体完整性约束、参照完整性约束和用户自定义完整性约束。 前两者是必须满足的条件,称作关系的两个不变性。由DBMS自动支持 实体完整性约束(Entity Integrity Constraint) 此约束指关系的主...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,967
精华内容 55,586
关键字:

三大完整性约束