多对多关系如何建表?

问题描述

有这样一个关系需要管理:
有多个app,每个app下有多个标签tag,每个tag有多个user。user可能在app1的tag11、tag12下,也可能在app2的tag21、tag22下。
这种情况下如何建立关系表呢?

附加问题:
像这种构建一个标签系统(数据量比较大),业界一般有什么解决方案?

问题出现的环境背景及自己尝试过哪些方法

尝试了搜索答案,基本都是两个模型多对多的示例,没有这种稍微复杂的问题,想了一会儿也是越想越蒙,可能需要看下不同的建议。

相关代码

你期待的结果是什么?实际看到的错误信息又是什么?

期待有个思路或者指点。

阅读 5.5k
3 个回答

一个app,会有多个tag
一个tag,可能属于多个app
一个user,会有多个tag
一个tag,可能被多个user拥有

典型的多对多关系,app和tag多对多,user和tag多对多
app和user没有直接联系,不具备业务含义,所以不用想的太复杂

三张实体表
app、tag、user

两张关联关系表
app_tag_rel,字段id(当前表的逻辑主键)、app_id(app表的主键)、tag_id(tag表的主键)
tag_user_rel,字段id(当前表的逻辑主键)、tag_id(tag表的主键)、user_id(user表的主键)

两个模型多对多的示例 就是你问的问题,不过我搜了下他们都是在数据实体bean这一层面说这个问题,与你所求不符.
这个 可以以appid和userid作为联合主键,查询tag
也就是主要有 appid, userid,tag 这三个字段的表

如果相同或不同的app下的tag是不同的,那么可以不考虑app和user之间的关系,tag存appId,user和tag是多对多关系,所以建一个中间表USER_REL_TAG(userId, tagId)保存user和tag的关联关系

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题