IOS CoreData 多表查询(上)
在网上搜索了下,发现只有部分讲解CoreData关系的,但对多表之间的查询并没有相应的介绍。
因此操作自己写了个。
先创建几个表。
1、部门表:department
dp_id Integer primary key
dp_deptname varchar(20) //使用coredata实体创建时用string就行
图:
2、员工表:employee
em_id Integer primary key
em_name varchar(30)
em_易做图 integer // 0:保密,1男,2女,默认为0
em_age integer
em_bankCardid varchar(20) //卡号
dp_id_emfk integer //外键用于关联部门表(1VN)
pt_id_emfk integer //外键用于关联职位表(1VN)
bk_id_emfk integer// 外键用于关联开户行(1VN)
3、职位表:post
pt_id Integer primary key
pt_name varchar(20) //职位名称
dp_id_ptfk integer //外键用户关联部门表(1VN)
sy_id_ptfk integer //外键关联工资等级表(1V1)
4、工资等级表:salary
sy_id integer primary key
sy_scale double //比例 (用于后属算奖金)
sy_level varchar(2) //A,B,C,D..等等级
5、开户银行:bank
bk_id integer primary key
bk_name varchar(50) //银行名称
bk_address varchar(200) //开户地址
表建好了我们来看一表之间的关系。
部门和员工:一个部门有多个员工,而一个员工只能呆在一个部门(如果同时在两个部分哪是兼职或者能人不在讨论范围),因此部门和员工的关系为1对多关系。
部门与职位:一个部门有多个职位,而一个职位只能在一个部门。因此为:1对多关系。
部门与工资,开户银行,没有直接关系。(当然部门可能与奖金有挂勾,这个也不在当前讨论范围)
员工与职位:一个员工只能身处一职(能人,兼职除外),而一个职位可以由有多名员工。(如程序员职位,哪可以多名),因此为多对一关系。
员工与工资等级:一个员工只能对应一个工程等级和比例,而一个等级比例可以由多名员工拥有。因此为多对一关系。
员工与开户行:当公司替员工开卡的时候,哪么一个开户银行就有多个员工。所以这里会有多对1关系。
职位与工资等级:一个职位只配备一个工资级别,同时一个工次级别也只属于一个职位。因为为1对1关系。
职位与开户行没有直接关系。
开户行和工资等级也没有直接关系。
下面来构造测试数据
部门数据:
1 HR //人力资源
2 DEV //开发
3 POD //运维
员工数据:
1 张三 男 20 46326587439043 2 3 2 //张三是开发部的开发工程师
2 李四 女 18 32565443246567 1 2 3 //李四是HR的人事经理
3 欧阳 女 26 14354654656767 3 9 3 //欧阳是运维的大客户经理
4 欧阳 女 22 98734298437433 2 6 3 //同名欧阳是开发部测试工程师
职位数据:
1 行政专员 1 NULL
2 人事经理 1 3
3 开发工程师 2 2
4 架构师 2 NULL
5 项目经理 2 NULL
6 测试工程师 2 1
7 销售代表 3 NULL
8 销售经理 3 NULL
9 大客户经理 3 4
工资等级数据:
1 0.1 D
2 0.15 C
3 0.4 B
4 0.8 A
补充:移动开发 , IOS ,