首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Stackoverflow标签系统,如何

Stackoverflow标签系统,如何
EN

Stack Overflow用户
提问于 2010-08-22 23:53:28
回答 1查看 258关注 0票数 0

好了,现在我可以理解了,so的搜索系统主要是基于标签的,他们使用的标签系统在这方面是一个非常好的系统,但我想为我自己的项目复制它。

现在我可以理解如何使用外键之类的了,但我不太确定它是如何在这里开发的,它们是使用3个表还是2个表等。

他们是如何开发的,你能给我展示一些MySql的例子吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-23 00:07:12

所以把问题和答案看作是一回事--一个Post。下面是一个精简的MySQL等效表:

代码语言:javascript
复制
DROP TABLE IF EXISTS `example`.`post`;
CREATE TABLE  `example`.`post` (
  `postid` int(10) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (`postid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

标签存储在典型的类型代码表中:

代码语言:javascript
复制
DROP TABLE IF EXISTS `example`.`tags`;
CREATE TABLE  `example`.`tags` (
  `tagid` int(10) unsigned NOT NULL auto_increment,
  `tagname` VARCHAR(45) NOT NULL,
  PRIMARY KEY  (`tagid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

将标签与问题/帖子相关联记录在数据库中的多对多表中,因此称为POSTTAGS

代码语言:javascript
复制
DROP TABLE IF EXISTS `example`.`posttags`;
CREATE TABLE  `example`.`posttags` (
  `postid` int(10) unsigned NOT NULL auto_increment,
  `tagid` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`postid`,`tagid`),
  KEY `fk_tag` (`tagid`),
  CONSTRAINT `fk_post` FOREIGN KEY (`postid`) REFERENCES `post` (`postid`),
  CONSTRAINT `fk_tag` FOREIGN KEY (`tagid`) REFERENCES `tags` (`tagid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

POSTTAGS表:

  • 只有两列,并且这些列是主键-这确保了不能有重复,并且任何一方(post或tag)都不能为NULL。
  • 外键要求表中存储的数据必须已存在于相应的外表中...

如果您想查看SO模式,check out the Stack Data Explorer -当您编写查询时,SO模式在右侧可用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3542128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档