否。不要將它存儲在單個逗號分隔值字段中。您將無法對其進行排序並輕鬆使用其值。 嘗試使用類似於以下的結構。
起初可能你會發現這種事情的3-4張表太多了,但你會從中得到很多好處。通過這種方式,您可以非常輕鬆地對選項進行排序,更改值,激活,取消激活或刪除特定選項,甚至可以通過一些簡單的更改來支持多種語言。
此外,您還可以使用兩種不同類型的表格來優化存儲容量,一種用於複選框,僅用於整數值,另一種用於混合值(分別爲checkbox_option_int和checkbox_option_text)。
例如以這種方式,將checkbox_id添加到question_id非常簡單,並選擇數據庫中沒有冗餘數據的所有可能選項。
checkbox_type
id type
1 int
2 text
複選框
id checkbox_type_id
1 1
2 1
3 2
checkbox_option_int
id checkbox_id value label rank active
1 1 1 A 1 yes
2 1 2 B 2 yes
3 1 5 C 4 no
4 1 8 D 3 yes
5 2 1 AA 1 yes
6 2 2 BB 2 yes
checkbox_option_text
id checkbox_id value label rank active
1 3 yes Yes 1 yes
2 3 no No 2 yes
3 3 perhaps Perhaps 3 no
編輯:
您可以保存這樣的答案:
例如
答案
id question_id
1 1
2 2
answer_checkbox
id answer_id checkbox_id
1 1 1
2 2 3
(只有具有值2 =>標籤 「B」 複選框選擇的)
answer_checkbox_int
answser_checkbox_id checkbox_option_int_id
1 2
(僅限值爲1 =>標籤複選框,選擇 「是」)
answer_checkbox_text
answser_checkbox_id checkbox_option_text_id
2 1
這將幫助我定義自定義字段的表。我的問題是關於如何存儲用戶選擇的值。我認爲我們可以使用單獨的表格,這將作爲複選框和checkbox_option_text之間的多對多關係。我在這裏糾正? –
是的,情況就是這樣。如果將選項分爲2個表格,則必須在應用程序層檢查複選框的類型,但這相對容易。否則,爲了簡單起見,您可以合併2個表格。 –