例如下面3个实体类:
public class Role {
private Long id;
private String name;
}
public class Category {
private Long id;
private String name;
private Category p_category;
}
public class Staff
{
private Long id;
private String name;
}
Staff与Category多对多,Staff与Role也是多对多
画了一个ER图(不知道怎样直接能贴出来,只好放附件),不知道这样的设计是否合理?
我是这么想的:把上面3个实体间的联系类authority实体化,把多对多都转换成一对多,即:
Staff,Category,Role分别与Authority一对多
public class Authority {
private Long id;
private Category category;
private Staff manager;
private Role role;
private Integer status;//0/1,状态是否有效
}
这样通过Authority就能清楚知道谁被授予什么管理员身份(角色)去管理哪个分类,
但是我开始转不过弯了,多对多里,可以直接staff.roles,staff.categories,把多对多拆成与中间表Authority一对多之后,我该怎么才能通过staff查询出对应的roles呢?是不是得自己写SQL做左连接,右连接才能查询出来?
public class Role {
private Long id;
private String name;
}
public class Category {
private Long id;
private String name;
private Category p_category;
}
public class Staff
{
private Long id;
private String name;
}
Staff与Category多对多,Staff与Role也是多对多
画了一个ER图(不知道怎样直接能贴出来,只好放附件),不知道这样的设计是否合理?
我是这么想的:把上面3个实体间的联系类authority实体化,把多对多都转换成一对多,即:
Staff,Category,Role分别与Authority一对多
public class Authority {
private Long id;
private Category category;
private Staff manager;
private Role role;
private Integer status;//0/1,状态是否有效
}
这样通过Authority就能清楚知道谁被授予什么管理员身份(角色)去管理哪个分类,
但是我开始转不过弯了,多对多里,可以直接staff.roles,staff.categories,把多对多拆成与中间表Authority一对多之后,我该怎么才能通过staff查询出对应的roles呢?是不是得自己写SQL做左连接,右连接才能查询出来?
探讨了在软件设计中如何将多对多关系实体化为一对多的关系,并提出使用Authority实体来管理Staff、Category与Role之间的权限分配。讨论了这种设计的合理性及查询时可能遇到的问题。
468

被折叠的 条评论
为什么被折叠?



