这样一个三元的多对多关系该如何设计与映射?

探讨了在软件设计中如何将多对多关系实体化为一对多的关系,并提出使用Authority实体来管理Staff、Category与Role之间的权限分配。讨论了这种设计的合理性及查询时可能遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例如下面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做左连接,右连接才能查询出来?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值