16-CoreData之多表关联(存储自定义数据模型)
多表关联
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之多表关联(存储自定义数据模型)相关推荐
- 使用Mongoose populate实现多表关联存储与查询,内附完整代码
文章目录 使用Mongoose populate实现多表关联与查询 一. 数据模型创建 1. 创建一个PersonSchema 2. 创建一个StorySchema 3. 使用Schema创建对应的m ...
- 16、修改数据表的存储引擎
在前面提到,MySQL 的核心就是存储引擎. MySQL 存储引擎主要有 InnoDB.MyISAM.Memory.BDB.Merge.Archive.Federated.CSV.BLACKHOLE ...
- NC65 多表关联 增加自定义参照并且参照数据要根据选择的财务组织过滤
1.首先定义一个参照类 package nc.pub.jzcm.ref;import nc.ui.bd.ref.AbstractRefModel; import nc.ui.bd.ref.IRefDo ...
- jpa多表关联查询_Spring Boot 整合mybatis如何自定义 mapper 实现多表关联查询
上一篇文章已经介绍了自定义 mapper 实现自定义的方法,其实实现了通过自定义的mapper就可以做多表关联等复杂查询.但是很多朋友还是反馈说没有实现多表关联查询,所以,今天把文章又重新修改了,增加 ...
- SpringJPA中多表关联查询并返回自定义dto带分页
如题:要实现SpringJPA中多表关联查询并返回自定义dto带分页功能,使用SpringJAP的查询时暂时没找到合适的方法,也不想强制去给实体间做关联,于是有如下代码: 一.建立自己需要返回的dto ...
- jpa多表联查动态_jpa多表关联动态查询(自定义sql语句)
项目中,jpa对于简单的数据库操作很方便,但如果多表关联动态查询时,需要自己去写SQL语句拼接查询条件,以下为本人学习的例子. 类似于这种多条件动态查询: 项目用的是springboot 2.1.0. ...
- JPA多表关联查询,自定义实体类接收返回的结果集
在项目中使用jpa进行多表连接查询,基本上返回的都是多张表中的数据.那么问题来了,这关联返回的数据那么多,还是不同表当中的数据,数据库中也没有表和它对应啊,怎么处理呢?返回Object吗 1.教师类 ...
- mysql 两张大表关联_MySQL的DropTable影响分析和最佳实践
[0.前言] MySQL上直接Drop张大表,会有什么影响,能否直接写个 drop table ; 或者 truncate table ; 甚至是delete * from? 如果这张表足够大,比如1 ...
- 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解...
salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解 建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schema ...
最新文章
- 说说如何搭建 Nginx 反向代理 Tomcat
- 一个基于Spring极度简单的Restful API工具
- 聊聊“数据安全与数据治理”那些事
- Day 21 20190205 老男孩python学习第21天 内容整理
- Linux+Apache+Mysql+PHP典型配置
- c/c++教程 - 2.4.2.6 初始化列表语法,初始化列表参数
- git 镜像下载和基本使用
- java统计系统工具类
- sqlmap基本命令
- 自己组装电脑后怎么装Win10系统教学
- 计算机桌面文件夹不显示不出来的,如何隐藏文件夹别人都看不到
- 【51单片机】 火焰传感器用法及代码
- 【微信小程序】小程序调起付款码
- 1.机器学习的重要性
- 关于Java的二十篇技术热文
- 漫谈程序猿系列:怎么告别“混日子”
- CSS--滚动条样式,鼠标点击小手,文字省略显示
- 我的世界服务器怎么无限附魔,我的世界最好的附魔时运和无限,有一种方法让你快速获得!...
- 【红日靶场系列】ATTCK红队评估3
- vb.net 教程 5-12 绘图实例之统计图4
热门文章
- php 计算字符串相邻最大重复数_php查找字符串出现次数的方法
- tp3.2php开启事务,Thinkphp 3.2.3 开启调试模式
- java arraylist线程安全_ArrayList升级为线程安全的List
- idea启动webservice_idea使用springboot的webservice基于cxf
- 闪退没由报错_秉承工匠精神,3步定位飞桨报错原因,你也来试试?
- 博后招募 | 澳大利亚悉尼大学徐畅老师招收深度学习方向博士后/全奖博士
- KBQA相关论文分类整理:简单KBQA和复杂KBQA
- 直播预告 | 亚马逊高级应用科学家熊元骏:人类行为理解研究进展
- 转向语句 goto语句
- 【Linux部署】NTP时间服务器搭建及Linux+Windows客户端使用(一篇学会使用NTP服务)