2010-04-26 39 views
0

我是設計數據庫的數據庫新手。我將使用SO作爲例子,因爲在已經可以看到的東西上提問更容易,但它不一樣,它只會幫助我理解正確的方法。關係型數據庫:如何設計此表

正如你所看到的,這裏有很多問題,每個問題都可以有很多答案。

  1. 我該如何將答案存儲在表格中?
  2. 我是否應該使用唯一的ID(將其作爲關鍵字)存儲在SAME表中的所有答案,並且只是問題ID的新字段?
  3. 如果有像這裏有100,000個答案呢?我仍然將它們存放在一張桌子上?
  4. 當我想搜索特定問題的答案時,應該使用哪些鍵來最小化搜索時間?

如果在這種情況下有任何區別,數據庫將被讀寫。

+0

嗯,以不需要不必要的連接的方式拆分表格可能不那麼容易...... – 2010-04-26 02:53:04

+0

@Gabriel,再次使用SO作爲例子,我將問題存儲在一個表格中,然後在第二個表格中回答標記他們所屬的問題ID的字段。不知道這是好還是回答你的評論。你能解釋一下你的意思嗎?以不需要不必要的連接的方式拆分表可能不那麼容易。「我不確定你的意思。謝謝。 – donpal 2010-04-26 02:57:29

+0

「我是否應該將所有答案存儲在同一個表中......」我只想考慮將答案分爲不同的表格...... – 2010-04-26 03:00:40

回答

0

您不應該過分擔心標準化和縮放問題 - 只需要以明確的方式解決問題,以便您可以嘗試一下,看看它是如何發展的。 A型模式的「標準」方法應該是提供問題表和答案表。每個答案都屬於一個問題,因此您在答案表中會有一個question_id,它將指出其問題。您可能(也可能應該)在答案表中的該列上創建索引,以幫助優化查找。

問題:question_id,QUESTION_TEXT 答案:因此,例如,你可能會下手answer_id,question_id,ANSWER_TEXT

而要得到答案的一個問題,你會簡單的「從這裏的答案選擇ANSWER_TEXT question_id =?」。

希望有助於作爲一個起點。如果你開始接觸真正龐大的條目,有不同的方法,但正如Marcelo上面提到的,對於現代數據庫來說,10萬個條目真的非常小。

2
  1. 過於廣泛。你基本上在問如何做數據庫設計。獲得一本書。
  2. 是的,您應該將所有答案存儲在一張表中。
  3. 100,000不是一個特別大的數字。
  4. 每個答案都與一個問題相關聯,所以它應該在問題表的主鍵上有一個外鍵。搜索就像限制那個鍵一樣簡單。