精华内容
下载资源
问答
  • 我们在使用 MySQL 数据库时,添加数据如果设计不合理很容易出现外码约束的情况,为什么会产生这样的问题?那我们该如何处理这一问题呢?依据又是什么?本篇文章带你进一步来深度剖析,并带着你的思路来设计解决方案...


    前言

    我们在使用 MySQL 数据库时,添加数据如果设计不合理很容易出现外码约束的情况,为什么会产生这样的问题?那我们该如何处理这一问题呢?依据又是什么?本篇文章带你进一步来深度剖析,并带着你的思路来设计解决方案。

    在这里插入图片描述


    本次案例的案例情景是传统的数据库表:学生-课程数据库。

    一、插入新数据时报错外键约束?

    我们在 Course 表中插入课程号为 1 的数据时提示违反了外键约束。插入语句如下:

    insert into course(cno,cname,cpno,ccredit) values('1','数据库','5',4);
    

    二、对于出错 SQL 语句的分析

    我们先根据 Course 表的定义,看哪一个是外键。查看 Course 表定义的 SQL 语句如下:

    create table course (
    cno char(4) primary key,
    cname char(40),
    cpno char(4),
    ccredit smallint,
    foreign key cpno references course(cno));
    

    从上面的 SQL 语句可以看出,cpno 是外键,而且引用的是本表的主键 cno。

    三、对于外码约束的分析

    我们根据数据库定义的参照完整性规则得知:外键 cpno 的取值不为空的情况下(如上 cpno=‘5’),与其对应的主键 cno 在参照表中必须存在。

    但是我们反观上面操作,第一个插入的就是 cno=‘1’ 的数据,cno=‘5’ 的还没有插入,很显然不满足参照完整性规则。

    四、如何处理外键约束?

    解决方法:

    1. 插入数据的时候,所有的 cpno 字段暂时都置为 null,所有数据插入以后,再依次更新这些数据的 cpno 的值。该方法的优点是复杂性低,容易实现。
    2. 插入数据的时候,不是按表中 cno 的顺序插入,而是根据数据依赖的关系插入数据。比如,根据表里的数据,分析得出可以按 cno=2、6、4、7、5、1、3 的顺序插入数据。

    总结

    本文我们掌握了 MySQL 数据库如何在设计不合理时遇到的外码约束的问题,并通过经典案例为大家分析了为何会出现这样的问题,同时顺着思路来设计业务的解决方案。本文提到的数据库参照完整性规则是数据库设计的基础知识,大家切记要重视基础,活学活用,方能在开发中百战不殆!

    在这里插入图片描述


    感谢大家的支持,我是白鹿,一个不懈奋斗的程序猿。希望本贴能帮助到大家,欢迎大家的一键三连!如果还有什么问题、建议或者补充可以留言在帖子下方,给予更多人帮助!
    更多资讯微信搜索公众号【WDeerCode代码圈

    展开全文
  • 数据库之主码和外码

    万次阅读 多人点赞 2019-04-24 21:29:34
    想要明白主码和外码的概念前,需要先对域和笛卡儿积概念有一个彻底的理解。请阅读的童靴务必耐心~O(∩_∩)O 1.域 定义:域是一组 具有相同数据类型值的 集合。(域就是集合,不过集合里的元素是相同的数据类型) ...

    目录

    1.域

    2.笛卡儿积

    3.关系

    主码

    外码


    想要明白主码和外码的概念前,需要先对域和笛卡儿积概念有一个彻底的理解。请阅读的童靴务必耐心~O(∩_∩)O

    1.域

    定义:域是一组 具有相同数据类型值集合。(域就是集合,不过集合里的元素是相同的数据类型)

    例如,自然数、整数、实数、大于一小于一百的数、{男,女}都可以是域。

    2.笛卡儿积

    笛卡儿积是 域上 的一种集合运算。

    定义:给定一组域D1,D2,D3···,Dn,允许其中某些域是相同的,D1,D2,D3,···,Dn的笛卡儿积定义为

               D1×D2×D3×···×Dn={(d1,d2,d3,···,dn) | di∈Di ,i=1,2,···,n}

    大白话就是从每个域中抽出一个元素放在一起,每一个(d1,d2,d3,···,dn) 称之为一个元组

    这样说还是比较抽象,举一个例子: 

                                      

    3.关系

    定义: D1×D2×D3×···×Dn 的子集叫做在域D1,D2,D3,···,Dn上的 关系,表示为 R(D1,D2,D3,···,Dn)。

                (笛卡儿积中若干个元组的集合就是关系)

    主码

    若关系中的某一个属性组的值能唯一地标识一个元组,而其子集则不能,则称该属性组为候选码(candidate key)

    若一个关系中有多个候选码,则选定其中一个为主码。例如学生的学号就可以作为一个主码,因为它是唯一的。

    一个关系可以没有主码,但是设置一个主码的话对数据库查询效率会高一些。

    主码不一定是只有一个属性,主码可以由一个或者多个属性组成。主码是候选码之一。

    考虑主码的时候考虑的是属性的唯一性,即该属性的值不会重复,如果重复了就无法唯一标识整个元组。

    主码和设置非空的关系是什么?

    主码的要求是:非空、唯一性。

    而设置某个属性:非空仅仅是不允许输入空值,但却可以重复。

     

    外码(外键)

    那么什么是外码呢?

    如果一个关系中的一个属性(该属性不能是候选码)是另外一个关系中的主码则这个属性为外码。

    外码的值要么为空,要么要为其对应的主码中的一个值。

     

    那么外键的作用是什么呢?

    保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。

    使两张表形成关联,外键只能引用外表中的列的值或使用空值。

     

    阻止执行(情况一):

    1、从表插入新行,其外键值不是主表的主键值便阻止插入;

    2、从表修改外键值,新值不是主表的主键值便阻止修改;

    3、主表删除行,其主键值在从表里存在便阻止删除(要想删除,必须先删除从表的相关行);

    4、主表修改主键值,旧值在从表里存在便阻止修改(要想修改,必须先删除从表的相关行)。

    级联执行(情况二):

    1、主表删除行,连带从表的相关行一起删除;

    2、主表修改主键值,连带从表相关行的外键值一起修改。

           两种方法提供给用户选择。无论选取哪种方法,从表里都不会有多余行。

           从另一个角度理解,用拒绝同一事物在从表中的标志与主表不一致。

     

    展开全文
  • 数据库 主码 外码

    千次阅读 2019-10-03 09:32:59
    主码 ,外码可以称为主键,外键。 什么是主码,主码是一个能唯一标识一个元组的属性。在一个关系(表)中,主码不一定只有一个,但是一定要有的。因为元组,是对世界中某种事物的数据描述,而世界中各种事物,都...

    主码 ,外码也可以称为主键,外键。

    什么是主码,主码是一个能唯一标识一个元组的属性。在一个关系(表)中,主码不一定只有一个,但是一定要有的。因为元组,是对世界中某种事物的数据描述,而世界中各种事物,都具有唯一性,都是可以区分的。在计算机中为了描述事物的唯一性,引入了主码的概念。在一个关系中,不同元组的主码一定不能为空,且值一定要不同。因为如果为空说明这个事物是不可标识的,而这个世界的任何事物都是可以标识的,说以主码为空显然不合法;如果两个主码值相同则说明两个事物是相同的,而这个世界的任何事物都是不同的,所以两个主码值相同,显然也是不合法的。

    什么是外码,如果一个关系中的一个属性是另外一个关系中的主码则这个属性为外码。外码的值要么为空,要么要为其对应的主码中的一个值。

    展开全文
  • 数据库中几个基本概念 主码 外码

    万次阅读 多人点赞 2015-07-17 10:20:22
    主码 ,外码可以成为主键,外键。 什么是主码,主码是一个能唯一标识一个元组的属性。在一个关系(表)中,主码不一定只有一个,但是一定要有的。因为元组,是对世界中某种事物的数据描述,而世界中各种事物,都...

    主码 ,外码也可以称为主键,外键。

    什么是主码,主码是一个能唯一标识一个元组的属性。在一个关系(表)中,主码不一定只有一个,但是一定要有的。因为元组,是对世界中某种事物的数据描述,而世界中各种事物,都具有唯一性,都是可以区分的。在计算机中为了描述事物的唯一性,引入了主码的概念。在一个关系中,不同元组的主码一定不能为空,且值一定要不同。因为如果为空说明这个事物是不可标识的,而这个世界的任何事物都是可以标识的,说以主码为空显然不合法;如果两个主码值相同则说明两个事物是相同的,而这个世界的任何事物都是不同的,所以两个主码值相同,显然也是不合法的。


    什么是外码,如果一个关系中的一个属性是另外一个关系中的主码则这个属性为外码。外码的值要嘛为空,要嘛要为其对应的主码中的一个值。

    展开全文
  • 首先说明 键字=码字,所以 主键=主=主关键字,候选键=候选=候选关键字... 所谓关系键,指的是一个表中的一个(或一组)属性,用来标识该表的每一行或与另一个表产生联系。 话不多说,上图:  相信这个图...
  • 红外遥控

    热门讨论 2015-09-18 14:07:25
    本资源内有一个开源的红外库,大约有50~60种设备的。更重要的里面有一个开源库的网址,有大约2000度中设备的码值。长期挂在网络上以供下载
  • 试述关系模型的完整性规则。在参照完整性中,什么情况下外码属性的值可以为空值?
  • 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须:或者取空值(F的每个属性值均空值);或者等于S中某个元组的主码值...
  • 主码:唯一标识,相当于身份证号外码也可以当主码,即在财务表里引用信息表的身份证号,这个身份证号也可以在财务表里做唯一标识 候选码:在学校里,院系,专业,班级,班里第...推出外码可以为空被引用表的主码值
  • 实体完整性规则是指若属性A是基本关系R的主属性 ,则属性A不能取空值。若外键不是主属性,则可以取空值,反之不可以取空值。
  • 关系的候选码、主码、外码 候选码 定义:能惟一标识关系中元组的一个属性或属性集,称为候选码(Candidate Key) “学生关系”中的学号能惟一标识每一个学生 “选课关系”中,只有属性的组合“学号+课程号”才能惟一...
  • 外码关系的完整性总结 关系的码 1. 候选码 候选码是能够唯一标识关系中某一个元组的一个属性或属性集,也叫候选键 如: 学生关系中,学号可以唯一标识学生,班级+姓名也可以唯一标识一个学生,学号和(班级,姓名...
  • 数据库外键可以为空

    万次阅读 2016-01-09 14:12:06
    一、    关于数据库的外键,以前我一直以为不允许... 按照数据库理论上说的应该是外键可以为空为空表示其值还没有确定;如果不为空,刚必须主键相同。举个例子:有两张表,系信息表,学生信息表,学生信息表
  • 格雷下的 fifo满判断

    千次阅读 2019-07-19 20:46:02
    使用gray进行对比,如何... 而对于“满”的判断,如下图,由于gray除了MSB,具有镜像对称的特点,当读指针指向7,写指针指向8时,除了MSB,其余位皆相同,不能说它满。因此不能单纯的只检测最高位了,在g...
  • 可以理解键的意思; **1.=键:**能够唯一标识一条记录的属性或者属性集。 2.候选=候选键:能够唯一标识一条记录的最小属性集。 最小性:任一候选键的任何真子集都不能唯一标识一个记录 举例:学生ID是候选...
  • 数据库中主码和外码问题

    千次阅读 2018-03-27 21:50:55
    INSERT 语句与 FOREIGN KEY SAME TABLE 约束&...在刚开始以学生-课程数据库例来创建数据库,并作一系列的操作时,当我们向课程表中插入数据时,出现以上错误是因为,Cpno是先修课,必须在课程号Cno上有这门课才可...
  • 表和完整性约束 表的定义以及完整性约束的定义 定义列 定义计算列 定义主关键字(实体完整性约束) 定义外部关键字(参照完整性约束...1、主value不得为空 2、构成主的每个字段不得重复 主属性是构成的属性 ...
  • 一、候选码、主码和外码 1. 候选码(Candidate Key) 定义:能唯一标识关系中元组的一个属性或属性集,称为候选码。 性质:具有唯一性和最小性。 2. 关系的主码和外码 主码 定义:从多个候选码中选择一个作为查询、...
  • 在数据通信中,复用技术的使用极大地提高了信道的传输效率,取得了广泛地应用。多路复用技术就是在发送端将多路信号进行组合(如广电前端使用的混合器),...另外还有一些其他的复用技术,如分复用、极化波复用和分复
  • 本文所有操作都是基于mysql8.0执行的,针对mysql数据库创建表之后的约束语句的添加、...创建表时定义外码 创建表后定义外码 定义参照完整性的违约处理 用户自定义完整性 NOT NULL/NULL DEFAULT UNIQUE CHECK ...
  • 条形的发展历史与国内现状

    千次阅读 2018-11-21 23:01:37
    在二十年代初期,人们对条形的技术还一片空白,在Kermode的实验室项目中应运而生。当时他想研究的项目就是对邮政的据单进行自动分检,当时只是为了在信封上做条码标记,其中收信人的地址就是条码中的携带信息。...
  • 条形什么,主要有什么区别

    千次阅读 多人点赞 2019-01-14 22:14:23
    条形—物联网的出生证现今社会,几乎所有商品的包装上,都有一组灰白相间条纹的标签这就是条形我们简称条码。它是商品通行于国际市场的“共同语言”,是商品进人国际市场和超市的通行证,是全球统一标识系统和...
  • ❤️ 关系数据结构及形式化定义 1.笛卡尔积:当做一个表来说,就是一行是一个元组,一列是一个域,是域的基数的相乘 2.关系:一张规范的二维表 ...7.候选:关系中的某一属性组的值能唯一地标识一个元组,而子集...
  • 输入的汉字外码到机器内部都要转换成机内码,才能被存储和进行各种处理。,请问这种处理的具体步骤谁知道??
  • 在组策略中发现“帐户: 使用密码的本地帐户只允许进行控制台登录”选项是无法修改的,因为考虑到组策略和注册表一一对应,因此这里考虑直接使用注册表来修改。修改方法: 找到注册表中如下键值: [HKEY_LOCAL_...
  • 微信接口返回对照表

    万次阅读 2017-12-21 21:32:54
    公众号每次调用接口时,可能获得正确或错误的返回,开发者可以根据返回信息调试接口,排查错误。 全局返回说明如下: 返回 说明 -1 系统繁忙,此时请开发者稍候再试 ...
  • Js判断是否数字,是否为空,是否整形,是否浮点型,是否对象  /**********************一。验证类*****************************/ //对象是否 存在 function isObj(str) { if(str==null||...
  • 条形类型简介及常用条形产品

    千次阅读 2014-05-04 10:23:42
    条形什么? 条形是由一组按一定编码规则排列的条,符号,用以表示一定的字符、数字及符号组成的信息。 条形分为一维和二维码两种。一维比较常用,如日常商品包装上的条形就是一维。它的信息...
  • 条形类型及常见条形介绍

    千次阅读 2017-02-22 23:25:40
    一维比较常用,如日常商品包装上的条码就是一维。它的信息存储量小,仅能存储一个代号,使用时通过这个代号调取计算机网络中的数据。二维码是近几年发展起来的,它能在有限的空间内存储更多的信息,包括文字、...
  • 【服务器配置】 Windows Server 2012 R2 , IIS7 【第一步】在IIS服务添加一个FTP 站点 【第二步...指定了用户才有读取和写入的权限,当然也可以设置所有用户有这个权限,这个根据个人的需要设定 【第五步】测试...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 216,380
精华内容 86,552
关键字:

外码为什么可以为空