我有想过存在文章表,用户输的标签又没办法控制的,这样的话就没办法对标签进行管理.比如现在我想要用标签做一个条件查询就不行.
我有想过存在文章表,用户输的标签又没办法控制的,这样的话就没办法对标签进行管理.比如现在我想要用标签做一个条件查询就不行.
数据库的设计有三大范式,
1.是数据库中的字段是原子的,不能再进行拆分。标签貌似符合,但是标签也有标签单独的属性,如果后期要根据标签单独筛选出列表的话,不方便。
CREATE TABLE `user_label` (
`id` int(11) NOT 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='标签表';
这应该是数据库设计中的多对多关系吧,设计3张表 文章表 标签-文章关联表 标签表, 标签文章表里设置双主键,分别是标签表跟文章表的ID, 查询的时候可以使用join语句直接过滤出想要的结果,还有一种方法 在新的mysql5.7里使用json来存放tag数据 这样可以避免设置多张表 如果答案错误,麻烦指出,如果满意,请帮我点赞 谢谢
15 回答8.4k 阅读
8 回答6.2k 阅读
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
建立一个标签表。标签表里面是标签ID,Name等,创建一个关联表,然后保存ArticleID,TagID,然后输入或者抓取文章的时候提取标签。先判断标签表是否存在已经获得的标签,没有就更新,然后将标签的ID存入关联表,然后加上文章的ID。到时候更新的时候,可以直接通过关联表取出,这样就可以成功显示了。