我在一个社交新闻网站上工作,用户可以在该网站上发布任何内容,网站为用户提供标签选项,标签可以是"政治"或"娱乐",任何取决于用户的内容,他们可以选择多个标签。。。所以我的问题是如何将帖子的标签存储在数据库中,特定帖子有相应的标签,以及当选择特定标签时如何从数据库中获取所有帖子。。。与此stackoverflow网站相同
帮帮我。。。。
这是一个巨大的问题,但让我们尝试一下:-)
数据库:这是一个N:N关系,所以你需要3个表1) 有id的帖子2) 具有id的标签3) post_id和tags_id的post_tag这将使一个post 可以有几个标签
如何存储:创建一个post_id,然后通过将这个新创建的post_id和分配的post_ids插入post_tags表来添加标签
如何根据标签进行检索:从posts_tags中选择*,其中tags_id=x;
您已经有了一个用于发布的表格,例如
CREATE TABLE IF NOT EXISTS post (
post_id int(11) NOT NULL,
-- more columns as needed
PRIMARY KEY (post_id)
);
你应该有一个有效标签的表格,例如
CREATE TABLE IF NOT EXISTS tag (
tag_id varchar(32) NOT NULL,
PRIMARY KEY (tag_id)
);
添加您的有效标签
INSERT INTO tag (tag_id) VALUES ('Entertainment'), ('Politics');
最后,你需要你的帖子和标签之间的多对多关系
CREATE TABLE IF NOT EXISTS tag_to_post (
tag_to_post_id int(11) NOT NULL AUTO_INCREMENT,
tag_fk varchar(32) NOT NULL,
post_fk int(11) NOT NULL,
PRIMARY KEY (tag_to_post_id),
FOREIGN KEY (tag_fk) REFERENCES tag(tag_id),
FOREIGN KEY (post_fk) REFERENCES post(post_id)
);