多表关联

1.1-简介

  • 什么是多表关联

    • 在处理数据库的关系中,无非只有三种关系

    • 一对一:一个老师只能在一个教室上课,不可能同时在两个教室上课

    • 一对多:一个教室可以有多个学生,但一个学生只能在一个教室

    • 多对多:一门学科可以有多个学生,一个学生也可以学习多门学科

    • 本小节我们主要学习一对多的关联,通过学习一对多来举一反三其他两种关系

    1.2-如果在模型文件中对两个实体之间进行关联?

    • 给教室关联学生

  • 给学生关联教室

  • Type:

    • toOne:只指向一个对象(可用于某一个属性是自定义数据模型)
    • toMany:可以包含多个对象(一般是集合类型,可用于某一个属性是数组,数组中是自定义模型)
  • 添加数据

    
    ClassRoom *room = [kManagedObjectContext getManagedObjectModel:@"ClassRoom"];room.roomNumber = @"1302";Student *student = [kManagedObjectContext getManagedObjectModel:@"Student"];
    student.name = @"李四";[room addStudentObject:student];
    //    student.classRoom = room;[kManagedObjectContext save];
    
  • 注意上面注释的那行代码,如果不写的话只是把学生加到了这间教室,但是并没有指定这个学生属于哪间教室,所以学生的classRoom属性在数据库中为null

    • 很显然这是不符合常规逻辑了,既然学生与教室已经进行了一对多的关联,那么把学生加到教室自然就应该知道这个学生属于哪间教室

    • 那么如何不写student.classRoom = room也能让学生的数据库表格中的classRoom有对应的值呢?

    • 我们需要在模型文件的关联中设置反转属性

1.3-删除关联

1.3.1-简介

  • 什么是删除关联

    • 当两个表进行关联之后,删除其中一个表的数据对另一个表产生的影响

1.3.2-如何设置删除关联

  • 点击实体对应的关系实体,右方有一个Delete Rule选项

  • 这里以上图中设置学生的关联实体教室为例

1.3.3-Nullify(为空)

  • 如果设置教室相对于学生的删除关联为Nullify,则表示:如果删除教室,学生并不会删除,只是学生的教室为null

1.3.4-Cascade(级联)

  • 如果设置教室相对于学生的删除关联为Cascade,则表示:如果删除学生,则学生对应的教室也会被删除

1.3.5-Deny(拒绝)

  • 如果设置教室相对于学生的删除关联为Deny,则表示:只要教室存在,就无法删除学生,要想删除学生,就要先删除教室

1.4-删除关联总结

  • 模拟真实需求:

    • 删除学生,对应的教室不会被删除
    • 只要删除教室,教室里的学生就删除
    • 我该如何设置
  • 设置教室实体中的删除关联为Cascade(级联),设置学生实体中删除关系为no Action(表示删除学生不会对教室有影响)

16-CoreData之多表关联(存储自定义数据模型)相关推荐

  1. 使用Mongoose populate实现多表关联存储与查询,内附完整代码

    文章目录 使用Mongoose populate实现多表关联与查询 一. 数据模型创建 1. 创建一个PersonSchema 2. 创建一个StorySchema 3. 使用Schema创建对应的m ...

  2. 16、修改数据表的存储引擎

    在前面提到,MySQL 的核心就是存储引擎. MySQL 存储引擎主要有 InnoDB.MyISAM.Memory.BDB.Merge.Archive.Federated.CSV.BLACKHOLE ...

  3. NC65 多表关联 增加自定义参照并且参照数据要根据选择的财务组织过滤

    1.首先定义一个参照类 package nc.pub.jzcm.ref;import nc.ui.bd.ref.AbstractRefModel; import nc.ui.bd.ref.IRefDo ...

  4. jpa多表关联查询_Spring Boot 整合mybatis如何自定义 mapper 实现多表关联查询

    上一篇文章已经介绍了自定义 mapper 实现自定义的方法,其实实现了通过自定义的mapper就可以做多表关联等复杂查询.但是很多朋友还是反馈说没有实现多表关联查询,所以,今天把文章又重新修改了,增加 ...

  5. SpringJPA中多表关联查询并返回自定义dto带分页

    如题:要实现SpringJPA中多表关联查询并返回自定义dto带分页功能,使用SpringJAP的查询时暂时没找到合适的方法,也不想强制去给实体间做关联,于是有如下代码: 一.建立自己需要返回的dto ...

  6. jpa多表联查动态_jpa多表关联动态查询(自定义sql语句)

    项目中,jpa对于简单的数据库操作很方便,但如果多表关联动态查询时,需要自己去写SQL语句拼接查询条件,以下为本人学习的例子. 类似于这种多条件动态查询: 项目用的是springboot 2.1.0. ...

  7. JPA多表关联查询,自定义实体类接收返回的结果集

    在项目中使用jpa进行多表连接查询,基本上返回的都是多张表中的数据.那么问题来了,这关联返回的数据那么多,还是不同表当中的数据,数据库中也没有表和它对应啊,怎么处理呢?返回Object吗 1.教师类 ...

  8. mysql 两张大表关联_MySQL的DropTable影响分析和最佳实践

    [0.前言] MySQL上直接Drop张大表,会有什么影响,能否直接写个 drop table ; 或者 truncate table ; 甚至是delete * from? 如果这张表足够大,比如1 ...

  9. 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解...

    salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解 建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schema ...

最新文章

  1. 说说如何搭建 Nginx 反向代理 Tomcat
  2. 一个基于Spring极度简单的Restful API工具
  3. 聊聊“数据安全与数据治理”那些事
  4. Day 21 20190205 老男孩python学习第21天 内容整理
  5. Linux+Apache+Mysql+PHP典型配置
  6. c/c++教程 - 2.4.2.6 初始化列表语法,初始化列表参数
  7. git 镜像下载和基本使用
  8. java统计系统工具类
  9. sqlmap基本命令
  10. 自己组装电脑后怎么装Win10系统教学
  11. 计算机桌面文件夹不显示不出来的,如何隐藏文件夹别人都看不到
  12. 【51单片机】 火焰传感器用法及代码
  13. 【微信小程序】小程序调起付款码
  14. 1.机器学习的重要性
  15. 关于Java的二十篇技术热文
  16. 漫谈程序猿系列:怎么告别“混日子”
  17. CSS--滚动条样式,鼠标点击小手,文字省略显示
  18. 我的世界服务器怎么无限附魔,我的世界最好的附魔时运和无限,有一种方法让你快速获得!...
  19. 【红日靶场系列】ATTCK红队评估3
  20. vb.net 教程 5-12 绘图实例之统计图4

热门文章

  1. php 计算字符串相邻最大重复数_php查找字符串出现次数的方法
  2. tp3.2php开启事务,Thinkphp 3.2.3 开启调试模式
  3. java arraylist线程安全_ArrayList升级为线程安全的List
  4. idea启动webservice_idea使用springboot的webservice基于cxf
  5. 闪退没由报错_秉承工匠精神,3步定位飞桨报错原因,你也来试试?
  6. 博后招募 | 澳大利亚悉尼大学徐畅老师招收深度学习方向博士后/全奖博士
  7. KBQA相关论文分类整理:简单KBQA和复杂KBQA
  8. 直播预告 | 亚马逊高级应用科学家熊元骏:人类行为理解研究进展
  9. 转向语句 goto语句
  10. 【Linux部署】NTP时间服务器搭建及Linux+Windows客户端使用(一篇学会使用NTP服务)