[英]Database design for unknown number of lists with a variable amount of items on each of them?
[英]Database Design for Unknown number of inputs
我試圖將一些數據存儲在數據庫中,但無法弄清楚如何設計數據庫以實現最高生產率......
用戶可以選擇表單中的條目數。 然后這些條目需要保存在數據庫中。 然而,不知道用戶想要多少條目,例如它們可以是1或100。
如何保存這些數據更好?
我的想法是使用userID存儲數據庫中的條目數,並將輸入放入數組,序列化並將其存儲在數據庫中。
我可能會做以下事情:
+---------------+
| Table: users |
+----+----------+
| id | username |
+----+----------+
| 1 | tanzeel |
| 2 | john |
+----+----------+
+-----------------------------------------------+
| Table: entries |
+----+---------+------------+-------------------+
| id | user_id | entry_name | single_entry_data |
+----+---------+------------+-------------------+
| 1 | 1 | prop1 | ################ |
| 2 | 1 | prop2 | ################ |
| 3 | 1 | prop3 | ################ |
| 4 | 2 | prop1 | ################ |
| 5 | 2 | prop2 | ################ |
| 6 | 1 | prop4 | ################ |
+----+---------+------------+-------------------+
entries
表存儲與user_id
相關聯的每個用戶的n
個條目, user_id
是對表users
的PK(主鍵)列id
的FK(外鍵)引用。 如果要檢索數據,可以按如下方式觸發選擇查詢以獲取特定用戶的條目。
SELECT * FROM entries A
INNER JOIN users B
ON A.user_id = B.id
AND B.id = 1;
如果對於不同的輸入字段類型(如文本描述)有相同的選項,則應使用這樣的方法。
table columns example values
----- ------- --------------
users id, name, password 12, "Johnny", "afad13cf1941"
forms id, user 42, 12
inputs id, form, type, options 6, 42, "checkbox", "Want newsletter?"
如果不同的輸入字段有不同的選項,例如僅屬於復選框的選中狀態,請嘗試以下操作。 但在這種情況下,您必須為要提供的每種輸入類型創建一個表,在此示例中, checkboxes
, textfields
和images
。
table columns example values
----- ------- --------------
users id, name, password 12, "Johnny", "afad13cf1941"
forms id, user 42, 12
inputs form, type, input 42, "checkbox", 8
checkboxes id, text, checked 8, "Want newsletter?", false
textfields id, text 9, "Welcome to that page"
images id, size, caption 10, 720, "The Mona Lisa"
type
列告訴您在哪個表中使用input
列的id下的輸入字段的選項。
請注意,在兩個示例中,每個名為id
列都是主鍵。 在最后一個表中, type
和input
的組合將是主鍵。
可能是nosql-database更適合您想要做的事情。 - 查找例如couchdb。
如果你想/必須使用mysql並且你需要能夠搜索單個值,那就像Tanzeel一樣並分享它。 如果你想要做的是在給定用戶/和/或表單id的情況下獲取整個參數集,你應該最好將序列化數據存儲為varchar或text字段。 如果您選擇序列化,請查看json是否適合您的賬單。 然后你有很多工具來處理你的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.