代码之家  ›  专栏  ›  技术社区  ›  Colin Gislason

处理频繁更改的数据窗体的选项

  •  7
  • Colin Gislason  · 技术社区  · 16 年前

    我正在寻找不同的方法来处理这个问题,希望避免未来的技术债务。以下是我提出的一些选择:

    • 为每个版本创建一个新对象、UI和一组表。这显然是最幼稚的方法。
    • 继续将所有字段添加到同一个对象和DB表中,但根据窗体版本显示/隐藏它们。经过几次修改后,这将变得一团糟。
    • 构建表单定义,然后动态地构建UI,并将数据存储为类似于字典的格式(例如JSON/XML或面向文档的数据库),我认为这对于这个应用程序的范围来说太复杂了,尤其是对于UI。

    3 回复  |  直到 10 年前
        1
  •  2
  •   Ben Hoffman    16 年前

    首先,我将谈谈你的上述解决方案,然后我将给出我的答案。

    • 为每个 版本将需要新的 无法动态加入 新表和包含新 柱很容易。这看起来很明显,这真的是一个错误的选择。
    • 你提到的添加
      对的还有,不管你说什么 使用的最大值是多少 一行中可以包含的字节数。这可能成为另一个问题。
    • 我认为第三个选择是 不将新列数据存储在 提高速度。我想这是 你最好的选择
    • 你没提到的唯一选择 正在将所有数据存储在1中 作语法分析这个选择会使它 反对。

    如果非要我这么做:

    1. 第一张桌子有 列ID(种子)、名称, 输入类型,创建日期, 会称之为tbInputs。
    2. 5列,ID,输入\ ID(带FK到 tbInputs.ID)、Entry\u ID(带FK to 主/原始表)值,以及 创建日期。从FK到 主/原始表允许您 查找附加到的项目 什么表格条目。我会称之为
    3. 如果你不 那你打算用那张桌子吗 我会使用一个简单的表来跟踪创建日期,创建者ID, 以及表格id。
    4. 一旦你有了这些,你就只需要创建一个动态窗体,把当前活动的所有输入都拉回来并显示出来。我会把所有的动态控件放在一个类似 <div>
    5. 创建窗体以添加或删除 没有多少保养 每年要做的工作。

    我认为这个解决方案似乎不是最有说服力的,但如果执行正确,我确实认为它是您最灵活的解决方案,需要最少的技术债务。

        2
  •  2
  •   Johannes Rudolph    16 年前

    您将有一个表,其中一列包含XML,以及该XML应用于的年份/版本。

    基于模式生成UI代码基本上是个坏主意。如果不需要大量验证,可以选择简单的可编辑表。

        3
  •  0
  •   Colin Gislason    16 年前

    对于这个特定的应用程序,我们决定像处理一个不断增长的表单一样处理这个问题。由于形式的性质,这似乎比更明确的分离更自然。我们将有一个年的地图->应用程序中确实需要知道哪些数据是哪一年的数据的部分的字段。

    对于UI,我们将为每年的表单创建一个新页面。在这种情况下,动态表单创建过于复杂。