`
tear
  • 浏览: 61013 次
  • 性别: Icon_minigender_2
  • 来自: 广西
社区版块
存档分类
最新评论

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

阅读更多
例如下面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做左连接,右连接才能查询出来?
  • 大小: 7 KB
分享到:
评论
2 楼 tear 2007-08-14  
假如Authority表是这样一个结构(id,staff_id,role_id,category_id,status),要查用户A被授予的角色(一个用户可以同时分别被授予多个不同的角色去管理多个分类),使用关联查询时,我只能想到这么写(假设中间表Authority已经实体化,并分别与Role,Category,Staff建立一对多关联):

List roles;
//用户Staff A
Iterator authoritys=A.authoritys.iterator();
if(authoritys.hasNext()){
	Authority auth=(Authority)authoritys.next()
		roles.add(auth.role);
}


如果分别使用many-to-many来对Role,Category,Staff三实体进行关联(不实体化联系Authority),直接A.roles就实现用户A的角色查询了,如上面拆成一对多之后感觉好麻烦,我想不出怎样写才能更简便的查询出来
1 楼 抛出异常的爱 2007-08-13  
ruby有一个关系叫作 (多态)表
他的中间表Authority只有四个字段
id           =>主键
staff_id     =>用户对应id
Authority_id   =>其它业务对应的id(role_id,Category_id)
Authority_type =>对应的表的名子。

那么就可以通过Authority表找到一一对应的关系表了。

相关推荐

    基于 Pytorch 的深度学习三元组抽取

    深度学习三元组抽取是自然语言处理领域中的一个重要任务,主要目标是从文本中抽取出实体以及它们之间的关系,形成(头实体,关系,尾实体)的三元组形式,为知识图谱的构建和增强提供数据。PyTorch 是一个流行的深度...

    数据库原理ER模型PPT学习教案.pptx

    多对一关系与一对多相反,多个实体可以关联一个实体;多对多关系则允许每个实体关联多个其他实体。 存在依赖(Existence Dependencies)表明一个实体的存在依赖于另一个实体的存在。例如,在银行系统中,账户的存在...

    通过将关系短语映射到知识库来确定关系语义

    这样的进步对提高自动文本理解的准确性有直接影响,这对于开发智能问答系统、数据库填充、实体关系网络构建和其它自然语言处理应用来说,是一个重要的里程碑。 总之,通过将关系短语映射到知识库,本研究不仅提高了...

    E--R图转换成关系模式规则与例题

    - 三元或更多实体间的关系转换为一个关系模式,包含所有实体的码和联系的属性,组合码由所有实体码构成。例如,“讲授”联系转换为“讲授(课程号,教师号,书号)”。 4. 自联系处理: - 同一实体集内的自联系...

    owl本体关系数据库存储模式设计

    例如,在学校本体中,如果存在一个“学生”类继承自“人”类的情况,可以在类关系表中记录这一关系,而不是简单地将其作为一条普通的三元组存储。这样,在进行查询或推理时,系统可以直接访问类关系表,而无需遍历...

    MYSQL数据库的逻辑设计

    学生可以选修多门课程,课程可以被多名学生选修,教师可以讲授多门课程,课程可以由多个教师讲授,单位有多个教师,教师只属于一个单位。这涉及到1:N和M:N联系的转换。在关系模型中,这些联系会被表示为额外的表,如...

    数据库系统概论之关系数据理论.pdf

    《数据库系统概论》第六章主要探讨了关系数据理论,这是理解关系数据库设计核心的一章。关系数据理论提供了一种规范化的逻辑设计方法,旨在解决如何构造适合特定问题的数据模式,以及如何组织关系数据库的问题。 ...

    关系数据理论4(共24张PPT).pptx

    关系模式R,F>是关系模式的一个简化定义,可以看作是一个三元组。 函数依赖:函数依赖是数据依赖的一种,指的是一个关系中属性之间的相等关系。例如,学生关系中,学号(SNO)决定姓名(SNAME)和系名(SDEPT),记为 SNO...

    数据库设计与ER模型综述.pptx

    例如,仓库和零件之间的多对多联系可以通过创建一个库存表来表示,包含仓库ID、零件ID和库存量作为字段。仓库和职工的一对多联系则可以通过在职工表中添加仓库ID字段来实现。对于职工的领导关系,可能需要一个额外的...

    数据库关系理论ppt

    一个关系模式可以定义多个具体的关系,这些关系是模式的具体实例。例如,关系模式ScInfo (Sno, Sname, DeptName, DeptLoc, Cname, Grade) 描述的是学生选课信息,其中"Sno"和"Cname"共同构成主键,保证了数据的唯一...

    关系数据库理论ppt

    为了解决这些问题,我们需要通过规范化将关系模式分解为更小的、无冗余的部分,每个部分只包含一组相关属性和它们之间的函数依赖,这样可以提高数据库的效率和一致性。 总的来说,理解关系数据库理论对于构建高效、...

    数据库课程ch ER模型PPT学习教案.pptx

    - 映射基数描述了通过特定联系集,一个实体可以与另一个实体关联的数量关系,如一对一、一对多、多对一和多对多。 - 一对一关系表示每个实体仅与另一个实体关联一次;一对多关系中,一个实体可以与多个实体关联,...

    数据库系统概论课件:第6章 关系数据理论1.ppt

    - **多值依赖**:表示一个属性的值依赖于另一属性集的值,但不保证一对一的关系。例如,一个学生可以选修多门课程,一门课程可以被多个学生选修,因此,Xh→kc 不成立,而需要更复杂的依赖如 xh,kc→cj。 4. 数据...

    数据库系统概论课件第六章关系数据理论.ppt

    - **多值依赖 (MVD)**:如果在某个关系中,一个属性的值可以决定另一个属性集合的多个值,就存在多值依赖。 4. **关系模式的简化表示** 通常我们用三元组 `R(U, F)` 来简化表示关系模式,其中 U 表示属性集合,F ...

    数据库系统概论之关系数据理论.pptx

    规范化是将关系模式分解成多个较小的关系模式,每个模式只包含一组相关属性,以满足特定的范式。例如,将学生、系、系主任、课程和成绩的关系模式分解,可以分别创建学生关系、系关系、课程关系和选课关系,这样可以...

    基于Petri网的分布式多媒体同步技术研究.pdf

    通过这些Petri网的概念和扩展,文档描述了如何构建一个适应通信网络技术发展的多媒体同步模型,该模型可以抽象地表示多媒体元素间的时序关系,并能够有效处理分布式多媒体系统中的同步问题,以支持QoS保证。这样的...

    数据库系统概论课件:ch6关系数据理论.ppt

    一个关系模式由五个元素组成,即关系名R、一组属性U、属性所来自的域D、属性到域的映射DOM以及一组数据依赖F。在实际应用中,关系模式通常简化为三元组R(U, F),其中F表示数据依赖。 关系模式的评价主要关注其可能...

Global site tag (gtag.js) - Google Analytics