2017-03-05 92 views
2

假設我有一個表單,我必須問用戶一些問題。示例問題如下所示。mysql數據庫設計的最佳實踐

您是否在家工作或在家外工作?

和答案

  1. 沒有
  2. 我不想回答

如果用戶選擇然後我不得不問這樣

另一個問題

工作類型?

答案是:

  1. 全職
  2. 兼職
  3. 其他

現在,如果用戶選擇其他我必須表現出對一些文本輸入的EditText

F或者這個場景設計數據庫來存儲答案的最佳實踐是什麼。 我在想2個選項

  1. 答案的一列[用','分隔]。例如:是,專職是,其他一些文字沒有找到答案
  2. 三欄[每列包含答案的一部分。例如:

    enter image description here

哪個選項是很好的做法???如果我有深度5/6/7或更多的條件問題的類型,那麼我如何在表中存儲數據。對於這種情況,有沒有更好的方法或好的做法? 在此先感謝。

回答

1

我想你應該分開的問題:你需要爲每個問題創建ID,然後

  1. 添加答案
  2. 與相關問題添加列

像這樣

date,user_id,question_id,answer,answer_position, related_question 
xxx yyy  1    yes 1    5 

此模式對分析更有效。 ,你將不會受限於未來的變化

0

根據問題的其餘部分 - 答案和關係,有不同的方法。

也許你想嘗試一個表,如:

id | questionid | order | text | moreinfo | 
----------------------------------------- 
1 |   1 |  1 | Yes |  0 | 
2 |   1 |  2 | No |  0 | 
3 |   2 |  1 | Full time | 0 | 
4 |   2 |  2 | Part time | 0 | 
5 |   2 |  3 | Other  | 1 | 

在上述例子中,我已經包括questionid。這將涉及存儲在另一個表中的問題,或者可能在此表中存在的問題,具體取決於您可能已經存儲了任何其他問題的方式。這與以下內容類似。

id | parentid | order |  text  | moreinfo | 
----------------------------------------- 
1 |  0 |  1 | Are you working? |  0 | 
2 |  1 |  1 | Yes    |  0 | 
3 |  1 |  2 | No    |  0 | 
4 |  2 |  2 | Great! How much? |  0 | 
5 |  4 |  1 | Full time   |  0 | 
6 |  4 |  2 | Part time   |  0 | 
7 |  4 |  3 | Other    |  1 | 

在該上面的例子中,我已經包含的parentId該表中內部指母體的答案,這導致繼發的答案。這種結構在概念上是相似的,並且在字段名稱和它的哲學意義上僅有不同。

如果我有深度5/6/7或更多的條件問題類型 我如何在表中存儲數據。對於這種情況,有沒有更好的方法或者更好的做法?提前致謝。

第二個表格示例本身可以嵌套5/6/7/1000倍深,因爲它是一個自引用表。您可以根據需要添加其他字段!

還請閱讀規範化數據庫結構,它會打開你的眼睛,給你更多的想法。以下是一個示例鏈接:

http://www.guru99.com/database-normalization.html