Chinaunix

标题: 关于Hibernate多对多映射关系问题。 [打印本页]

作者: lemonboy    时间: 2007-04-04 11:20
标题: 关于Hibernate多对多映射关系问题。
问题:
    目前我在数据库中有三张表,分别是:User,Project,Role.我希望通过Hibernate将这三张表的关系比较明确的表达出来,但是我不知道如何在映射文件中表示。请教:)
    这三长表是这样的:一个用户可以有多个项目;一个用户在一个项目中可以有多个角色;一个项目可以包含多个角色;一个角色可以被分配给不同的项目和用户。关系很简单,但是说起来很拗口。

USER_ROLE_PROJECT.jpg (10.11 KB, 下载次数: 46)

USER_ROLE_PROJECT

USER_ROLE_PROJECT

作者: wobushiwo    时间: 2007-04-04 17:44
不清楚 用户 和 项目 之间是什么关系?  是多对多关系吗?


那就是: 用户 和 项目 是多对多关系,用户 和 角色 是多对多关系,项目 和 角色 是多对多关系 ?
作者: lemonboy    时间: 2007-04-05 16:46
原帖由 wobushiwo 于 2007-4-4 17:44 发表
不清楚 用户 和 项目 之间是什么关系?  是多对多关系吗?


那就是: 用户 和 项目 是多对多关系,用户 和 角色 是多对多关系,项目 和 角色 是多对多关系 ?


嗯,就是因为这样的三角关系,让我摸不着头脑
作者: wobushiwo    时间: 2007-04-05 20:31
这三个表,从图上看,好像一点关系也没有,根本没看出关系,好像都是独立的,然后三张表直接就用一个

u_p_r_table 连接起来,这显然不对,我怀疑数据建模时就有问题

简单的说,我从这个图上,只知道,三个表是一种"组合"关系? 也就是说 u_p_r_table 的三个列为组合主键

而一个表里,只有主键的话,我相信就是有问题的,或是你描述的有问题

[ 本帖最后由 wobushiwo 于 2007-4-5 20:33 编辑 ]
作者: peream    时间: 2007-04-06 13:47
一点建议:
将项目表分为项目描述+项目属性(内容)两个表。项目描述表中一个项目一条记录,一对多于项目属性(内容)表,属性(内容)表用于存放项目的用户信息(这个需求特定,其实还可以有其他类型的属性),属性表中的userId,roleId多对一于User Role。其实你这个需求中用户本身应该是没角色的,用户的角色都是在项目中体现的。是不是可以理解为角色是项目的角色,而非用户的角色。用户表和角色表也就不用有关联了。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2