我不确定如何为我有 14 个字段的表单构建数据库,每个字段中有 5 个可能的固定答案。运行时记录数通常在 30 - 200 条记录之间变化。然而,任何超过 100 条记录都是不常见的。可以得到偶尔的400条记录表。
通常会重复给定的条目组合,或者一系列记录将具有 -most- 共同的值,但是无法预测其中哪些可能会在记录插入之间发生变化。
我想避免大量重复,但尽可能保持良好的搜索效率。以下是我提出的模式。
架构 1: 1 个大型 14 字段表。对于小型数据集(<30)可能没问题,但是 200?在安卓上?
模式 2:一些规范化尝试:分解成 14 - 2 个带有外键的表。除了反复试验,不知道如何确定最佳数量。
模式 3:更详细但不难理解。
2张桌子。表 1 有 14 个字段,其中一个主键对应 14 个条目的给定组合。然后,表 2 使用外键根据与表 1 中的组合对应的 FK 记录记录。新组合在运行时出现时填充到表 1 中。
然后使用地图检查输入的记录是否对应于现有组合(也即时生成)。映射键只是字段中离散值的总和* - 有没有更好的方法来生成映射键?我想不出任何方法可以廉价地生成唯一密钥。然后我必须使用条件来区分具有相似总和的组合(if
匹配组合是 13 秒吗?)
*每个字段中的每个状态都对应一个数值。
这个模式(3)是否可能在我规定的范围内很好地扩展,还是一个坏主意/矫枉过正/完全不合适?
有没有更好的方法来解决这个问题?
这是我第一次使用 RDBMS,非常感谢您提供的任何帮助。
编辑:还忘了提到这是一个更大的数据库的一部分,总共有 32 个字段,一些离散的和一些字符串,它们更容易预测或以其他方式处理的变化......