精华内容
下载资源
问答
  • 关系数据库——关系的完整性约束
    千次阅读
    2019-04-09 08:38:38

    引言

    关系模型中有三类完整性约束:实体完整性、参照完整性、用户自定义完整性

    其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为关系的两个不变性,应该由关系系统自动支持。

    用户定义的完整性约束条件是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。

    实体完整性

    若属性(指一个或者一组属性)A是基本关系R的主属性,则A不能取空值。

    规则说明:

    1. 实体完整性规则是针对基本关系而言的。
    2. 现实世界中的实体是可区分的,即他们具有某种唯一性标识。
    3. 相应地,关系模型中以主码作为唯一标识。
    4. 主码中的属性即主属性不能取空值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,与第二条相互矛盾,因此,这个规则称为实体完整性规则。

    参照完整性

    外码:设F是基本关系R的一个或者一组属性,但不是关系R的码,K(S)是基本关系S的主码。如果F与K(S)相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系或是目标关系。

    外码不一定要与相应的主码同名。

    例:

    学生(学号,姓名,性别,专业号,年龄)

    专业(专业号,专业名)

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

    用户自定义完整性

    任何关系型数据库系统都应该支持实体完整性和参照完整性。这是关系模型所要求的。

    除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的约束条件就是针对某一具体关系数据库的约束条件,它反映了某一具体应用所涉及的数据必须满足的语义要求。

    例如在学生关系中,要求学生不能没有姓名,学生课程成绩关系中要求成绩必须在0到100之间。

    更多相关内容
  • 数据库完整性约束基础语句,包含对某些属性的特定取值,定义默认对象,定义和绑定规则,创建级联。文档包含代码和截图,方便查看
  • 数据库完整性约束(基于MySQL)1 实体完整性1.1 主键(Primary Key)1.2 主键自增长2 域完整性2.1 非空2.2 唯一3 参照完整性4 用户定义完整性 1 实体完整性 实体完整性是指保证表中所有的行唯一。实体完整性要求表中...

    1 实体完整性

    实体完整性是指保证表中所有的行唯一。实体完整性要求表中的所有行都有一个唯一标识符。这个唯一标识符可能是一列,也可能是几列的组合,称为主键。也就是说,表中的主键在所有行上必须取唯一值

    强制实体完整性的方法有:索引、UNIQUE约束、PRIMARY KEY约束或IDENTITY属性。如:学生表中学号的取值必须唯一,它唯一标识了相应记录所代表的学生,学号重复是非法的。学生的姓名不能作为主键,因为完全可能存在两个学生同名同姓的情况。

    1.1 主键(Primary Key)

    主键(Primary Key):主键列的值不能为NULL,也不能重复。

    例如,创建表,定义列时指定主键

    CREATE TABLE stu ( 
      sid CHAR ( 6 ) PRIMARY KEY, 
      sname VARCHAR ( 20 ), 
      age INT, 
      gender VARCHAR ( 10 ) 
    );
    

    例如,创建表,定义列之后指定独立的主键

    CREATE TABLE stu (
    	sid CHAR ( 6 ),
    	sname VARCHAR ( 20 ),
    	age INT,
    	gender VARCHAR ( 10 ),
        PRIMARY KEY ( sid ) 
    );
    

    如果创建表时没有指定主键,可以在修改表时定义主键:

    ALTER TABLE stu ADD PRIMARY KEY ( sid );
    

    删除主键(只是删除主键约束,而不会删除主键列)语法:

    ALTER TABLE stu DROP PRIMARY KEY;
    

    1.2 主键自增长

    MySQL提供了主键自动增长的功能,这样用户就不用再为是否有主键重复而烦恼了。当主键设置为自动增长后,在没有给出主键值时,主键的值会自动生成,而且是最大主键值+1,也就不会出现重复主键的可能了。

    例如,在创建表时设置主键自增长(主键必须是整型才可以自增长):

    CREATE TABLE stu ( 
      sid INT PRIMARY KEY AUTO_INCREMENT, 
      sname VARCHAR ( 20 ), 
      age INT, 
      gender VARCHAR ( 10 ) 
    );
    

    在修改表时也可以设置主键自增长:

    ALTER TABLE stu MODIFY sid INT AUTO_INCREMENT;
    

    在修改表时删除主键自增长:

    ALTER TABLE stu MODIFY sid INT;
    

    2 域完整性

    域完整性是指一个列的输入有效性,是否允许为空值。

    强制域完整性的方法有:限制类型(通过设定列的数据类型)、格式(通过CHECK约束和规则)或可能值的范围(通过FOREIGN KEY约束、CHECK约束、DEFAULT定义、NOT NULL定义和规则)。如:学生的考试成绩必须在0~100之间,性别只能是“男”或“女”。

    2.1 非空

    指定非空约束的列不能没有值,也就是说在插入记录时,对添加了非空约束的列一定要给值;在修改记录时,不能把非空列的值设置为NULL。

    例如,指定非空约束(NOT NULL):

    CREATE TABLE stu ( z
      sid INT, 
      sname VARCHAR ( 10 ) NOT NULL, 
      age INT, 
      gender VARCHAR ( 10 ) 
    );
    

    当为sname字段指定为非空后,在向stu表中插入记录时,必须给sname字段指定值,否则会报错。

    2.2 唯一

    当为字段指定唯一约束后,那么字段的值必须是唯一的。这一点与主键相似!

    例如:给stu表的sname字段指定唯一约束(UNIQUE)

    CREATE TABLE tab_ab ( 
      sid INT, 
      sname VARCHAR ( 10 ) UNIQUE 
    );
    

    当两次插入相同的名字时,MySQL就会报错!

    3 参照完整性

    参照完整性是指保证主关键字(被引用表)和外部关键字(引用表)之间的参照关系。它涉及两个或两个以上表数据的一致性维护。外键值将引用表中包含此外键的记录和被引用表中主键与外键相匹配的记录关联起来。

    在输入、更改或删除记录时,参照完整性保持表之间已定义的关系,确保键值在所有表中一致。这样的一致性要求确保不会引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改。

    参照完整性是基于外键与主键之间的关系。例如学生学习课程的课程号必须是有效的课程号,score表(成绩表)的外键cno(课程号)将参考course表(课程表)中主键cno(课程号)以实现数据完整性。

    外键:主外键是构成表与表关联的唯一途径。外键是另一张表的主键。例如员工表与部门表之间就存在关联关系,其中员工表中的部门编号字段就是外键,是相对部门表的外键,但是部门编号是部门表的主键。外键就是用来约束这一列的值必须是另一张表的主键值。

    示例:创建t_user表,指定uid为主键列

    CREATE TABLE t_user ( 
      uid INT PRIMARY KEY AUTO_INCREMENT, 
      uname VARCHAR ( 20 ) UNIQUE NOT NULL 
    );
    

    创建t_section表,指定sid为主键列,u_id为相对t_user表的uid列的外键:

    CREATE TABLE t_section (
    	sid INT PRIMARY KEY AUTO_INCREMENT,
    	sname VARCHAR ( 30 ),
    	u_id INT,
    CONSTRAINT fk_t_user FOREIGN KEY ( u_id ) REFERENCES t_user ( uid ) 
    );
    

    或者可以在修改t_section表时,指定u_id为相对t_user表的uid列的外键:

    ALTER TABLE t_section ADD CONSTRAINT fk_t_user FOREIGN KEY ( u_id ) REFERENCES t_user ( uid );
    

    修改t_section表,删除u_id的外键约束:

    ALTER TABLE t_section DROP FOREIGN KEY fk_t_user;
    

    4 用户定义完整性

    用户定义完整性:是根据应用环境的要求和实际的需要,对某一具体应用所涉及的数据提出约束性条件。这一约束机制一般不应由应用程序提供,而应有由关系模型提供定义并检验,用户定义完整性主要包括字段有效性约束和记录有效性。

    展开全文
  • 数据库完整性约束

    千次阅读 2017-04-05 09:19:17
    介绍数据库完整性

    数据库完整性

        数据库完整性(Database Integrity)是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。数据库完整性约束可以通过DBMS或应用程序来实现,基于DBMS的完整性约束作为模式的一部分存入数据库中。通过DBMS实现的数据库完整性按照数据库设计步骤进行设计,而由应用软件实现的数据库完整性则纳入应用软件设计。


    原理

    数据库完整性对于数据库应用系统非常关键,其作用主要体现在以下几个方面:

    1.数据库完整性约束能够防止合法用户使用数据库时向数据库中添加不合语义的数据;
    2.利用基于DBMS的完整性控制机制来实现业务规则,易于定义,容易理解,而且可以降低应用程序的复杂性,提高应用程序的运行效率。同时,基于DBMS的完整性控制机制是集中管理的,因此比应用程序更容易实现数据库的完整性;
    3.合理的数据库完整性设计,能够同时兼顾数据库的完整性和系统的效能。比如装载大量数据时,只要在装载之前临时使基于DBMS的数据库完整性约束失效,此后再使其生效,就能保证既不影响数据装载的效率又能保证数据库的完整性;
    4.在应用软件的功能测试中,完善的数据库完整性有助于尽早发现应用软件的错误。
        数据库完整性约束可分为6类:列级静态约束、元组级静态约束、关系级静态约束、列级动态约束、元组级动态约束、关系级动态约束。动态约束通常由应用软件来实现。不同DBMS支持的数据库完整性基本相同。


    关系模型

        关系完整性的用于保证数据库中数据的正确性。系统在进行更新、插入或删除等操作时都要检查数据的完整性,核实其约束条件,即关系模型的完整性规则。在关系模型中有四类完整性约束:实体完整性、域完整性、参照完整性和用户定义的完整性,其中实体完整性和参照完整性约束条件,称为关系的两个不变性。


    完整性

    实体完整性
        关系数据库的完整性规则是数据库设计的重要内容。绝大部分关系型数据库管理系统RDBMS都可自动支持关系完整性规则,只要用户在定义(建立)表的结构时,注意选定主键、外键及其参照表,RDBMS可自动实现其完整性约束条件。
        (1)实体完整性(Entity Integrity)。实体完整性指表中行的完整性。主要用于保证操作的数据(记录)非空、唯一且不重复。即实体完整性要求每个关系(表)有且仅有一个主键,每一个主键值必须唯一,而且不允许为“空”(NULL)或重复。
        (2)实体完整性规则要求。若属性A是基本关系R的主属性,则属性A不能取空值,即主属性不可为空值。其中的空值(NULL)不是0,也不是空隔或空字符串,而是没有值。实际上,空值是指暂时“没有存放的值”、“不知道”或“无意义”的值。由于主键是实体数据(记录)的惟一标识,若主属性取空值,关系中就会存在不可标识(区分)的实体数据(记录),这与实体的定义矛盾,而对于非主属性可以取空值(NULL),因此,将此规则称为实体完整性规则。如学籍关系(表)中主属性“学号”(列)中不能有空值,否则无法操作调用学籍表中的数据(记录)。

    域完整性
        域完整性(Domain Integrity)是指数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。表中的CHECK、FOREIGN KEY 约束和DEFAULT、 NOT NULL定义都属于域完整性的范畴。

    参照完整性
        参照完整性(Referential Integrity)属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一,就会影响数据的完整性。如删除父表的某记录后,子表的相应记录未删除,致使这些记录称为孤立记录。对于更新、插入或删除表间数据的完整性,统称为参照完整性。通常,在客观现实中的实体之间存在一定联系,在关系模型中实体及实体间的联系都是以关系进行描述,因此,操作时就可能存在着关系与关系间的关联和引用。
        在关系数据库中,关系之间的联系是通过公共属性实现的。这个公共属性经常是一个表的主键,同时是另一个表的外键。参照完整性体现在两个方面:实现了表与表之间的联系,外键的取值必须是另一个表的主键的有效值,或是“空”值。
    参照完整性规则(Referential Integrity)要求:若属性组F是关系模式R1的主键,同时F也是关系模式R2的外键,则在R2的关系中,F的取值只允许两种可能:空值或等于R1关系中某个主键值。
        R1称为“被参照关系”模式,R2称为“参照关系”模式。
        注意:在实际应用中,外键不一定与对应的主键同名。外键常用下划曲线标出。

    用户定义完整性
        用户定义完整性(User-defined Integrity)是对数据表中字段属性的约束,用户定义完整性规则(User-defined integrity)也称域完整性规则。包括字段的值域、字段的类型和字段的有效规则(如小数位数)等约束,是由确定关系结构时所定义的字段的属性决定的。如,百分制成绩的取值范围在0~100之间等。


    设计阶段
        一个好的数据库完整性设计首先需要在需求分析阶段确定要通过数据库完整性约束实现的业务规则,然后在充分了解特定DBMS提供的完整性控制机制的基础上,依据整个系统的体系结构和性能要求,遵照数据库设计方法和应用软件设计方法,合理选择每个业务规则的实现方式;最后,认真测试,排除隐含的约束冲突和性能问题。基于DBMS的数据库完整性设计大体分为以下几个阶段:
    需求分析
        经过系统分析员、数据库分析员、用户的共同努力,确定系统模型中应该包含的对象,如人事及工资管理系统中的部门、员工、经理等,以及各种业务规则。
        在完成寻找业务规则的工作之后,确定要作为数据库完整性的业务规则,并对业务规则进行分类。其中作为数据库模式一部分的完整性设计按下面的过程进行。而由应用软件来实现的数据库完整性设计将按照软件工程的方法进行。
    概念设计
        概念结构设计阶段是将依据需求分析的结果转换成一个独立于具体DBMS的概念模型,即实体关系图(ERD)。在概念结构设计阶段就要开始数据库完整性设计的实质阶段,因为此阶段的实体关系将在逻辑结构设计阶段转化为实体完整性约束和参照完整性约束,到逻辑结构设计阶段将完成设计的主要工作。
    逻辑设计
        此阶段就是将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化,包括对关系模型的规范化。此时,依据DBMS提供的完整性约束机制,对尚未加入逻辑结构中的完整性约束列表,逐条选择合适的方式加以实现。
    在逻辑结构设计阶段结束时,作为数据库模式一部分的完整性设计也就基本完成了。每种业务规则都可能有好几种实现方式,应该选择对数据库性能影响最小的一种,有时需通过实际测试来决定。



    展开全文
  • 展开全部可分为三种类型:与表有关的约束e68a84e8a2ad3231313335323631343130323136353331333436316265、域(Domain)约束、断言(Assertion)。...包括约束(表约束+NOTNULL)和表约束(PRIMARYKEY、...

    展开全部

    可分为三种类型:与表有关的约束e68a84e8a2ad3231313335323631343130323136353331333436316265、域(Domain)约束、断言(Assertion)。

    1、与表有关的约束:是表中定义的一种约束。可在列定义时定义该约束,此时称为列约束,也可以在表定义时定义约束,此时称为表约束。包括列约束(表约束+NOTNULL)和表约束(PRIMARYKEY、foreignkey、check、UNIQUE)。

    2、域(Domain)约束:在域定义中被定义的一种约束,它与在特定域中定义的任何列都有关系。

    3、断言(Assertion):在断言定义时定义的一种约束,它可以与一个或多个表进行关联。不必与特定的列绑定,可以理解为能应用于多个表的check约束,因此必须在表定义之外独立创建断言。

    dd58fbe30085e365efd2581f6dc190f5.png

    扩展资料:

    完整性约束中包含四个完整性,即域完整性,实体完整性、参照完整性和用户定义完整性。

    1、域完整性为保证数据库字段取值的合理性。属性值应是域中的值,这是关系模式规定了的。除此之外,一个属性能否为NULL,这是由语义决定的,也是域完整性约束的主要内容。

    2、实体完整性,指关系的主关键字不能重复也不能取“空值"。一个关系对应现实世界中一个实体集。现实世界中的实体是可以相互区分、识别的,也即它们应具有某种惟一性标识。

    3、参照完整性,定义建立关系之间联系的主关键字与外部关键字引用的约束条件。关系数据库中通常都包含多个存在相互联系的关系,关系与关系之间的联系是通过公共属性来实现的。

    4、用户定义完整性,则是根据应用环境的要求和实际的需要,对某一具体应用所涉及的数据提出约束性条件。

    展开全文
  • 数据库关系模型的三类完整性约束

    万次阅读 2019-02-25 10:12:10
    关系模型中有三类完整性约束,分别是:实体完整性,参照完整性,用户定义完整性 实体完整性 定义:实体完整性是用于保证关系数据库中每个元组都是可区分的,唯一的。 它的意思就是说数据表中每一行都应该有办法...
  • 数据库的完整性的全名,关系数据库的参照完整性(Referential Integrity),一般是用在表示多个表之间关系时用的,而且经常使用。数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。数据...
  • 展开全部数据完整性约束指的是为了防止不符合规范的数据进入数据库,在用户对数据进行插入e69da5e6ba903231313335323631343130323136353331333431366333、...数据库完整性约束包含以下类型:1) 与表有关的约束:是...
  • 一、实体完整性(要求有唯一健) ...二、参照完整性(外键的参照)(引用完整性约束) 参照完整性要求关系中不允许引用不存在的实体。设定相应的更新删除插入规则来更新参考表。 例如表sutdent(有i...
  • 数据库中的数据完整性约束

    万次阅读 多人点赞 2018-06-14 18:43:33
    这篇文章讲的是数据库中的数据完整性约束,如有错误或不当之处,还望各位大神批评指正。 什么是数据完整性约束? 数据完整性:存储在数据库中的所有数据值均正确的状态。它是应防止数据库中存在不符合语义规定的...
  • 关系模型组成:关系数据库,关系操作集合,关系完整性约束。 关系的三类完整性约束: (1)实体完整性(必须) 若属性A是基本关系R的主属性,则A不能取空值。 检查和违约处理: 1)检查主码值是否唯一,如果不唯一...
  • 关系数据库的三类完整性约束

    千次阅读 2020-04-23 17:06:07
    关系模型中的三类完整性约束 1.实体完整性 2.参照完整性 3.用户定义的完整性 实体完整性 若属性A是基本关系R的主属性,则属性A不能取空值。 实体完整性规定基本关系的所有主属性,都不能取空值。 参照完整性 **外...
  • 数据库完整性约束

    千次阅读 2019-05-28 10:36:29
    key:用于保证row(或称作元组,一条数据)的唯一 super-key:能够区分唯一的row的集合 candidate key:super-key中最小集 primary key:candidate key中人工选择一个(一张表只能有一个或多个组成的联合主键) ...
  • 数据库完整性约束

    2021-04-29 03:04:11
    包括限制类型(数据类型),格式(通过检查约束和规则),数据库完整性约束一、数据库完整性1、定义关系完整性是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则。完整性包括:域完整性:域...
  • 关系数据库完整性

    千次阅读 2017-06-10 22:16:32
    数据库完整性约束用于保证数据的正确性。系统在更新、插入或删除等操作时都要检查数据的完整性,核实其约束条件,即关系模型的完整性规则。关系模型中有四类完整性约束:实体完整性、域完整性、参照完整性和用户定义...
  • 数据库 完整性约束

    千次阅读 2019-05-24 14:57:42
    数据完整性分为四类: 实体完整性:规定表的每一行在表中是惟一的实体。 域完整性:是指表中的列...用户定义的完整性:不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完...
  • 实体完整性约束完整性约束 参照完整性约束(外键约束(Foreign key)) 用户定义完整性约束 参照完整性 属于表间规则,用来保持表之间的关系,确保插入到表中的数据是有效的。 可以使用外键***foreign key*** 来...
  • 数据库完整性

    2022-03-18 21:36:15
    数据库完整性由各种完整性约束来保证。而完整性约束既可以通过DBMS来保障,也可以通过应用程序来实现。如果是基于DBMS,完整性约束将作为关系模式的一部分存入数据库,也就是说,直接在数据库进行定义。 二、完整性...
  • 文章目录一、Oracle提供了多种约束...二、Oracle完整性约束实例1、创建学生表的代码如下:2、创建课程表的代码如下:3、创建选课表的代码如下:4、为学生表添加主键约束:5、为课程表的课程名称设置唯一值约束。6、为学
  • 数据完整性 为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改以及删除等操作时,DBMS 自动按照一定的约束条件对数据进行监测,使不... 数据完整性主要包含:实体完整性、域完整性和参照完整性。 ...
  • 小明疫情期间在家上网课,可是老是走神,一会儿功夫老师就把《数据库完整性》讲完。这下完了,只能自己看书自学了,What?六大约束!!!这是什么啊?啥事约束啊?————少年别慌,看了这篇博客,保证你学会六大...
  • 什么是数据库关系完整性

    千次阅读 2020-12-31 09:05:55
    关系模型中有三类完整性约束:实体完整性规则,用户定义的完整性规则,和参照完整性规则。1. 实体完整性规则关系的主键可以表示关系中的每条记录,二关系的实体完整性要求关系中的记录不允许出现两条记录的主键值...
  • 数据库的integrity (完整性)数据库的integrity是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据; 数据库的security是保护数据库,防止其被恶意破坏和非法存取;这里解释一下什么是数据库...
  • SQL可以在CREATE TABLE语句中提供了完整性约束命名子句...-- 完整性约束条件包括NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK短语等。 -- 建立学生登记表Student,要求学号在90000-999999之间,姓名不能为空,
  • SQL Server 数据库 数据库完整性的含义 数据库完整性约束种类
  • 总结一下,数据库完整性约束几个列子 正文 一、静态完整性:Create Table CreateTable有三种功能:定义关系模式、定义完整性约束和定义物理存储特性 定义完整性约束条件: 列完整性 表完整性 Col_constr列约束 ...
  • 数据库之超详细的完整性约束

    千次阅读 2020-08-12 15:57:03
    数据库之超详细的完整性约束  数据库的完整性是指数据的正确性和相容性。数据库是否具备完整性关系数据库系统能否真 实地反映现实世界,因此维护数据库的完整性是非常重要的。  数据库的完整性可分为实体完整性...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,706
精华内容 33,082
关键字:

关系数据库的完整性约束包括