如果您有一个存储问题和答案的表格,例如使用一个名为Parent的额外列。因此,如果一个问题在父级中没有值,那么这是一个问题,如果是,那么它是一个回复,那么你将如何对此进行版本控制呢?
答案 0 :(得分:0)
对于如何保留过去修订文本的完善示例,您可以查看MediaWiki database layout。这是MediaWiki软件使用的数据库布局,许多维基百科(特别是维基百科)运行该软件。具体而言,page
,revision
和text
表是跟踪历史变化所涉及的主要表格。
答案 1 :(得分:0)
有一个问题表和一个单独的答案:
这是SQLite
中的一个例子问题表应包含问题的文本和要加入的id字段:
sqlite3
sqlite> CREATE TABLE questions(id, question);
sqlite> INSERT INTO questions VALUES(1,"What is your name");
sqlite> INSERT INTO questions VALUES(2,"Phone Number");
sqlite> INSERT INTO questions VALUES(3,"name of dog")
sqlite> SELECT * FROM questions;
1|What is your name
2|Phone Number
答案应包含修订号或日期,答案文本,表示询问哪个用户问题的字段(如有必要),以及答案的问题ID。
sqlite> CREATE TABLE answers(question,userid,revision,answer);
sqlite> INSERT INTO answers VALUES(1,100,1,"Alex");
sqlite> INSERT INTO answers VALUES(2,100,1,"1234");
sqlite> INSERT INTO answers VALUES(2,100,2,"5678");
sqlite> SELECT * from answers;
1|100|1|Alex
2|100|1|1234
2|100|2|5678
现在查询两个数据库,确保:仅选择最新版本(GROUP和MAX),并包含未回答的问题(LEFT JOIN)
sqlite> SELECT questions.question, answers.answer, userid, max(revision)
FROM questions LEFT JOIN answers ON questions.id = answers.question
GROUP BY questions.id, userid;
What is your name|Alex|100|1
Phone Number|5678|100|2
name of dog|||
您可以创建一些其他查询,以列出给定问题/用户的过去答案,并列出用户未回答的问题。