几乎在大部分有管新闻列表项目中,都涉及文章与标签的设计,应该说比较常见、典型的例子。考虑了很多种办法,见识了三四种对应的关系,现在我来说一种最节省数据库资源的文章分类与标签数据库设计的办法
在这里我们要建三张表,Acticle文章信息表,Tags标签表 和 ActMappTags映射表
1、Acticle文章信息表
idtitledescription1重大利好消息来袭,光伏行业有望打破坚冰光伏产业潜伏盘整已有较长一段时间,最新的几项利好消息或许能打破坚冰,促进产业回暖。2华谊兄弟5年来首次收入下滑 如何突破瓶颈还是未知数2月23日晚间,华谊兄弟发布了2016年年报。年报显示,报告期公司实现营业总收入为34.73亿元,较上年同期下滑10.34%,归属于上市公司股东净利润为8.08亿元,较上年同…2、tags 标签表
idtag1能化2股市3经济4公司5要闻3、ActMappTags 映射表
ida_idt_id1112123134245254 、表与表之间的关系图
首先,我们来建表三张表。
CREATE TABLE acticle( id IfNT UNSIGNED PRIMARY KEY AUTO_INCREMENT, title VARCHAR(120) NOT NULL DEFAULT '' COMMENT '文章标题', description VARCHAR(255) NOT NULL DEFAULT '' COMMENT '信息描述' )ENGINE MyISAM CHARSET UTF8 COMMENT '文章表'; INSERT INTO acticle (title, description) VALUES ('重大利好消息来袭,光伏行业有望打破坚冰','光伏产业潜伏盘整已有较长一段时间,最新的几项利好消息或许能打破坚冰,促进产业回暖。'),('华谊兄弟5年来首次收入下滑 如何突破瓶颈还是未知数','2月23日晚间,华谊兄弟发布了2016年年报。年报显示,报告期公司实现营业总收入为34.73亿元,较上年同期下滑10.34%,归属于上市公司股东净利润为8.08亿元,较上年同...'); CREATE TABLE tags( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, tag_name VARCHAR(56) NOT NULL DEFAULT '' COMMENT '标签名字' )ENGINE MyISAM CHARSET UTF8 COMMENT '标签表'; INSERT INTO tags (tag_name) VALUES ('能化'),('股市'),('经济'),('公司'),('要闻'); CREATE TABLE ActMappTags( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, a_id INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'acticle的ID', t_id INT(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'tags的ID' )ENGINE MyISAM CHARSET UTF8 COMMENT '映射表'; INSERT INTO ActMappTags (a_id, t_id) VALUES (1,1),(1,2),(1,3),(2,4),(2,5);