精华内容
下载资源
问答
  • 关系模型中有3类完整性约束:域完整性、实体完整性、参照完整性。 1.域(列)完整性 也就是用户定义的表字段的完整性 通常指数据的有效性,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系...

    关系模型中有3类完整性约束:域完整性、实体完整性、参照完整性。

    1.域(列)完整性  

    也就是用户定义的表字段的完整性 

    通常指数据的有效性,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的。限制数据类型,缺省值、规则、约束、是否可以为空,域完整性可以确保不会输入无效的值。比如某个属性的值必须在某个范围内,或者默认为0等,这些就是域(列)完整性,也就是用户定义的完整性。

    简单来说就是对表字段的约束。

    2.实体(行)完整性

    实体完整性是对关系中的记录唯一性,也就是主键的约束。准确地说,实体完整性是指关系中的主属性值不能为Null且不能有相同值。定义表中的所有行能唯一的标识,一般用主键、唯一索引 unique关键字,及identity属性比如说我们的身份证号码,可以唯一标识一个人。

    简单来说一个表中的唯一标识列不可为空。主关键字不能取空值或重复的值,如果是多个字段一起组成主键,则这多个字段均不能取空值。

    3.参照(引用)完整性 

    现实世界的实体之间往往存在某种联系,在关系模型中实体与实体见的联系都是用关系来描述的,这样就存在着关系之间的引用。参照完整性是对关系数据库中建立关联关系的数据表间数据参照引用的约束,也就是对外键的约束。

    准确地说,参照完整性是指关系中的外键必须是另一个关系的主键有效值,或者是NULL。 参照完整性维护表间数据的有效性、完整性,通常通过建立外键关联另一表的主键,还可以编写2表的触发器来维护参照完整性。

    简单来说就是主外键的关系。例如:

    这两个表之间存在着属性的引用,即“课程”表引用了“课程类别”表的主键“类型ID”。按照参照完整性规则,“课程”表中每行的“类型ID”属性只能取下面两类值:

    1)、空值。表示该课程还未确定类别。

    2)、非空值。此时取值必须和“课程类别”表中的“类型ID”值相同,表示这门课程归属该类别。

    参照完整性规则规定不能引用不存在的实体。

     

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

    万次阅读 多人点赞 2018-06-14 18:43:33
    这篇文章讲的是数据库中数据完整性约束,如错误或不当之处,还望各位大神批评指正。 什么是数据完整性约束? 数据完整性:存储在数据库中的所有数据值均正确的状态。它是应防止数据库中存在不符合语义规定的...

    这篇文章讲的是数据库中的数据完整性约束,如有错误或不当之处,还望各位大神批评指正。

    什么是数据完整性约束?

    数据完整性:存储在数据库中的所有数据值均正确的状态。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。

    数据完整性分为四类:
    1. 实体完整性(实体完整性是对关系中的记录唯一性,也就是主键的约束。准确地说,实体完整性是指关系中的主属性值不能为Null且不能有相同值。定义表中的所有行能唯一的标识,一般用主键,唯一索引 unique关键字,及identity属性比如说我们的身份证号码,可以唯一标识一个人.。)
    2. 域完整性(域完整性是对数据表中字段属性的约束,通常指数据的有效性,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的。限制数据类型,缺省值,规则,约束,是否可以为空,域完整性可以确保不会输入无效的值.。)
    3. 参照完整性(参照完整性是对关系数据库中建立关联关系的数据表间数据参照引用的约束,也就是对外键的约束。准确地说,参照完整性是指关系中的外键必须是另一个关系的主键有效值,或者是NULL。参考完整性维护表间数据的有效性,完整性,通常通过建立外部键联系另一表的主键实现,还可以用触发器来维护参考完整性)
    4. 用户定义的完整性。

    约束是表级的强制规定,有以下五中:not null,unique,primary key,foreign key,check 。

    创建约束

    非空约束(not null)

    not null为列级约束,只能作用在列上
    - 新建表std1,字段:id(非空),name(非空),score(可为空)

    create table std1 (
         id number(6) constraint std1_id_nn not null ,
         name varchar(200) not null,
         score number(10,2)
    )

    这事如果在操作时定义为非空的字段为空,则会报错:
    这里写图片描述

    唯一约束(unique)

    • 新建表std2,字段:id(唯一),name(非空),score(可为空)
    create table std2 (
         id number(6) constraint std2_id_uk unique ,
         name varchar(200) constraint std2_name_nn not null,
         score number(10,2) ,
         email varchar(20) ,
    --表级约束
         constraint std2_email_uk unique(email)
    )

    这时,若有唯一约束的字段出现了重复值,则会报错:
    这里写图片描述

    注:unique允许多个空值

    主键约束(primary key)

    • 新建表std3,字段:id(主键),name(非空),score(可为空)
    create table std3 (
         id number(6) constraint std3_id_pk primary key ,
         name varchar(200) constraint std3_name_nn not null,
         score number(10,2) ,
         email varchar(20) ,
    --表级约束
         constraint std3_email_uk unique(email)
    )
    
    --或者
    
    create table std3 (
         id number(6) ,
         name varchar(200) constraint std3_name_nn not null,
         score number(10,2) ,
         email varchar(20) ,
    --表级约束
         constraint std3_email_uk unique(email) ,
         constraint std3_id_pk primary key(id)
    )

    此时若往主键字段插入空值则:
    这里写图片描述
    若主键重复则:
    这里写图片描述

    注:一个表只能有一个主键,主键非空且唯一

    外键约束(foreign key)

    • 新建表std4,字段:id(主键),name(非空),score(可为空),friend_id(外键关联std3.id)
    create table std4 (
         id number(6) ,
         name varchar(200) constraint std4_name_nn not null,
         score number(10,2) ,
         email varchar(20) ,
         friend_id number(6) ,
    --表级约束
         constraint std4_email_uk unique(email) ,
         constraint std4_id_pk primary key(id) ,
         constraint std4_friend_id_fk foreign key(friend_id) references std3(id)
    )

    此时,若std4表中插入std3中不存在的id,则报错:
    这里写图片描述

    检查约束(check)

    • 新建表std7,字段:id(主键),name(非空),score(值范围为0-100)
    create table std7 (
         id number(6) ,
         name varchar(200) constraint std7_name_nn not null,
         score number(10,2) ,
         email varchar(20) ,
    --表级约束
         constraint std7_email_uk unique(email) ,
         constraint std7_id_pk primary key(id) ,
         constraint std7_score_ck check (score >= 0 and score <= 100)
    )

    此时如果添加数据不在check所约束的范围内则:
    这里写图片描述

    添加删除约束

    可以往已知表中添加新的约束,使用ALTER TABLE - ADD(MODIFY)语句可以添加约束,

    not null约束为列级约束必须使用modify

    • 往表std1的score字段加入非空约束
    alter table std1
    modify(score number(10,2) not null)
    • 删除表std1中id非空的约束
    alter table std1
    drop constraint std1_id_nn ;
    • 给表std1的score加入检查约束,要求范围为1-100
    alter table std1
    add(constraint std1_score_ck check(score>=0 and score<=100)) ;

    有效化无效化约束

    可以将已有表中的约束有效化或无效化(disabled)。

    • 将表std1中score字段的检查约束std1_score_ck 无效化
    alter table std1
    disable constraint std1_score_ck ;

    此时检查约束将不再有效,可以添加不在check范围的数据。

    • 将表std1中score字段的检查约束std1_score_ck 有效化
    alter table std1
    enable constraint std1_score_ck ;

    此时约束重新生效。

    级联删除与级联制空祥例

    1. 级联删除(ON DELETE CASCADE):当父表中的列被删除时,字表中相对应的列也被删除。
    2. 级联制空(ON DELETE SET NULL):当父表中的列被删除时,字表中相对应的列被制空。

    表结构及初始数据

    std3表结构:

    create table std3 (
         id number(6) ,
         name varchar(200) constraint std3_name_nn not null,
         score number(10,2) ,
         email varchar(20) ,
    --表级约束
         constraint std3_email_uk unique(email) ,
         constraint std3_id_pk primary key(id)
    )

    std3中数据如下:
    这里写图片描述

    std5表结构(外键级联删除):

    create table std5 (
         id number(6) ,
         name varchar(200) constraint std4_name_nn not null,
         score number(10,2) ,
         email varchar(20) ,
         friend_id number(6) ,
    --表级约束
         constraint std5_email_uk unique(email) ,
         constraint std5_id_pk primary key(id) ,
         constraint std5_friend_id_fk foreign key(friend_id) references std3(id) on delete cascade
    )

    std5中数据如下:
    这里写图片描述

    std6表结构(外键级联删除制空):

    create table std6 (
         id number(6) ,
         name varchar(200) constraint std6_name_nn not null,
         score number(10,2) ,
         email varchar(20) ,
         friend_id number(6) ,
    --表级约束
         constraint std6_email_uk unique(email) ,
         constraint std6_id_pk primary key(id) ,
         constraint std6_friend_id_fk foreign key(friend_id) references std3(id) on delete set null
         )

    std6中数据如下:
    这里写图片描述

    级联操作

    • 此时删除std3中‘300001’号数据以后:

    std5表:
    这里写图片描述

    std6表:
    这里写图片描述

    注:级联删除会删除相关联子表中的数据,而级联制空会将子表中相关联的数据制空而不会删除

    展开全文
  • 确保数据完整性 = 在创建表时给表添加约束 完整性的分类: 实体完整性: 域完整性: 引用完整性: 4.1 实体完整性 实体:即表的一行(一条记录)代表一个实体(entity) 实体完整性的作用:标识...

    作用:保证用户输入的数据保存到数据库中是正确的。

    确保数据的完整性 = 在创建表时给表中添加约束

    完整性的分类:

    • 实体完整性:

    • 域完整性:

    • 引用完整性:

    4.1 实体完整性

    实体:即表中的一行(一条记录)代表一个实体(entity)

    实体完整性的作用:标识每一行数据不重复。

    约束类型:

    主键约束(primary key)

    唯一约束(unique)

    自动增长列(auto_increment)

    4.1.1 主键约束(primary key)

    ​ 注:每个表中要有一个主键。

    ​ 特点:数据唯一,且不能为null

    示例:

    第一种添加方式:

    CREATE TABLE student(
    ​
    id int primary key,
    ​
    name varchar(50)
    ​
    );

    第二种添加方式:此种方式优势在于,可以创建联合主键

    CREATE TABLE student(
    ​
    id int,
    ​
    name varchar(50),
    ​
    primary key(id)
    ​
    );
    CREATE TABLE student(
    ​
    classid int,
    ​
    stuid int,
    ​
    name varchar(50),
    ​
    primary key(classid,stuid)
    ​
    );

    第三种添加方式:

    CREATE TABLE student(
    ​
    id int,
    ​
    name varchar(50)
    ​
    );
    ​
    ALTER TABLE student  ADD  PRIMARY KEY (id);

    4.1.2 唯一约束(unique)

    特点:数据不能重复。

    CREATE TABLE student(
    ​
    Id int primary key,
    ​
    Name varchar(50) unique
    ​
    );

    4.1.3 自动增长列(auto_increment)

    sqlserver数据库 (identity) oracle数据库( sequence)

    给主键添加自动增长的数值,列只能是整数类型

    CREATE TABLE student(
    ​
    Id int primary key auto_increment,
    ​
    Name varchar(50)
    ​
    );
    INSERT INTO student(name) values(‘tom’);

    4.2 域完整性

    域完整性的作用:限制此单元格的数据正确,不对照此列的其它单元格比较

    域代表当前单元格

    域完整性约束:数据类型 非空约束(not null) 默认值约束(default)

    check约束(mysql不支持)check(sex='男' or sex='女')

    4.2.1 数据类型:(数值类型、日期类型、字符串类型)

    4.2.2 非空约束:not null

    CREATE TABLE student(
    ​
    Id int pirmary key,
    ​
    Name varchar(50) not null,
    ​
    Sex varchar(10)
    ​
    );
    ​
    INSERT INTO student values(1,’tom’,null);

    4.2.3 默认值约束 default

    CREATE TABLE student(
    ​
    Id int pirmary key,
    ​
    Name varchar(50) not null,
    ​
    Sex varchar(10) default ‘男’
    ​
    );
    insert intostudent1 values(1,'tom','女');
    ​
    insert intostudent1 values(2,'jerry',default);

    4.3 引用完整性(参照完整性)

    外键约束:FOREIGN KEY 

    示例:

    CREATE TABLE student(
    ​
    sid int pirmary key,
    ​
    name varchar(50) not null,
    ​
    sex varchar(10) default ‘男’
    ​
    );
    create table score(
    ​
            id int,
    ​
            score int,
    ​
            sid int , -- 外键列的数据类型一定要与主键的类型一致
    ​
            CONSTRAINT fk_score_sid foreign key(sid) references student(id)
    ​
    );

    第二种添加外键方式。

    ALTER TABLEscore1 ADD CONSTRAINT fk_stu_score FOREIGN KEY(sid) REFERENCES stu(id);

     

    第二种解释,数据完整性分为以下3类。


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


    (2)实体完整性:是指保证表中所有的行唯一。实体完整性要求表中的所有行都有一个唯一标识符。这个唯一标识符可能是一列,也可能是几列的组合,称为主键。也就是说,表中的主键在所有行上必须取唯一值。强制实体完整性的方法有:索引、UNIQUE约束、PRIMARY KEY约束或IDENTITY属性。如:student表中sno(学号)的取值必须唯一,它唯一标识了相应记录所代表的学生,学号重复是非法的。学生的姓名不能作为主键,因为完全可能存在两个学生同名同姓的情况。


    (3)参照完整性:是指保证主关键字(被引用表)和外部关键字(引用表)之间的参照关系。它涉及两个或两个以上表数据的一致性维护。外键值将引用表中包含此外键的记录和被引用表中主键与外键相匹配的记录关联起来。在输入、更改或删除记录时,参照完整性保持表之间已定义的关系,确保键值在所有表中一致。这样的一致性要求确保不会引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改。参照完整性是基于外键与主键之间的关系。例如学生学习课程的课程号必须是有效的课程号,score表(成绩表)的外键cno(课程号)将参考course表(课程表)中主键cno(课程号)以实现数据完整性。
    域完整性、实体完整性及参照完整性分别在列、行、表上实施。数据完整性任何时候都可以实施,但对已有数据的表实施数据完整性时,系统要先检查表中的数据是否满足所实施的完整性,只有表中的数据满足了所实施的完整性,数据完整性才能实施成功。

     

    展开全文
  • 关系数据库完整性规则

    千次阅读 2010-12-29 01:01:00
    不管你用的是SQL Server 还是MySQL 它们都是关系数据库,那么既然是关系数据库就要遵守“关系数据库完整性规则” 关系数据库提供了三类完整性规则,实体完整性规则,参照完整性规则,用户自定义完成性...
       不管你用的是SQL Server 还是MySQL 它们都是关系型数据库,那么既然是关系型数据库就要遵守“关系型数据库的完整性规则”
       关系型数据库提供了三类完整性规则,实体完整性规则,参照完整性规则,用户自定义完成性规则;
    在这三类完成性规则中呢其中实体完整性规则和参照性完整性规则是关系模型必须满足的完整性的约束条件,称为关系完整性规则;
       一:实体完整性规则
       实体完整性规则是指关系的主属性(就是俗称主键的一些字段,主键的组成部分)不能为空值,我们知道现实生活中的每一个实体都具有唯一性,即使是两台一摸一样的计算机呢,都会有相应的生产日期来表示它们的唯一性,现实之中的实体是可以区分的,它们具有某种唯一性标识,相应的关系模型中以主键作为唯一性标识,主键中的属性即主属性不能是空值(“不知道”或“无意义”)的值,如果主属性为空值,就说明存在不可标识的实体,即存在不可区分的实体,这与现实的环境相矛盾,因此这个实体一定不是完整的实体;
       可能你看这段教条很枯燥,甚至有些不明白,这样理解就简单了:咱们设计表的时候不是每条记录前面都有个自己的ID吗,并且每个ID不一样,它其实就是为了区分每条记录的不一样,尽管你的其他字段的值都一样,只要ID不一样那么就是两条不一样的记录,就区分开了,就满足了实体完整性规则;
       二:参照完整性规则
       指如果关系的外键R1和关系R2的主键相符,那么外键的每个值必须在关系R2中主键的值中可以找到或者是空值;
        其实就是如果说在两个有关联的数据表中,一个数据表的外键(Foreigon Key)一定在另一个数据表中的主键(Primary Key)中可以找到;咱们先看图说话  大家先看一下图一和图二,一张是角色表(Role),一张是用户表(User),你们会发现在用户User表里的每一个字段Role_ID的值都可以在Role表中的Role_ID字段中找到对吧;在看第三张图也就是图三,图三的最后一条记录中Role_ID的值为“7”在图一的Role表里的Role_ID里是找不到的,所以说图三不符合参照完整性规则;
      
        (图一)
       
         (图二)
      
          (图三)
       三:用户自定义的完整性规则
       是指某一具体的实际数据库的约束条件,由应用环境所决定,反映某一具体应用所涉及的数据必须满足的要求(比如说一个人的年龄必须要大于零),根据现实生活中的一个实际情况用户定义的一个用户自定义完整性;
       比如你在设计表的时候有个年龄字段,那么这个字段里的值不能小于0吧,不能大于150吧,还没人能活到150岁对吧。
      
    展开全文
  • 对于数据库来说,关系数据库对于保证数据完整性和一致性方面表现是最好的! 数据的完整性 完整性分类 具体描述 如何保证 实体完整性 每个实体都是独一无二的 主键 / 唯一索引(唯一约束) 参照完整性...
  • 关系数据库完整性

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

    万次阅读 热门讨论 2015-06-06 19:58:05
    一:可以使用约束实现数据完整性 二:可以使用规则和默认值 三:在此之前先了解创建数据表的基本知识 建立一个名字为student的数据库 然后在student 的下边建立一个名字为student1的表 要求如下 属性...
  • 关系数据库——关系完整性约束

    千次阅读 2019-04-09 08:38:38
    介绍关系数据库完整性约束——实体完整性,参照完整性、用户自定义完整性
  • 关系数据库的特点: 它将每个具有相同属性的数据独立的存在一个表。对于任何一张表而言,用户而言可以新增、删除和修改表数据,而不会影响表的其他数据。 键码(Key):标识行的一列或多列 主关键字...
  • 文章目录关系数据库关系操作基本关系操作关系数据库语言的分类关系模型的完整性实体完整性(Entity Integrity)参照完整性(Referential Integrity)用户定义完整性(User-defined Integrity)E-R图向关系模型的转换...
  • 数据库中的三种完整性

    万次阅读 2019-06-24 15:54:15
    完整性是对数据字段属性的约束,通常指数据的有效性,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的。限制数据类型,缺省值,规则,约束,是否可以为空,域...
  • 关系数据库关系完整性

    千次阅读 2014-11-14 22:57:39
    2、关系模型中有三类完整性约束:实体完整性、参照完整性、用户定义的完整性。其中实体完整性和参照完整性关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。用户定义的完整...
  • 数据完整性是指数据库中存储的数据是意义的或正确的,和现实世界相符。关系模型三类完整性约束: – 实体完整性(Entity Integrity) – 参照完整性(Referential Integrity) – 用户定义的完整性(User-...
  • 数据库关系模型的三类完整性约束

    千次阅读 2019-02-25 10:12:10
    关系模型中有三类完整性约束,分别是:实体完整性,参照完整性,用户定义完整性 实体完整性 定义:实体完整性是用于保证关系数据库中每个元组都是可区分的,唯一的。 它的意思就是说数据每一行都应该办法...
  •  域完整性是对数据字段属性的约束,通常指数据的有效性,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的。限制数据类型,缺省值,规则,约束,是否可以为空,域...
  • 关系数据库的三大完整性

    千次阅读 2017-10-30 21:39:57
    其中前两个是关系模型必须满足的完整性约束条件,由系统自动支持。用户定义的完整性体现了具体应用领域的要求。二,主食 实体完整性:主码(或主键)非空且唯一。 参照完整性:外码(或外键)null或者在主键)【注...
  • 数据库 - 数据库完整性

    千次阅读 2015-05-06 09:58:40
    数据库完整性数据的正确性和相容性数据完整性和安全性是两个不同概念 数据完整性 防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据 防范对象:不合语义的、不正确的数据 数据的安全...
  • 关系数据库完整性(理解)

    千次阅读 2020-06-25 11:22:29
    关系数据库完整性实体完整性参照完整性用户定义完整性 数据库完整性包括: 数据的正确性(输入正确,存储正确) 数据的相容性 (符合要求、规则) 举个简单的例子: 学生的学号必须唯一, 性别只能是男或女等等...
  • 数据库完整性

    千次阅读 2014-12-05 17:06:30
    关系数据库中有三类完整性约束:实体完整性,参照完整性和用户自定义完整性,其中完整性和参照完整性数据库必须满足的完整性约束 条件,而用户自定义完整性可以根据实际情况而定 实体完整
  • 数据库完整性5.1 实体完整性5.1.1 实体完整性定义5.1.2 实体完整性检查和违约处理5.2 参照完整性5.2.1 参照完整性定义5.2.2 参照完整性检查和违约处理小结5.3 用户定义的完整性5.3.1 属性上的约束条件不允许取空值列...
  • 数据库中重要或敏感的数据被泄露。 安全环境的脆弱数据安全控制: 用户身份鉴别 静态口令鉴别 动态口令鉴别 生物特征鉴别 智能卡鉴别 多层存取控制 自主存取控制方法 GRANT 授权 REVOKE 收....
  • 数据库知识整理 - 数据库完整性

    千次阅读 多人点赞 2018-11-23 12:28:29
    主要内容 实体完整性 小拓展:索引的应用 参照完整性 用户定义的完整性 1. 属性上的约束条件 ...数据完整性是为了防止数据库中存在不符合语义的数据数据的安全性是保护数据库免受恶意破坏和非法存取。 ...
  • 关系完整性是对关系的某种约束,当关系随着时间变化(增删改等操作改变数据库关系表)时应该满足一定的约束条件,通常这些约束条件都依赖于客观事实 关系完整性包含三个方面,分别是 实体完整性 参照完整性 用户...
  • 数据完整性。使用T-SQL语句完成以下内容。 1)将数据库stu的表course的cno字段定义为主键,约束名称为cno_pk; USE student ALTER TABLE XSKC.course ADD CONSTRAINT cno_pk PRIMARY KEY(cno) 2)为表course的...
  • 数据库完整性是指对数据库的一致性和准确性强制数据完整性可靠性保证
  • 第二节 数据完整性规则 数据完整性是指数据的正确性和有效性。关系的完整性规则是确保关系的值必须满足的约束条件。关系模型3种完整性约束,即实体完整性,参照完整性和用户定义完整性。其中实体完整性和参照完整...
  • 数据库完整性数据的正确性(是指数据是符合现实世界语义,反映了当前实际状况的)、数据的相容性(是指数据库同一对象在不同关系数据是符合逻辑的) 数据完整性 : 防止数据库中存在不符合语义的数据,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 187,098
精华内容 74,839
关键字:

关系数据库中有哪些数据完整性规则