Mysql 未知输入数的数据库设计
我试图在数据库中存储一些数据,但无法确定数据库应如何设计以实现最大生产率 用户可以选择表单中的条目数。然后这些条目需要保存在数据库中。但是,不知道用户需要多少条目,例如,它们可以是1或100 如何更好地保存这些数据Mysql 未知输入数的数据库设计,mysql,database,Mysql,Database,我试图在数据库中存储一些数据,但无法确定数据库应如何设计以实现最大生产率 用户可以选择表单中的条目数。然后这些条目需要保存在数据库中。但是,不知道用户需要多少条目,例如,它们可以是1或100 如何更好地保存这些数据 我想到的是使用userID在数据库中存储条目数,并将输入放入数组中,将其序列化并存储在数据库中。我可能会执行以下操作: +---------------+ | Table: users | +----+----------+ | id | username | +----+----
我想到的是使用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\u id
关联的每个用户的n
条目,该id是表用户的PK(主键)列id
的FK(外键)引用。当您想要检索数据时,您可以按如下方式触发select查询以获取特定用户的条目
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?"
如果对不同的输入字段有不同的选项,例如只属于复选框的选中状态,请尝试以下操作。但在本例中,您必须为要提供的每种输入类型创建一个表,在本例中为复选框
、文本字段
和图像
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
列告诉use在哪个表中可以从input
列的id下找到输入字段的选项
请注意,在这两个示例中,每个名为id
的列都是主键。在最后一个表中,类型
和输入
的组合将是主键。可能是nosql数据库更适合您想要做的事情。-查一查
如果您想/必须使用mysql,并且需要能够搜索单个值,请按照Tanzeel和sharethis的方法进行操作。如果要获取给定用户和/或表单id的整个参数集,那么最好将序列化数据存储为varchar或文本字段。如果您选择序列化,请查看json是否符合您的要求。那么您就有很多工具来处理您的数据。这个模型中的条目名称字段是什么?