精华内容
下载资源
问答
  • Oracle实体完整性约束

    2021-04-05 22:07:33
    我的Oracle数据库学习笔记 Day 3 实体完整性约束 文章目录我的Oracle数据库学习笔记一 、数据完整性约束 的分类二 、如何实现完整性约束1. 主键约束 :2....实现实体完整性约束 实体完整性约束 :保证

    我的Oracle数据库学习笔记

    Day 4 实体完整性约束



    在这里插入图片描述

    为什么添加数据完整性约束 : 保证数据的安全性,准确性。

    一 、数据完整性约束 的分类

    1. 实体完整性约束
    2. 域完整性约束
    3. 引用完整性约束
    4. 自定义完整性约束

    二 、如何实现完整性约束

    实现实体完整性约束
    实体完整性约束 :保证表中实体数据的唯一性
    实现: 主键约束 ,唯一约束

    1. 主键约束 :

    给表中添加主键 ,主键能够唯一确定每个实体信息的一个列或多个列的组合 (组合主
    键)
    主键列的特点 :唯一性,非空性
    表中仅可以包含一个主键。
    主键的选择的要求:最少性,稳定性

    2. 如何给表中设置主键?

    1)在创建表中设置 :

    字段名 数据类型 primary key.
    

    2)给现有表中添加主键约束:

     alter table 表名
     add constraint 约束名 primary key( 列名); 
     约束名 :pk_表名_列名 或 列名_pk
    

    注意:如果添加约束的表中已有数据,则现有的数据也要满足约束要求,否则约束添加失败
    例:给学生表中的学号列添加主键约束

    alter table studentInfo
    add constraint pk_studentId primary key(studentid);
    

    唯一约束

    1 唯一约束 : 唯一的,可空

    表中可以包含多个唯一约束的列

    2 给表中添加唯一约束

    1) 在创建表时给列添加唯一约束

    字段名 数据类型 unique;
    
    1. 对现有表添加唯一约束
     alter table 表名
     add constraint 约束名 unique(列名);
     约束名 :uk_列名
    

    注意: 如果添加约束的表中已有数据,则现有的数据也要满足约束要求,否则约束添加失败

    主键约束与唯一约束的区别

    1. 主键约束:唯一,非空 ;唯一约束:唯一 ,可空
    2. 一张表中仅可以包含一个主键, 可以包含多个唯一约束的列

    例:给学生表中的电话号码添加唯一约束

    alter table studentInfo
    add constraint uk_phone unique(phone);
    
    展开全文
  • 关系的完整性-实体完整性

    千次阅读 2019-06-29 09:19:32
    关系模型中有三类完整性的约束:实体完整性,参照完整性,用户定义的完整性。 1.实体完整性 实体完整性定义: 若属性A(一个或一组属性)是基本关系R的主属性,则A不能取空值。 所谓空值就是“不知道”或“不...

    关系模型的完整性规则是对关系的某种约束条件。

    顾名思义,关系的完整性规则是对关系的约束,这些约束条件实际上是现实世界的要求。

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

    1.实体完整性

        实体完整性定义:

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

    所谓空值就是“不知道”或“不存在”或“无意义”的值。

                这是书本上给的定义,并给出了完整性规则说明:

                1.1实体完整性规则是针对基本关系而言的。

    我自己的理解:关系可以理解为实体或关系,具体化就是一张表,实体可以为一张表,关系可以为一张表。

    所以实体完整性可以理解为是仅对一张表的完整性约束。

                 1.2现实世界的实体是可以区分的,他们具有某种唯一性标识。

    我自己的理解:毋庸置疑,现实世界实体是可以区分的,很多老师上课的时候喜欢拿姓名为例,我觉得一定程度上迷惑了初学者,既然实体是可以区分的,他们具有某种唯一性标识,比如指纹,中国大陆的身份证号,如果你是大学生的话,学号就是你们的唯一性标识。1.2强调的是现实中的实体他们具有唯一性标识,但是这种标识不唯一,例如指纹,中国大陆身份证号码。

                1.3相应地,关系模型中以主码作为唯一性标识。

                1.4主码中的属性不能取空值。如果主属性取空值,就说明存在某个不可比标识的实体,与1.2相违背,因此这个规则称为实体完整性。

               我自己的理解: 主码可以是多个主属性的组合,每个主属性不能单独作为主码。在学习参照完整性之前一定要理解实体完整性规则,实体完整性规则举例:一个学生表,学号(Sno)可以唯一标识学生,课程表(Cno)可以唯一标识课程。

                

     

    展开全文
  • 一、 数据完整性 数据完整性是为了保证插入到数据库中的数据是正确的,防止用户可能的错误输入。...实体完整性通过表的主键来实现。 主键关键字: primary key 主键特点: 不能为null,并且唯一。 ...

    数据完整性的概念

    数据完整性是为了保证插入到数据库中的数据是正确的,防止用户可能的错误输入。

    数据完整性分为实体完整性域完整性参照完整性

    实体(行)完整性

    实体完整性中的实体指的是表中的行,因为一行记录对应一个实体。

    实体完整性规定表的一行在表中是唯一的实体,不能出现重复。

    实体完整性通过表的主键来实现。

    主键关键字: primary key

    主键特点: 不能为null,并且唯一。

    主键分类:

    ​ 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐)

    ​ 业务主键:例如username,参与实际的业务逻辑。

    主键使用方式:

    ​ 方式一:

    Create table t1(
    
    ​	  id int primary key,
    
    ​	  name varchar(100)
    
    );
    

    在这里插入图片描述
    插入数据:

    insert into t1 values(1,’zs’);
    
    insert into t1 values(2,’ls’);
    

    在这里插入图片描述

    主键自动增长:

    关键字: auto_increment
    

    下面是主键自动增长的例子

    ​		create table t4(
    
    ​			id int primary key auto_increment,
    
    ​			name varchar(100)
    
    );
    

    在这里插入图片描述

    插入数据:

    insert into t4(name) values(‘zs’);
    
    insert into t4 values(null,’ls’);
    

    域(列)完整性

    域(列)完整性指数据库表的列(即字段)必须符合某种特定的数据类型或约束

    非空约束:not null

    唯一约束: unique

    create table t5(
    
    ​			username varchar(100) not   null  unique,
    
    ​			gender varchar(100) not   null,
    
    ​			phonenum varchar(100)  unique
    
    ​	);
    

    在这里插入图片描述

    1. username 唯一 ,如果有重复就会出现错误:
    
     [Err] 1062 - Duplicate entry 'ls' for key 'username' 
    
    1. 如果第二次插入代码insert into student3(username,gender,phone) VALUES('ls','男','112');

      就会出现错误:[Err] 1062 -关键字“用户名”的重复条目“ls”

    2. gender 不能为 NULL,如果不输入就会出现错误:

    Field 'gender' doesn't have a default value  
    
    1. 执行下面这条代码insert into student3(username,gender,phone) values('ll','男','113');
      就会出现错误Duplicate entry 'll' for key 'username'
    • 关键字“用户名”的重复条目“ll”

    在这里插入图片描述
    在这里插入图片描述

    参照完整性**

    参照完整性指的就是多表之间的设计,主要使用外键约束。

    多表设计: 一对多多对多一对一设计

    一对多

    下面举例说明:
    1.客户和订单的关系就是一对多,一个客户可以有多张订单,一张订单属于一个客户;
    在这里插入图片描述
    ​ 创建客户表:

    create table  customers(
    
    ​	id int,
    
    ​	name varchar(100),
    
    ​	address varchar(255),
    
    ​	primary  key(id)
    );
    
    

    创建订单表:

    create table orders(
    
    ​	order_num int primary key,
    
    ​	price float(8,2),
    
    ​	status int,
    
    ​	customer_id int,
    
    constainct  customer_id_fk foreign  key(customer_id) references customers(id)
    
    );
    
    

    外键约束: constraint customer_id_fk foreign key(customer_id) references customers(id);

    注: constraint: 约束的意思。foreign key: 外键。references: 参照

    创建一个名叫customer_id_fk的外键约束,其中外键指的是customer_id,并且参照的是 customers表中的id列。

    图形界面操作的过程是:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    子表的删除、更新策略

    子表的删除更新策略一共有四种:

    1. CASCADE 级联策略。

    使用此种策略时主表的记录被删除或者主键字段被修改时会同步删除或修改子表

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2. NO ACTION 无动作策略。

    使用此种策略时要删除主表必须先删除子表,要删除主表的记录必须先删除子表关联的记录,不能更新主表主键字段的值。
    在这里插入图片描述

    3. RSTRICT 主表约束策略。

    此种策略对主表的约束跟 NO ACTION 一样

    4. SET NO 置空策略。

    使用此种策略时,如果主表被删除或者主键被更改,则将子表中的外键设置为NULL。需要注意的是,如果子表的外键是主键或者是设置为NOT NULL的,则主表的删除和主键的更改跟 NO ACTION 一样。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    多对多

    老师和学生是多对多关系, 一个老师对应多个学生,一个学生被多个老师教

    在这里插入图片描述
    注意:

    1. 需要创建第三张表,并且公共的字段,可以放入到第三张表格中。
    2. 设置外键对应其他表格中的主键

    创建老师表:

    ​	Create table teachers(
    
    ​		id int,
    
    ​		name varchar(100)
    
    ​		salary float(8,2),
    
    ​		primary key(id)
    
    );
    

    创建学生表:

    Create table students(
    
    ​	id int,
    
    ​	name varchar(100),
    
    ​	grade varchar(100),
    
    ​	primary key(id)
    
    );	
    

    第三张表格:

    Create table teacher_student(
    
    ​	t_id int,
    
    ​	s_id int,
    
    ​	primary key(t_id,s_id)
    
    CONSTRAINT teacher_id_fk FOREIGN KEY(t_id) REFERENCES teachers(id),
    
    CONSTRAINT student_id_fk FOREIGN KEY(s_id) REFERENCES students(id)
    
    );
    
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    一对一

    按照外键关联

    1.在IdCard表中的外键添加唯一约束

    在这里插入图片描述

    按照主键关联,对主键添加外键约束
    在这里插入图片描述

    实际开发中直接设计一张表格就可以了。

    注意:

    1. 一般情况,设计一张表格即可;
    2. 设计成两张表格:
      第二张表格中创建一个字段为外键(设置成唯一 unique)对应 第一张表格中的主键;

    直接使用第二张表格中的主键为外键,对应第一张表格中的主键。

    展开全文
  • 实体完整性: 域完整性: 引用完整性: 4.1 实体完整性 实体:即表中的一行(一条记录)代表一个实体(entity) 实体完整性的作用:标识每一行数据不重复。 约束类型: 主键约束(primary key) 唯一...

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

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

    完整性的分类:

    • 实体完整性:

    • 域完整性:

    • 引用完整性:

    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(课程号)以实现数据完整性。
    域完整性、实体完整性及参照完整性分别在列、行、表上实施。数据完整性任何时候都可以实施,但对已有数据的表实施数据完整性时,系统要先检查表中的数据是否满足所实施的完整性,只有表中的数据满足了所实施的完整性,数据完整性才能实施成功。

     

    展开全文
  • 数据完整性: 为保证插入到数据库中的数据是正确的,防止用户输入错误的数据 分为实体完整性、 域完整性 、参照完整性 (下节再说) (1)实体完整性: 实体指的是表中的一行,一行记录对应一个实体 ,通过主键实现 ...
  • 实体完整性

    千次阅读 2020-03-31 22:38:40
    一、mysql数据完整性约束 数据完整性约束的概念: 在表中定义完整性约束是作为数据定义的一部分,定义了完整性约束,数据库会随时检测处于更新状态的数据库内容是否符合相关的完整性约束,保证数据的正确性与一致性...
  • 什么是数据库完整性 数据库完整性和安全性的差别 ​​​​​​​ 数据库完整性提供了哪些机制?(DBMS) 实体完整性定义 实体完整性违约处理 ​​​​​​​ ...
  • 完整性约束:实体完整性:primary key 参照完整性:foreign key() references 表名(列名) on (增删改)(no action,cascade,set null) 用户自定义完整性:check() 完整性约束命名子句:constraint 名字 约束字句 ...
  • 一、数据完整性 数据完整性是为了保证插入到数据库中的数据是正确的,防止用户可能的错误输入。...实体完整性通过表的主键来实现。 主键关键字: primary key 主键特点: 不能为null,并且唯一。 主...
  • MySQL的完整性约束之:实体完整性(主键的添加)
  • 实体完整性通过PRIMARY KEY约束、UNIQUE约束等实现。  通过PRIMARY KEY约束定义主键,一个表只能有一个PRIMARY KEY约束,且PRIMARY KEY约束不能取空值。  通过UNIQUE约束定义唯一性约束,为了保证一个表非主键列不...
  • 关系的完整性是关系型数据模型结构中的另一组成部分,它分为实体完整性、参照完整性和用户定义完整性三类。在关系数据库中一个关系对应现实世界的一个实体集,关系中的每一个元组对应一个实体。在关系中用主关键字来...
  • 数据库完整性5.1 实体完整性5.1.1 实体完整性定义5.1.2 实体完整性检查和违约处理5.2 参照完整性5.2.1 参照完整性定义5.2.2 参照完整性检查和违约处理小结5.3 用户定义的完整性5.3.1 属性上的约束条件不允许取空值列...
  • SQL语句(七)实体完整性

    千次阅读 2018-07-20 12:59:55
    1.实体完整性  简单的说,实体完整性就是数据库表的主码唯一且不为空。主码可以是关系的一个属性(即数据库表的一列),也可以是关系的属性组(即表格的多个列),主码可以唯一的标识元组(即数据库表的一行)。 ...
  • 我们在学习数据库的过程中,经常会听到两个概念:数据冗余和数据完整性。数据冗余是指数据库中存在一些重复的数据,数据完整性是指数据库中的数据能够正确反应实际情况,我们说,为了性能着想,数据库中允许有一些...
  • *3、完成性分为:*1、实体完整性2、域完整性3、引用完整性 实体完整性 1、解释:表中的一个(一条记录)代表一个实体(entity) 2、作用:标识每一行数据不重复。行级约束。 3、约束类型:1、主键约束(primary key...
  • 数据库完整性:数据的正确性(是指数据是符合现实世界语义,反映了当前实际状况的)、数据的相容性(是指数据库同一对象在不同关系表中的数据是符合逻辑的) 数据的完整性 : 防止数据库中存在不符合语义的数据,...
  • 1)实体完整性 每一个表都有惟一的标识符,并且每一个表的主键不能为空或者重复。(身份证) 2)参照完整性 实现了表与表之间的联系,外键的取值必须是另一个表的有效值,或者是空值。 两个表:student...
  • 实体完整性约束:关系的主码中的属性值不能为空值 参照完整性约束:如果关系R2的外部码Fk与关系R1的主码Pk相对应,则R2中的每一个元组的Fk值或者等于R1中某个元组的Pk值,或者为空值;意义:如果关系R2的某个...
  • 一、 实验目的 ...(1)分别定义ScoreDB数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束; CREATE TRIGGER student_update ON student FOR UPDATE AS UPDATE score SET studentNo
  • 数据库——怎样实现数据完整性

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

    千次阅读 2018-11-22 21:54:49
    通过本次实验使学生掌握如何实现SQL的数据完整性。 2.实验内容 约束的创建 3.实验环境 Windows SQL Server 4.实验步骤及结果 创建一个数据库,文件名为“教学” 打开“教学”数据库 Student 表 S# Sname ...
  • 关系的完整性主要包括域完整性、实体完整性和参照完整性三种。 1.域(列)完整性   域完整性是对数据表中字段属性的约束,通常指数据的有效性,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定...
  • 数据库5之完整性约束的实现

    千次阅读 2018-06-25 13:09:29
    实体完整性约束2.域完整性约束3.那么怎么实现完整性约束呢?1.完整性规则的定义:通过SQL,也可以SSMS交互式创建2.(运行时)进行完整性规则的检查一、实体完整性约束1.主码(primary key)约束-->可以定义为...
  • 关系数据库完整性

    千次阅读 2017-06-10 22:16:32
    关系模型中有四类完整性约束:实体完整性、域完整性、参照完整性和用户定义完整性,其中实体完整性和参照完整性约束条件,成为关系的两个不变性。 1.实体完整性 实体完整性指表中行的完整性。主要用于保证操作的...
  • MySQL完整性约束

    千次阅读 2019-09-12 11:38:49
    数据完整性约束是在表和字段上强制执行的数据检验规则,为了防止不规范的数据进入...按照约束的不同类型可以分为实体完整性、域完整性、引用完整性。 实体完整性 用来标识表中的每一条记录,一条记录代表一个实体...
  • 数据库完整性

    千次阅读 2014-12-05 17:06:30
    在关系数据库中有三类完整性约束:实体完整性,参照完整性和用户自定义完整性,其中完整性和参照完整性是数据库必须满足的完整性约束 条件,而用户自定义完整性可以根据实际情况而定 实体完整
  • 定义完整性约束

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

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 155,451
精华内容 62,180
关键字:

怎么实现实体完整性