我正在尝试将一些数据存储在数据库中,但无法弄清楚数据库应该如何设计以实现最高生产率......
用户可以选择表单中的条目数。然后这些条目需要保存在数据库中。然而,不知道用户想要多少条目,例如它们可以是1或100.
如何保存此类数据更好?
我的想法是使用userID存储数据库中的条目数,并将输入放入数组中,将其序列化并将其存储在数据库中。
答案 0 :(得分:1)
我可能会做以下事情:
+---------------+
| 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
表为与n
关联的每个用户存储user_id
个条目,这是对PK(主键)列id
的FK(外键)引用表users
。如果要检索数据,可以按如下方式触发选择查询以获取特定用户的条目。
SELECT * FROM entries A
INNER JOIN users B
ON A.user_id = B.id
AND B.id = 1;
答案 1 :(得分: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
的组合将成为主键。
答案 2 :(得分:1)
可能是nosql-database更适合您想要做的事情。 - 查看例如couchdb。
如果你想/必须使用mysql并且你需要能够搜索单个值,那就像Tanzeel一样并分享它。如果你想要做的是在给定用户/和/或表单id的情况下获取整个参数集,你应该最好将序列化数据存储为varchar或text字段。如果您选择序列化,请查看json是否适合您的账单。然后你有很多工具来处理你的数据。