比如,一个总的表是这样的:
private Integer id;
private String name;
private String corpName;
private String department;
private Integer age;
private Integer status;
现在我要弄一个搜索,先选择 公司名称corpName 再选择 部门名称department
那么再建一个公司名称的表,
private Integer id;
private String corpName;
那么,这公司又包含不同的部门,这个部门的表应该怎么弄呢?
假设再建立一个部门的表,怎么让这个表跟公司表关联呢?每个公司有不同部门
这是多对多的关系模型,也就是说:
一个公司有多个部门
反过来,一个部门可能很多公司都有,比如财务部
多对多的关系需要用三张表来表示
公司表:(公司编号、公司名…)
部门表:(部门编号、部门名…)
关系表:(关系编号、公司编号、部门编号…)
这样你要搜一个公司有什么部门就可以通过关系表来关联查询。
@lijy91 如果用1:N显然在答主的业务里面是会造成数据冗余的,比如A公司有C部门,B公司也有C部门,用1:N的方式部门表就会有两条C部门的纪录,这数据冗余完全是没有必要的。公司+部门产生的对应数据可以称作联系属性,联系属性可以在联系表中添加字段来实现。
建议楼主可以先用E-R图来描述你现在的数据库需求,E-R图能帮助你理解各个表的联系和属性,建起表来也清晰很多。