我想以Stack Overflow爲例。現在,發佈了一個問題,我們假設他們將以下內容存儲到數據庫中。如何存儲MySQL表的答案
question_ID question_title question_body question_asker question_date
但有兩件事情離開了,評論和答案。所以我的問題是「我如何將它們存儲到數據庫?」我的意思是,我不認爲5個或大概10個類似文章的答案存儲在一個單元中。
我想以Stack Overflow爲例。現在,發佈了一個問題,我們假設他們將以下內容存儲到數據庫中。如何存儲MySQL表的答案
question_ID question_title question_body question_asker question_date
但有兩件事情離開了,評論和答案。所以我的問題是「我如何將它們存儲到數據庫?」我的意思是,我不認爲5個或大概10個類似文章的答案存儲在一個單元中。
的答案和commments將被存儲在不同的表,就像這樣:
數據庫
問題
question_ID question_title question_body question_asker question_date
回答
answer_ID answer_title answer_body answer_asker answer_date question_ID
評論
comment_ID comment_title comment_body comment_asker comment_date answer_ID
下面是使用INNER JOIN的PHP代碼獲取數據的例子:
PHP
$dbh = new PDO('mysql:host=localhost;dbname=stackoverflow', $user, $pass);
$query = 'SELECT * from questions INNER JOIN answers ON answers.question_ID = question_ID INNER JOIN comments on comments.comment_ID = answer_ID';
foreach($dbh->query($query) as $row) {
print_r($row);
}
計算器數據庫的完整的模式:Database schema
您應該閱讀關於關係和數據庫設計。
對於您的示例,數據庫應該存儲用於註釋和答案的其他表。
每個表都應該有額外的列,例如question_id,它存儲了對應問題的關鍵字。
還有另一個問題,有些人認爲它不能「固定」。當你從中間刪除一個帖子/問題時,例如,如果你刪除了第26號,它將會是25,27 ......那麼如果發生這種情況,將會有一個巨大的失序。有沒有辦法自動排序ID列或其他解決方案? –
在你的情況下,如果這個ID 26將被刪除,我們需要轉移所有下一個數字?不,我們仍然可以使用數據。排序結果將相同。 ID只是標識字段,不需要連續。依賴於DB,在生成下一個值時有不同的機制,mysql和sql servrer使用特殊的列類型,oracl使用序列。 – mjpolak
查看http://meta.stackexchange.com/questions/2677/database-schema-documentation-for-the-public-data-dump-and-sede瞭解Stack Exchange架構的詳細信息。 – Mureinik