精华内容
下载资源
问答
  • 参照完整性

    千次阅读 2019-04-10 20:52:17
    参照完整性,指多表之间的设计,主要使用外键约束。 – 多表设计有:一对多,多对多,一对一。 – 1、一对多 – 客户和订单的,一个客户可以有多张订单,一张订单属于一个客户。 CREATE TABLE customers( id int,...

    – 参照完整性,指多表之间的设计,主要使用外键约束。
    – 多表设计有:一对多,多对多,一对一。

    – 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,
    CONSTRAINT fk FOREIGN KEY(customer_id) REFERENCES customers(id)
    );
    – 外键一般放到数据量大的表中,以数据量小的为参靠
    – CONSTRAINT 约束
    – FOREIGN KEY 外键
    – REFERENCES 以什么为参考
    – 上面,创建一个外键约束,名字叫fk,参照的是customers表中的id。

    在这里插入图片描述
    子表的删除更新策略一共有4种:
    1.1. CASCADE 级联策略。
    主表的修改会被同步到子表中。
    1.2. NO ACTION 无动作策略。
    要删改主表,必须要先删改子表对应数据。
    在这里插入图片描述

    1.3 RSTRICT 主表约束策略。
    此策略,对主表的约束跟NO ACTION一样。即删、更新主表前的主键,必须要先删、更新子表中对应的。
    1.4 SET NO 置空策略。
    使用此策略时,当主表主键删改,则子表中的外键 设置为NULL。
    但如果子表的外键是主键,或者子表外键设置NOT NULL,则此时就相当于NO ACTION策略。
    在这里插入图片描述

    1. 多对多
      老师和学生,多对多关系。一个老师可以对应多个学生,一个学生可以对应多个老师。
      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 tch_stu(
      t_id INT,
      s_id INT,
      PRIMARY KEY(t_id,s_id),
      CONSTRAINT tch_fk FOREIGN KEY(t_id) REFERENCES teachers(id),
      CONSTRAINT stu_fk FOREIGN KEY(s_id) REFERENCES students(id)
      );

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

    在这里插入图片描述

    1. 一对一
      在开发中,一对一,设计到一张表中。
    展开全文
  • 数据完整性 要想了解这三类完整性约束首先要了解什么是数据完整性。数据完整性是指数据库中存储的数据是有意义的或正确的,和现实世界相符。...实体完整性和参照完整性是关系模型必须满足的完整性约束...

    数据完整性

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

    实体完整性

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

    参照完整性

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

    用户定义完整性

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

    展开全文
  • 关系的完整性-参照完整性

    千次阅读 2019-06-29 10:30:44
    (首先理解弄透实体完整性,实体完整性规则是最好理解的,再来理解参照完整性就不难了) 2.参照完整性 现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的,这样就自然...

    (首先理解弄透实体完整性,实体完整性规则是最好理解的,再来理解参照完整性就不难了)

    2.参照完整性

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

       定义:设F是基本关系的一个或一组属性,但不是关系R的码(如果某张表多个属性作为主码,那么这里的主码不能理解为单个主属性,这也是码和主属性的区别),Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。关系和R和S不一定是不同的关系。

       2.1 一对多关系的理解

    学生实体和专业实体用下面关系表示:

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

                  (Sno,Sname,Ssex,Smajor,Sage)

         专业 (专业号,专业名)

                   (Major,Mname)

    (黑体加下划线的属性为主码)

    1. 两个关系之间存在着属性的引用,及学生关系引用了专业关系的主码“专业号”。显然这个“专业号”必须是确实存在的专业号,打个比方,学校现在只开了计算机,政治,数学,
    专业
    专业号 专业名
    001 计算机
    002 政治
    003 数学

       

     

     

     

     

            我总不可能添加一个学生是小偷专业的吧!!!所以这也是为什么参照完整性规则是对多个关系(关系可以理解为实体或关系,实体或关系可以理解为一张表,也就是多张表,不懂可以翻阅上篇博客)的约束 ,所以现在我每在学生表添加一个学生都要参照专业表。

           回到定义,设F是基本关系的一个或一组属性,(这里的F可以指学生表专业号),但不是关系R(这里指学生表)的码,Ks(专业表专业号)是基本关系S(专业表)的主码,如果F(学生表中的专业号)与Ks(专业表专业号)相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系。关系R和S不一定是不同关系(这句话可以忽略,影响现阶段的理解)。

          有了上面的定义与对照的关系表示可以弄懂

         学生表中红字专业号为外码,基本关系R(学生表)为参照关系,基本关系S为被参照关系。

        所以当你设置学生表中的专业号为外码  (前提是已经创建专业表ZMajor,实体完整性不用我多说吧,顺序不能弄反)

         CREATE TABLE Student

    (  Sno CHAR(9),

       Sname CHAR(4),

       Ssex  CHAR(2),

       Smajor  CHAR(9),

       Sage  SMALLINT,

    PRIMARY KEY(Sno),/*这里定义了实体完整性,Sno不能取空值,参照上一篇博客*/

    FOREIGN KEY(Smajor)  REFERENCES ZMajor(Major)/*定义了参照完整性,学生表专业号引用专业表专业号*/

    ON DELETE CASCADE   /*当删除ZMajor表中的某个专业的时候,比如学校取消了某个专业,级联删除这个专业的所有学生

                                                当然,如果你正在学计算机,学校如果取消计算机专业,你的信息(学生表)也会进行级联删除

                                                 所以一般学校等你们毕业了,计算机专业不招人了也没有人了,学校再来取消这个专业,所以这个                                               级联删除不是很常见。毕竟是贴近现实世界,大学取消某个专业*/

    ON UPDATE CASCADE /*理解了上面的注释话,这个就好理解了,当更新ZMajor表中某个专业信息,比如你们校长疯了,计算机专 业全部取搬砖专业,所以你们所有计算机专业的学生专业号001-计算机,统一是001-搬砖,其实学生表中001并没有改变,但是当查询到你的时候,比如连接查询,嘿嘿,那你就是搬砖专业*/

     

      

    )

    级联操作只是参照完整性被破坏时采取策略的一种,默认策略为NO ACTION(拒绝执行),有了上面的理解基础,不难理解当INSERT插入学生表中数据,你加了一个不存在的专业号,这就就是为上面数据库就会拒绝执行。查询的话不改变数据库中的原则。参照完整性被规则破坏一般是被参照表中(例子中的专业表)的内容被修改,破坏时的操作均写在参照表的定义中。

    以上部分时一对多的关系,如果有需要的话私我,我可以继续更新多对多参照完整性。

     

    展开全文
  • 数据完整性分为实体完整性、域完整性、参照完整性。 2.1实体(行)完整性 (实体完整性中的实体指的是表中的行,因为一行记录对应一个实体) 实体完整性规定表的一行在表中是唯一的实体,不能出现重复。 实体完整性...

    数据完整性的概念

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

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

    实体(行)完整性

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

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

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

    主键关键字: 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)对应 第一张表格中的主键;

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

    展开全文
  • 参照完整性定义 参照完整性检查和违约处理
  • SQL语句(八)参照完整性

    万次阅读 多人点赞 2018-07-20 13:07:06
    1.参照完整性 参照完整性主要是定义外码,将一个关系的主码放在另一个关系中,作为该关系的属性,就称其为外码。外码的取值有两种情况,一种为空,另外一种就是被参照表的主码的域。 2.实例 1.创建表时定义参照...
  • 参照完整性以及实例

    千次阅读 2020-09-07 15:12:58
    参照完整性 参照完整性是对外键取值有效性得限制,以确保数据在另一个参照表得取值范围内。参照完整性要求外键得取值只能取参照表中得有效值或空值。如果在参考表中某一记录得主键被依赖表中得外部键参考,那么这一...
  • 数据库完整性5.1 实体完整性5.1.1 实体完整性定义5.1.2 实体完整性检查和违约处理5.2 参照完整性5.2.1 参照完整性定义5.2.2 参照完整性检查和违约处理小结5.3 用户定义的完整性5.3.1 属性上的约束条件不允许取空值列...
  • 数据完整性分为实体完整性、域完整性、参照完整性。 2.1实体(行)完整性 (实体完整性中的实体指的是表中的行,因为一行记录对应一个实体) 实体完整性规定表的一行在表中是唯一的实体,不能出现重复。 实体完整性...
  • 关系的完整性是关系型数据模型结构中的另一组成部分,它分为实体完整性、参照完整性和用户定义完整性三类。在关系数据库中一个关系对应现实世界的一个实体集,关系中的每一个元组对应一个实体。在关系中用主关键字来...
  • 数据库定义参照完整性

    千次阅读 2020-05-18 11:03:18
    关系模型的参照完整性在CREATE TABLE 中用FOREIGN KEY 短语定义哪些列为外码,用REFERENCES短语指定这些外码参照哪些表的主码。 例如:关系SC中一个元组表示一个学生选修的某门课程的成绩,(Sno,Cno)是主码,Sno...
  • 定义参照完整性

    千次阅读 2020-03-31 22:32:54
    定义参照完整性的概念: 现实世界中的实体之间往往存在着某种联系,在关系模型中实体及实体之间的联系都是用关系来描述的,因此可能存在着关系与关系间的引用。 例如:学生实体和专业实体可以用下面的关系模式表示,...
  • 对实体完整性和参照完整性的认识

    千次阅读 2015-11-25 22:26:28
    参照完整性约束来源于联系集和弱实体集。 外删内插不会影响参照完整性。 保证参照完整性的措施:拒绝,级联,置空值,置缺省值。 在外码上插入和修改一般只能拒绝,但是在主码上删除和修改四种都可以。 三:SQL...
  • mysql 设置参照完整性

    千次阅读 2015-08-21 17:17:00
    什么的参照完整性: 简单的来说,就是在A表里面有一组属性K(可以是多个)是A表的主键,在B表中有一组对应的属性F(也可以是多个),但F不是B表主键,则对于B表中每个元组(也就是每一行)在F上的值必须为空值或者...
  • mysql-参照完整性

    2019-10-12 18:20:16
    MySQL参照完整性一般是通过MySQL外键(foreign key)实现的。 外键(仅innoDB支持)所引用表的列必须是主键。 外键声明包括三个部分: A、哪个列或列组合是外键 B、指定外键参照的表和列 C、参照动作[cascade(级联...
  • 数据库中的三种完整性:域、实体、参照完整性 转载▼ 关系的完整性主要包括域完整性、实体完整性和参照完整性三种。 1.域(列)完整性   域完整性是对数据表中字段属性的约束,通常指数据的有效性,它...
  • 参照完整性----外键

    2020-04-28 10:21:03
    1.参照完整性解决的是数据之间不能相容的问题。 2.参照完整性的实现结果是设置外键。 3.外键的定义格式: foreign key(成为外键的属性) references 被参考的表名(被参考的属性) 4.完整性约束检查以及违约处理: 1....
  • 什么是数据库的参照完整性

    千次阅读 2019-09-24 06:33:02
    什么是数据库的参照完整性? 解答:数据库的参照完整性是指表与表之间的一种对应关系,通常情况下可以通过设置两表之间的主键、外键关系,或者编写两表的触发器来实现。 有对应参照完整性的两张表格,在对他们...
  • 参照完整性违约处理

    千次阅读 2017-03-10 19:42:23
    参照完整性违约处理 (1) 拒绝(NO ACTION)执行 不允许该操作执行。该策略一般设置为默认策略 (2) 级联(CASCADE)操作 当删除或修改被参照表(Student)的一个元组造成了与参照表(SC)的不一致,则删除或...
  • 因为满足参照完整性的原则是要有外键,满足一对多,选择多的一方的外键(分数,courseno为外键),少的一方(课程,courseno为主键)。 2、多对多 如:学生和课程 一名学生可以选修多门课程,而一门课程也可以被...
  • 索引-外键之参照完整性

    千次阅读 2017-12-19 17:45:34
    思考两个问题:问题一:我们有两个表,一个表(department)存放的是部门的信息,例如部门id,部门名称等;另一个表是员工表(staff),员工表里面肯定要存放每个员工...其实,理解了第一个问题即参照完整性问题,第二个
  • 试述关系模型的完整性规则。在参照完整性中,什么情况下外码属性的值可以为空值?
  • 实施参照完整性的作用

    千次阅读 2017-01-10 11:06:00
    实施参照完整性 一般是 创建外键 表关联的时候使用. 我以一个 例子来说明。 例如 有2个表。 一个班级表, 一个学生表班级表 ( 班级编号, 班级名称, 班级其他字段... ) 学生表 (学号, 所属班级编号, 学生名, ...
  • 基于《数据库系统概论》和《数据库系统概念》,阐述了数据库的参照完整性及其相关概念并基于MySQL数据库和SQL语言进行实现
  • 参照完整性:如果F是外码,那么他要么是空值,要么就是另一个表的主码. (若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码相对应(基本关系R和S不一定是不同的关系),则对于R中每个元祖在F上必须为: ...
  • 实体完整性约束 C表 /*1为现有表C的CN列创建UNIQUE约束*/ use testbase2 go alter table C add constraint unique_c unique(tn) go /*2删除表C中CN列的UNIQUE约束UNIQUE_C*/ use testbase2 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 85,015
精华内容 34,006
关键字:

参照完整性