用户可能有多个标签和链接。然后,用户将标签(或更多)与链接相关联。一个人如何代表后来的关系?
解决方案可以是btw用户的多对多关系,并与可选属性标签链接。 http://en.wikibooks.org/wiki/Java_Persistence/ManyToMany#Mapping_a_Join_Table_with_Additional_Columns 在这种情况下,btw用户和标签的关系最好是“虚拟”。
我没有看到任何替代方案?
PS:我使用了谷歌书签术语,因为它很适合我的情况。
答案 0 :(得分:6)
如果我的理解是正确的,那么你处于following案例:
取代三元关系
当发生三元关系时 他们应该永远是一个ER模型 在完成模型之前删除。 有时关系可以 由一系列二进制代替 链接对的关系 原始的三元关系。
alt text http://db.grussell.org/co22001%20notes_files/image043.gif 数字 :三元关系示例
- 这可能导致某些信息丢失 - 不再清楚 哪位销售助理卖给了顾客 一种特殊的产品。
- 尝试用实体类型和a替换三元关系 二元关系集。
关系通常是动词,所以 按名称命名新实体类型 关系动词改写为名词。
- 关系销售可以成为实体类销售。
alt text http://db.grussell.org/co22001%20notes_files/image045.gif
图 :取代三元关系
- 因此,销售助理可以链接到特定客户和两者 他们出售一个特定的 产品
- 此过程也适用于更高阶的关系。
这将是我的建议:引入一个新的实体。
答案 1 :(得分:1)
只是
class Label {
...
@OneToOne
private Link link;
}
和/或
class Link {
...
@OneToOne
private Label label;
}
答案 2 :(得分:1)
添加可空的“标签”,用户链接只允许每个链接使用一个标签。如果你只需要一个标签,那就去吧。
如果每个链接需要多个标签,则引入第三个实体,例如
class LinkLabel
{
@ManyToOne
Link link;
@ManyToOne
Label label;
@ManyToOne
User user;
}