我有一个应用程序,它本质上是一个大表单,但该表单的一个页面是可变的,具体取决于用户的选择。大约有 50 个不同的页面,每个页面都有一个特定的列表和可能的用户输入数量。
由于我想将数据存储在 SQLite 数据库中,我应该如何进行?我应该为每个可能的输入创建列,并且在未使用的字段上不存储任何内容吗?或者是否可以使数据库适应正在存储的数据?
我有一个应用程序,它本质上是一个大表单,但该表单的一个页面是可变的,具体取决于用户的选择。大约有 50 个不同的页面,每个页面都有一个特定的列表和可能的用户输入数量。
由于我想将数据存储在 SQLite 数据库中,我应该如何进行?我应该为每个可能的输入创建列,并且在未使用的字段上不存储任何内容吗?或者是否可以使数据库适应正在存储的数据?
这里没有太多可做的,但我会说为表单创建一个表,为每个页面创建一个表,为每个一对多列表创建一个表。
例如,一张发票需要两张表;一个用于发票,一个用于发票行项目。“案卷”或“客户”记录可能包含所有发票。
在FormID
第一个表中创建一个主键,并在表中创建一个外键Pages
。在"Page[n]ID"
那些需要附加到相关页面的内容列表的表中创建一个外键。
考虑您实际需要在查询中使用哪些字段。希望该集合很小或至少可以管理。对于其余字段,将它们存储在单列中。例如,作为键值对的 JSON 字符串。
不,关系数据库不能“适应”可变列。您唯一的其他选择是按照您的建议为每个可能的字段定义一列。然而,这样做不仅一开始会很繁重,而且随着未来表格的修改,维护也将是一场噩梦。