【问题标题】:How to develop form interfaces for schema-less databases?如何为无模式数据库开发表单接口?
【发布时间】:2017-08-03 16:33:59
【问题描述】:

如果您使用的是 SQL 数据库,则为 CRUD 操作开发用户界面非常简单。由于定义了模式,很明显您需要在表单中输入多少等。

但是,当使用无模式 NoSQL 方法进行存储时,由于您不确切知道要从存储的数据类型中得到什么,如何构建接口?例如,如果您有一个汽车数据库:

var cars = [

{ model: "BMW", color: "Red", manufactured: 2016 },

{ model: "Mercedes", type: "Coupe", color: "Black", manufactured: “1-1-2017” }

];

如果您需要创建用户界面以便访问和编辑这些数据,那么您不知道需要多少输入,因为没有架构。 UI 开发者如何解决这个问题?

在显示正确的输入之前,您是否有一堆 if 语句来测试记录中是否存在所有可能的属性?

// psuedo code
if ($car.hasKey("model") ) {
  // Show the "Model" input form element
}

if ($car.hasKey("type") ) {
  // Show the "Type" input form element
}

if ($car.hasKey("color") ) {
  // Show the "Color" input form element
}

if ($car.hasKey("manufactured") ) {
  // Show the "Manufactured" input form element
}

【问题讨论】:

    标签: database user-interface crud schemaless nosql


    【解决方案1】:

    如果您需要创建用户界面以便访问和编辑这些数据,那么您不知道需要多少输入,因为没有架构。 UI 开发者如何解决这个问题?

    您可以通过根据功能需求进行推理来解决此问题。需要强调的是,您不要尝试从模式生成表单(自动或以其他方式):即使您手头确实有一个全面、规范和明确的模式,这也会导致糟糕的用户体验。

    相反:您知道您的“用例”是什么(您询问用户),然后您就可以准确地构建那些

    所以问题变成了:

    1. 当您的数据项/实例不包含您所期望的特定对象/字段/键时,您会怎么做?
    2. 当您的实例包含您知道如何处理的字段时,您会怎么做?

    #1 的答案非常简单,基本上与处理架构更改相同:假设/呈现合理的默认值或优雅地处理空值。也就是说:允许您的用户稍后在有意义的地方添加此类字段,并且不要因缺少它们的对象而窒息。

    #2 的答案更复杂,它将在很大程度上取决于应用程序及其环境(例如:它是数据的唯一消费者,还是还有其他消费者需要考虑)。一种选择可能是规范化:您在保存时修剪这些无关的字段,因此随着用户更新对象,它们会随着时间的推移而变得规范化。另一种方法是保留:您保留所有您不知道的字段,并在应用程序的每一层都努力保留它们。

    【讨论】:

      猜你喜欢
      • 2015-02-21
      • 2013-08-29
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      相关资源
      最近更新 更多