【问题标题】:SQLite and variable columnsSQLite 和变量列
【发布时间】:2013-07-09 02:02:21
【问题描述】:

我有一个应用程序,它本质上是一个大表单,但该表单的一个页面是可变的,具体取决于用户的选择。大约有 50 个不同的页面,每个页面都有特定的列表和可能的用户输入数量。

由于我想将数据存储在 SQLite 数据库中,我应该如何进行?我应该为每个可能的输入创建列,并且在未使用的字段上不存储任何内容吗?或者是否可以使数据库适应正在存储的数据?

【问题讨论】:

    标签: android android-sqlite store


    【解决方案1】:

    这里没有太多可做的,但我会说为表单创建一个表格,为每个页面创建一个表格,为每个一对多列表创建一个表格。

    例如,一张发票需要两张表;一个用于发票,一个用于发票行项目。 “docket”或“customer”记录可能包含所有发票。

    在第一个表中将FormID 设为主键,在Pages 表中设为外键。将"Page[n]ID" 设为那些表中的外键,在这些表中有您需要附加到相关页面的内容列表。

    【讨论】:

    • 我是 SQLite 的菜鸟,但如果我理解正确,您建议创建肯定存在的表,然后将它们(通过键)“连接”到其他表代码应该根据需要创建吗?那么这意味着“变量”表只有在程序使用时才会被创建?
    • 表格从一开始就存在,但如果用户选择不需要记录,则可能不会为特定页面添加记录。这有意义吗?
    • 完整的感觉!这正是我需要的!谢谢,现在我就去学习更多的 SQLite,我需要它!
    【解决方案2】:

    考虑您实际需要在查询中使用哪些字段。希望该集合很小或至少可以管理。对于其余字段,将它们存储在单列中。例如,作为键值对的 JSON 字符串。

    不,关系数据库不能“适应”可变列。您唯一的其他选择是按照您的建议为每个可能的字段定义一列。然而,这样做不仅一开始会很繁重,而且随着未来表格的修改,维护也将是一场噩梦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-10
      • 2019-03-02
      • 2019-10-05
      • 2020-02-12
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      相关资源
      最近更新 更多