使用场景描述:
我们公司内部的一个系统,员工每次创建一个记录,可以给这个记录加标签。其中,有5个标签是固定的,提前设置好的,员工可以改掉它们,还可以添加自定义的标签。这个标签只有他自己能看到。我觉得这个功能需求跟Github的issue中提供的标签系统很像,但是不知道怎么设计数据库结构。
请问,这个场景下,使用MySQL数据库该怎么设计表结构啊?如果有必要,我们可以使用Redis。
请各位大神帮帮忙。
使用场景描述:
我们公司内部的一个系统,员工每次创建一个记录,可以给这个记录加标签。其中,有5个标签是固定的,提前设置好的,员工可以改掉它们,还可以添加自定义的标签。这个标签只有他自己能看到。我觉得这个功能需求跟Github的issue中提供的标签系统很像,但是不知道怎么设计数据库结构。
请问,这个场景下,使用MySQL数据库该怎么设计表结构啊?如果有必要,我们可以使用Redis。
请各位大神帮帮忙。
这种的话,分析实体与实体之间的关系即可。
比如:一个记录可以有多个标签,一个标签可以设置到多个记录上面。很显然这是个多对多的关系。
通常的做法是做个中间表,这样可以存在两者关系建立时的一些扩展数据。当然如果只是记录标签即可,完全可以去除中间表,直接将标签ID存储至记录表。
至于数据格式,逗号分隔的ID串或者JSON格式都行。
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
5 回答3.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
2 回答3.1k 阅读
1 回答2.4k 阅读✓ 已解决
1 回答2.9k 阅读✓ 已解决
其实有大概两张表,一张记录表,一张标签表
记录表中也有 tags 字段,用来存储这个记录的tags字段,多个标签用逗号分隔;
还要一张标签表,有一些预设的标签,当有人在记录中添加标签的时候,如果标签表中已经存在的话,就让用户自己选择,如果不存在的话,就在标签表中插入一条新数据
表的设计大概如下:
记录表 (record)
标签表 (tag)