开发者社区> 问答> 正文

关于优化MySql数据表设计问题

遇到一个表设计问题,需求如下:
为了描述人与标签的关系,1个人对应1或n个标签,多个人可对应1个标签,根据人找标签和根据标签找人。

例子:
(人)-- (标签)
小明 -- 诚实、可爱
小丽 -- 可爱
小王、小明 -- 老实
小张、小丽 -- 美丽
小张、小王、小丽 -- 俊俏

此时,
找小明可以找到标签:诚实、可爱、老实
找小明&&小王可以找到:老实
找小张&&小丽可以找到:美丽
找小张&&小丽&&小王可以找到:俊俏
请教:这样的数据表如何设计会很比较合理,查询效率会高些?
本人现在的设计是这样的:
表Person(ID、Name)
表Tag(ID、TagName、PersonIDs)
PersonIDs是Person表中ID的集合,如:[1,2,3,4]这样存储,检索的时候用 like。
如果此处用like,数据较大的时候查询会很慢.

展开
收起
蛮大人123 2016-02-08 11:10:17 2171 0
2 条回答
写回答
取消 提交回答
  • 不要用like查询,把第二张表的id列表拆为多条记录。不怕条数多,就怕每一条要做各种拆分计算

    2019-07-17 18:39:32
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    典型的多对多关系:
    Person (PersonId, Name)
    Tag (TagId, Name)
    PersonTag (PersonId FK1, TagId FK2)
    查询Person 'P1'的Tag:
    1
    查询具有 Tag 'T1' 的 Person:
    2
    查询'P1', 'P2'共同的Tag:
    3
    或者:
    4

    2019-07-17 18:39:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像