精华内容
下载资源
问答
  • 一、 特殊关系 、 二、 集合上的特殊关系 、 三、 整除关系 、 四、 大小关系





    一、 特殊关系



    特殊二元关系 :

    • 空关系
    • 恒等关系
    • 全域关系
    • 整除关系
    • 小于等于关系
    • 包含关系
    • 真包含关系




    二、 集合上的特殊关系



    集合 AA 是任意集合 , 集合 AA 中可以定义以下关系 :

    空关系 : \varnothing , 空关系中没有关系 ;

    恒等关系 : IA={<x,x>xA}I_A = \{ <x, x> | x \in A \}

    全域关系 : EA=A×A={<x,y>xAyA}E_A = A \times A = \{ <x,y> | x \in A \land y \in A \} , 任何两个元素之间都有关系 ;


    上述三种关系是最基本的关系 , 任意集合都能定义上述三种关系 ;

    全域关系最大的关系 , 其中包含所有可能的有序对 ;

    空关系最小的关系 , 其中没有任何有序对 ;

    恒等关系 有特殊意义 , 关系运算中不起到任何作用 ;





    三、 整除关系



    AZA \subseteq Z , AA 集合是整数集的子集 , 定义 AA 集合上的整除关系 :

    DA={<x,y>xAyAxy}D_A = \{ <x, y> | x \in A \land y \in A \land x|y \}

    其中的 xyx|y 中的 | 符号是整除的意思 , xx 整除 yy ;



    xx 整除 yy , xx 是除数 (分母) , yy 是被除数 (分子) ; yx\dfrac{y}{x}

    yy 能被 xx 整除 , xx 是除数 (分母) , yy 是被除数 (分子) ; yx\dfrac{y}{x}



    整除关系示例 :

    A={1,2,3,4}A = \{ 1, 2, 3, 4 \}

    DA={<1,1>,<1,2>,<1,3>,<1,4>,<2,2>,<2,4>,<3,3>,<4,4>}D_A = \{ <1, 1> , <1, 2> , <1, 3> , <1, 4> , <2, 2> , <2, 4> , <3, 3> , <4,4> \}





    四、 大小关系



    ARA \subseteq R , 集合 AA 是实数集子集 , 在集合 AA 上有以下二元关系 :


    大于关系 ( Great Than ) :

    GA={<x,y>xAyAx>y}G_A = \{ <x,y> | x \in A \land y \in A \land x > y \}


    大于等于关系 ( Great Than Or Equal To ) :

    GEA={<x,y>xAyAxy}GE_A = \{ <x,y> | x \in A \land y \in A \land x \geq y \}


    小于关系 ( Less Than ) :

    LA={<x,y>xAyAx<y}L_A = \{ <x,y> | x \in A \land y \in A \land x < y \}


    小于等于关系 ( Less Than Or Equal To ) :

    LEA={<x,y>xAyAxy}LE_A = \{ <x,y> | x \in A \land y \in A \land x \leq y \}



    如果 AA 集合是有限集 , 则 AA 上的关系是有限个 ;

    如果 AA 集合是无限集 , 则 AA 上的关系是无限个 ;

    展开全文
  • 今天用EF做更新操作时,抛出了System.InvalidOperationException:“操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null。对关系作出更改后,会将相关的外键属性设置 null 值。如果外键支持 null 值,...

    前言

    今天用EF做更新操作时,抛出了System.InvalidOperationException:“操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null。对关系作出更改后,会将相关的外键属性设置为 null 值。如果外键不支持 null 值,则必须定义新的关系,必须向外键属性分配另一个非 null 值,或必须删除无关的对象。”的异常。经过调试之后发现了问题所在。

    报错代码:

            public void Update(HouseDTO house)
            {
                using (ZMZDBEntities ctx = new ZMZDBEntities())
                {
                    var bs = new BaseService<HouseEntity>(ctx);
                    var entity = bs.GetById(house.Id);
                    if (entity != null)
                    {
                        entity.Address = house.Address;
                        entity.Area = house.Area;
    
                        entity.HouseAttachments.Clear();//先删再加
                        foreach (var aid in house.AttachmentIds)
                        {
                            entity.HouseAttachments.Add(new HouseAttachmentEntity { AttachmentId = aid, HouseId = house.Id });
                        }
    
                        entity.CheckInDateTime = house.CheckInDateTime;
                        entity.CommunityId = house.CommunityId;
                        entity.DecorateStatuesId = house.DecorateStatusId;
                        entity.Description = house.Description;
                        entity.Direction = house.Direction;
                        entity.FloorIndex = house.FloorIndex;
                        entity.LookableDateTime = house.LookableDateTime;
                        entity.MonthRent = house.MonthRent;
                        entity.OwnerName = house.OwnerName;
                        entity.OwnerPhoneNum = house.OwnerPhoneNum;
                        entity.RoomTypeId = house.RoomTypeId;
                        entity.StatusId = house.StatusId;
                        entity.TotalFloorCount = house.TotalFloorCount;
                        entity.TypeId = house.TypeId;
                        entity.Address = house.Address;
                        entity.Area = house.Area;
                        ctx.SaveChanges();
                    }
                }
            }
    

    当执行到ctx.SaveChanges()是就抛出了异常,而引起问题的代码实际在这里:

    entity.HouseAttachments.Clear();//先删再加
    foreach (var aid in house.AttachmentIds)
    {
        entity.HouseAttachments.Add(new HouseAttachmentEntity { AttachmentId = aid, HouseId = house.Id });
    }
    

    这里涉及了三个表House、Attachment和HouseAttachment(中间表,只有Id主键,HouseId外键,AttachmentId外键三个字段)。当Clear掉House对应的Attachement时,HouseAttachment就和House脱离了关系(注意:当执行Clear时EF认为我们是要二者脱离关系,而我们的想法是删除House对应的HouseAttachments)。因为是脱离关系,所以HouseAttachment中House对应的外键字段就会被设置为null,以可被其它House所继续关联。而由于HouseAttachment表的HouseId(外键)为非空类型,所以SaveChanges时就报了应为非null的异常。至于EF为什么要这么做,就要理解下EF的 复合(Composition)和聚集(Aggregation)

    分析

    对于复合:当父对象创建时子对象也会一并创建,当父对象销毁时子对象也一并销毁,父对象控制着子对象的生命周期。举个例子:你发布了一篇博客,并在博客里上传了一些附件,当你删除这篇博客时对应的附件也应该要一起删掉。

    对于聚集:父对象和子对象是独立存在的,当父对象销毁时,子对象仍然可以存在(因为可能会被用到其它父对象中)。举个例子:一个歌单里包括了好几首歌,当这个歌单删除时,它对应的歌曲不应该被删除,因为还可以被加入到其它歌单里。

    对于上述例子我们认为它应该是复合,但实际上EF认为是聚集。

    EF则根据以下两点来区分复合还是聚集:

    • 复合:如果EF在子对象中发现了复合主键(ParentId,ChildId),则认为是复合关系。对于此例来说如果HouseAttachment的Id和HouseId同时为主键,那么就不会报错了,然而我们的主键并不包括HouseId。
    • 聚集:如果EF在子对象中发现了外键且不是复合主键,则认为是聚集关系。

    所以走到这里问题也就明了了,解决方式有三种:

    1. 让EF认为我们这是复合关系,Clear时就删除对应的HouseAttachment:就需要将HouseAttachment的Id和HouseId同时设置为主键。
    2. 仍旧保持聚集关系:将HouseAttachment的HouseId字段设置为可空类型。
    3. 仍旧保持聚集关系:手动将house下的HouseAttachment删除,将出错代码改为
    ctx.HouseAttachments.RemoveRange(entity.HouseAttachments);
    foreach(var aid in house.AttachmentIds)
    {
        ctx.HouseAttachments.Add(new HouseAttachmentEntity { AttachmentId = aid, HouseId = house.Id });
    }
    

    Inspired by
    The relationship could not be changed because one or more of the foreign-key properties is non-nullable

    展开全文
  • 外键可以为空

    千次阅读 2017-11-29 16:45:38
    一、 关于数据库的外键,以前我一直以为不允许为的,今天看到一个项目中使用了的数据库外键,很...如果不为空,刚必须为主键相同。举个例子:有两张表,系信息表,学生信息表,学生信息表中的系号为外键,此时外
    一、
    

    关于数据库的外键,以前我一直以为不允许为空的,今天看到一个项目中使用了空的数据库外键,很惊讶,后来才发现是自己以前错误了。数据库外键是可以为空的。

    不过为空的数据跟与之相关联的表就没有关系了。一般不采用。

    二、

       按照数据库理论上说的应该是外键可以为空,为空表示其值还没有确定;如果不为空,刚必须为主键相同。举个例子:有两张表,系信息表,学生信息表,学生信息表中的系号为外键,此时外键可以为空,表示该学生还没有确定所在的系;如果系号不为空则系号必须在系信息表中存在!
    外键不能为空只是SQLSERVER等一些数据库系统的特殊规则而已!

    三、

    外键可以为空的,一个表的关键的标识是主键,外键是否为空不影响表的结构及数据库设计概念的.外键只起个关联表的作用.
    至于书上提到的外键不能为空是对的,但实践中在数据库里没有创建关联时,好像是外键,实则不是外键.

       虽然定义了关系
    但是属于未强制关系,这种关系的外键约束被禁用。所以楼主定义无实际意义。所以可以插入null数据

       外键的值不允许参照相应主表中不存在的主键值,或者外键为空值.
    不知道楼主怎么理解的这句话,我理解为外键可以为空
    外键的值或者参照相应主表中存在的主键值,或者外键为空值

    四、

    联机丛书中准确的解释是

    如果在 FOREIGN KEY 约束的列中输入非 NULL 值,则此值必须在被引用的列中存在,否则将返回违反外键约束的错误信息。

    也就是说外键中可以有null,除非外键列定义了not null

    五、

    外键当然可以为空了
    看看你引用的书上的话
    "外键的值不允许参照相应主表中不存在的主键值,或者外键为空值. "
    后面不是说了 "或者外键为空值 ",不就是说外键可以为空的吗
    外键要有值的话必须是主表中存在的主键值,可不就是空值

    外键可以为空值,但如果有值的话一定是你参照的那个主表中的主键值.
    展开全文
  • ID为空

    千次阅读 2019-07-18 09:58:56
    新增的一对多关系,连接其他表的ID,新增的同时也要新增其他表的ID数据,不然就能显示出来的,ID就是连接其他表的路径,也是新增他的表的ID数据,新增为空,id为空就是显示出来。 1,图,下面后面的ID都是...
    1. 新增的一对多关系,连接其他表的ID,新增的同时也要新增其他表的ID数据,不然就不能显示出来的,ID就是连接其他表的路径,也是新增他的表的ID数据,新增不能为空,id为空就是显示不出来。
    2. 1,图,下面后面的ID都是没有数据的,ID就是连接其他表的数据的名称,如果为空就是数据为0,就不能显示出来,例如下图:如果新增成功数据库有数据,却没有显示出来,就是这种类型的错误,

    1. 图,前面有id数据的就是可以显示出来的,没有就不可以显示出来。
    2. 解决方法就是新增时记得判断他其他的ID数据是否为空,不能让他为空,新增的同时添加他的ID数据,就是新增他的ID数据,新增全部ID,全部ID不为空,不为空,在控
    3. 制器那边显示是你新增的数据,就没有错误了。

    展开全文
  • 数据库外键可以为空

    万次阅读 2016-01-09 14:12:06
    一、    关于数据库的外键,以前我一直以为不允许为的,今天看到一个项目中使用了的数据库外键,很惊讶,后来才发现...如果不为空,刚必须为主键相同。举个例子:有两张表,系信息表,学生信息表,学生信息表
  • mysql where中如何判断不为空

    千次阅读 2020-07-23 13:52:32
    mysql where中如何判断不为空 mysql是开源免费的关系型数据库,由于其是免费的,所以使用也是比较广泛的。 mysql数据库的分为两种:Null、字符串 本文将针对这些演示如何判断是否为,以及如何写sql过滤...
  • 真实速 真实速(True Air Speed...飞机相对于空气的运动速度也可等价地视飞机动而空气以大小相等方向相反的流速流过飞机。根据流体的贝努利方程,流速可以折算成压力,即动压(近似地等于冲压)。根据空气...
  • 指针和0、NULL之间的关系

    千次阅读 2014-11-22 11:30:36
    指针和0、NULL之间的关系 1. 什么是指针常量(null pointer constant)? 英文定义: [6.3.2.3-3] An integer constant expression withthe value 0, or such an expression cast to type void *, is called ...
  • 实体完整性规则是指若属性A是基本关系R的主属性 ,则属性A能取空值。若外键不是主属性,则可以取空值,反之不可以取空值。
  • 出现以上问题的原因是: 将组策略里---用户权利指派---跳过遍历检查--将users,everyone删除导致的 解决方案: 1. 重新添加即可。 ...2. 另一解决办法是在运行里,输入“Secedit /configure /cfg %systemroot%\...
  • 因为在其他书上看到undefined,null,字符串都能当作false用在if语句判断...但此两者并等于字符和false;了搞明白他们之间的关系,我又在浏览器上面试了一下;下面就是实验结果 falseboolean型;‘’字符
  • 文章目录关系数据库关系操作基本关系操作关系数据库语言的分类关系模型的完整性实体完整性(Entity Integrity)参照完整性(Referential Integrity)用户定义完整性(User-defined Integrity)E-R图向关系模型的转换...
  • 外键值可为空

    万次阅读 2015-11-07 22:32:47
    从感官上,外键用于限制主子表的关联关系,是一种强关联关系,那么子表的外键值应该为空,而是都会关联到主表对应的记录上,但实际上,至少在Oracle中,外键是可以为空的,打个比方,班级是主表,学生是子表,一个...
  • 等价关系与划分对应问题 第二类斯特林数计算公式 4元集等价关系计算 6元集等价关系计算
  • 二叉链表树中结点个数 与指针个数 二叉树的边数的关系
  • 关系数据库——关系数据语言

    千次阅读 多人点赞 2019-10-22 19:52:51
    结果一个集合,集合的每一个元素是一个元组,元组的每一个分量来自不同的域。 基数:一个域允许的不同取值个数。 笛卡尔积的基数:每个域不同取值的个数的乘积,或者说元组的个数 关系:域的笛卡尔...
  • 关系演算

    千次阅读 2017-12-10 15:35:31
    关系演算是以数理逻辑中的谓词...元组变量是在某一关系范围内变化的,所以也称为范围变量,一个关系可以设多个元组变量。 ALPHA语言主要有GET/PUT/HOLD/UPDATE/DELETE/DROP 6 条语句,语句的基本格式 操作语句 工
  • Vue踩坑——this.refs为空

    千次阅读 2019-06-12 16:01:44
    Vue踩坑——this.refs为空 我们在用vue的时候,会遇到一些坑,比如我们使用 this.$refs 获取到值,页面明明有啊 百思不得其解……原来这个跟Vue的钩子有关系 总结来说: 1、必须要等页面中的ref子组件加载完毕...
  • 关系模型的完整性约束

    千次阅读 2018-07-29 00:11:11
    关系模型的完整性规则是对关系的某种约束条件。...参照完整性:维护实体之间的引用关系,外键可以为空,或者其值参照关系对应的主键值; 用户定义的完整性:由应用环境决定,针对具体关系数据库的约束条件。...
  • 关系操作及alpha语言学习

    千次阅读 2019-06-27 17:20:14
    文章目录前备知识关系代数传统的集合运算并交差笛卡尔积专门的关系运算选择投影连接除运算alpha语言检索简单检索(带条件的检索)限定的检索(带条件的检索)带排序的查询指定返回的结果的条数用元组变量的检索用存在...
  • 限制数据类型,缺省值、规则、约束、是否可以为空,域完整性可以确保不会输入无效的值。比如某个属性的值必须在某个范围内,或者默认0等,这些就是域(列)完整性,也就是用户定义的完整性。 简单来说就是对表...
  • 对象模式

    千次阅读 2019-09-25 20:29:32
    Null 对象不是检查空值,而是反应一个做任何动作的关系。这样的 Null 对象也可以在数据可用的时候提供默认的行为。 在对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未...
  • 集合论—等价关系与偏序关系

    千次阅读 多人点赞 2019-06-29 09:20:14
    定义:设RRR非空集合AAA上的关系,若RRR是自反的、对称的和传递的,则称RRRAAA上的等价关系。对任何x,y∈Ax,y\in Ax,y∈A,若&lt;x,y&gt;∈R&lt;x,y&gt;\in R<x,y>∈R,则记作x∼yx\sim ...
  • 数据库关系建模(ER图设计关系表)

    万次阅读 多人点赞 2018-11-21 20:22:46
    目录   一、概述 ...4. 关系表 VS 一般的表 5. 主码(主键primary key)  6. 实体完整性约束(entity integrity constraint) 7. 外码(外键foreign key) 8. 参照完整性约束(reference integrity c...
  • 检查芯片但不为空,说明芯片连接烧录器完好吧。用keil编写的hex文件,跟烧写的文件没有关系吧?我用别人做的hex文件也是一样 ![CSDN移动问答][1] ![CSDN移动问答][2] [1]: ...
  • 点线面拓扑关系

    千次阅读 2018-08-31 18:53:21
    一、基础知识 1.1 点线面的关系 主要有六大关系:点点关系、点线关系、点面关系、线线关系、线面关系、面面关系 ...I内部(紫色部分)、B边界(紫色部分)、E外部(黑色部分) ...
  • 数据库复习 关系代数和关系演算是SQL之外的描述数据库操作的形式化语言
  • 关系操作(1)基本关系操作(2)关系数据库语言的分类2.关系的完整性(1)关系的三类完整性约束(2) 实体完整性(Entity Integrity)(3)参照完整性❶ 关系间的引用❷ 外码(Foreign Key)❸ 参照完整性规则(4)...
  • 史上最简单的 MySQL 教程(二)「关系型数据库」

    万次阅读 多人点赞 2017-04-26 21:28:27
    至于关系模型,则是一种所谓建立在关系上的模型,其包含三个方面,分别: 数据结构:数据存储的形式,二维表(行和列); 操作指令集合:所有的 SQL 语句; 完整性约束:表内数据约束(字段与字段)和表与表之间的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 838,075
精华内容 335,230
关键字:

关系不可以为空关系