2009-01-31 36 views

回答

4

我會先看看MediaWiki did it在運行維基百科的開源項目中。他們都是關於版本控制。

+1

鏈接已損壞:MediaWiki的最新數據庫架構位於:https://upload.wikimedia.org/wikipedia/commons/9/94/MediaWiki_1.28.0_database_schema.svg – eduludi 2017-04-19 12:19:49

1

當我這樣做,一旦我發現它運作良好,有一個像表結構:即可以改變應該進入修訂表(例如內容)

tbl.posts 
    postid(PK) | title | category 
tbl.revisions 
    revisionid(PK) | postid(FK) | authorid(FK) | content | date 

場,事情不會去在帖子表(postid,類別等)中。

從我聽到的最後一個播客中看到,StackOverflow做了類似的事情。

2

我更喜歡在第一次添加新帖子的時候以相同的方式存儲新的(新版本),但是我有一個名爲「childOf」的列,它存儲父帖子的ID,查詢外觀是這樣的:

SELECT * FROM posts WHERE condition=value ORDER BY childOf DESC; 
+1

添加「LIMIT 1」,如果你只想要最近的結果。 – UnkwnTech 2009-01-31 14:23:31

1

以我的經驗,最好是有兩個不同的表用一個不需要進行版本的數據,而另一個與需要進行版本(如Spikolynn中說,他的數據/她以前的回答)。

我只使用一個表時發現的問題是,如果其他表具有指向該版本化表的外鍵,因爲每次更新記錄時主鍵都會更改,則引用將丟失。這導致非常複雜和低效的查詢以恢復數據。

0

Chukc,你可以做些什麼來解決這個問題是通過添加額外的字段,用其作爲外鍵

比方說,你有帖子:

id, revision, name, content 

修訂爲:

id-publish or id-draft or id-revision-N 

然後,您將您的其他表格鏈接到修訂版id發佈而不是id。請記住索引:)

相關問題