• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

请教下各位,就是在论坛写文章的时候会有个给文章加标签的功能,请问这个数据库应该怎样设计?

php 搞代码 3年前 (2022-01-23) 16次浏览 已收录 0个评论
文章目录[隐藏]

我有想过存在文章表,用户输的标签又没办法控制的,这样的话就没办法对标签进行管理.比如现在我想要用标签做一个条件查询就不行.

回复内容:

我有想过存在文章表,用户输的标签又没办法控制的,这样的话就没办法对标签进行管理.比如现在我想要用标签做一个条件查询就不行.

建立一个标签表。标签表里面是标签ID,Name等,创建一个关联表,然后保存ArticleID,TagID,然后输入或者抓取文章的时候提取标签。先判断标签表是否存在已经获得的标签,没有就更新,然后将标签的ID存入关联表,然后加上文章的ID。到时候更新的时候,可以直接通过关联表取出,这样就可以成功显示了。

数据库的设计有三大范式,
1.是数据库中的字段是原子的,不能再进行拆分。标签貌似符合,但是标签也有标签单独的属性,如果后期要根据标签单独筛选出列表的话,不方便。

<code>CREATE TABLE `user_label` (  `id` int(11) NO<a>本2文来*源gao($daima.com搞@代@#码(网</a><strong>搞gaodaima代码</strong>T NULL AUTO_INCREMENT,  `type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '类型',  `lable_name` varchar(255) NOT NULL COMMENT '标签名称',  `user_id` int(11) NOT NULL COMMENT '创建者',  `create_time` datetime NOT NULL COMMENT '创建时间',  PRIMARY KEY (`id`),) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='标签表';</code>

标签放单独的数据表,帖子数据表放一个tags字段,用|分割,标签中不允许出现‘|’字符。

建立一个表存放标签的 文章表添加一个字段存放标签id 当用户添加标签 检测标签是否重复 存放到标签表里 然后 更新文章表里的标签字段

两张表

  • 建立一个标签表

  • 一个文章标签关联表,字段为文章ID和标签ID
    这样查询的时候只要查询关联表标签对应的文章ID即可。

这应该是数据库设计中的多对多关系吧,设计3张表 文章表 标签-文章关联表 标签表, 标签文章表里设置双主键,分别是标签表跟文章表的ID, 查询的时候可以使用join语句直接过滤出想要的结果,还有一种方法 在新的mysql5.7里使用json来存放tag数据 这样可以避免设置多张表 如果答案错误,麻烦指出,如果满意,请帮我点赞 谢谢

我认@ivanilla说的对,这样的表设计就差不多可用了。也不用多表关联查询标签字段,使用起来也简单。

手上正好有纸,直接画了个简单的E-R图

不知道别乱踩好不好,我的回答虽然没能直接帮他解决,可是也是一个非常好的思路。傻逼绕道,谢谢


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:请教下各位,就是在论坛写文章的时候会有个给文章加标签的功能,请问这个数据库应该怎样设计?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址