首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >保留记录修订

保留记录修订
EN

Stack Overflow用户
提问于 2015-03-13 01:34:21
回答 1查看 68关注 0票数 2

我有一个文章列表和它的修订版。在这种情况下,只有两条规则很重要:

(i)当有人要求对一篇文章进行具体修改时,应该提交。

(ii)当有人请求一篇文章时,只需告知文章标识符,就应交付该文章的最新修订版。

为了获得最新修订的文章列表,我们使用以下视图:

代码语言:javascript
运行
复制
CREATE  OR REPLACE VIEW `only_articles` AS
  SELECT *
    FROM article AS a
    WHERE a.revision = (
        SELECT MAX(ma.revision) AS max_revision
        FROM article AS ma
        WHERE ma.id = a.id
    );

有什么方法可以优化这个查询吗?有什么方法可以避免子查询吗?有没有更好的方法来存储这些修订?

这是表格结构(简化):

代码语言:javascript
运行
复制
CREATE TABLE `article` (
  `ai_id` int(11) NOT NULL AUTO_INCREMENT,
  `id` int(11) NOT NULL,
  `revision` int(11) NOT NULL,
  `title` varchar(45) NOT NULL,
  PRIMARY KEY (`ai_id`),
  UNIQUE KEY `ID_VERSION` (`id`,`revision`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;

以下是一些数据:

代码语言:javascript
运行
复制
ai_id   id      revision  title
1       1       1         'Text one'
2       1       2         'Text two'
3       1       3         'Text three'
4       2       1         'Another Article'
5       2       2         '2nd revision of another article'

预期输出:

代码语言:javascript
运行
复制
ai_id   id      revision  title
3       1       3         'Text three'
5       2       2         '2nd revision of another article'

我不相信这个项目需要一个时态数据库来解决这个问题。这是唯一需要版本控制的表,而且存储的内容太小(每条记录大约2KB )。

似乎许多优秀的内容管理系统和维基(如MediaWiki或Wordpress)都遇到过这种情况。关于它们是如何解决的,以及在这些项目中使用的方法的优缺点,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2015-04-05 05:28:35

Mediawiki有单独的pagerevision表,页表在page_latest字段中存储最新版本的rev_id

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

https://stackoverflow.com/questions/29016551

复制
相关文章

相似问题

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