gpt4 book ai didi

database - 为什么不基于 DB schema 构建 UI?

转载 作者:太空狗 更新时间:2023-10-30 01:50:08 25 4
gpt4 key购买 nike

人们似乎避免构建从数据库中提取信息(名称、字段类型等以及关系)的用户界面;他们取而代之的是对具有几乎相同的数据名称和类型等的表单(和表格等)进行硬编码。

我说得有道理吗?

例如,想象一下 MySQL 中的一个枚举字段:为什么不让 UI 在遇到 ENUM 时构造一个下拉列表?为什么要在数据库和代码中放置相同的值?

也许我只是错过了什么;也许有一些项目可以做到这一点——一种可以指向任何数据库的 super 界面,并从中构建一个功能齐全的关系感知用户界面。有吗?

对于这个问题,我可能不太符合 stackoverflow 规范;我总结一下:

  1. 您能否告诉我一个(仅)通过分析数据库模式构建其用户界面的项目?
  2. 为什么这不是一种常用的方法 - 只在一个地方(即数据库)定义数据结构肯定是好的?

谢谢,愿快乐的代码之爱降临在您的 IDE 上。

最佳答案

我想指出的是,上次我检查时,.NET 和 Qt(可能还有其他环境)使使用“数据库感知小部件”(有时简称为数据感知小部件)成为可能,这可能是可用的最佳实用解决方案。我所说的数据感知小部件的意思是小部件本身知道它们直接链接到数据库字段,因此您将拥有一个组合框,它知道它由枚举支持并在运行时直接从数据库中获取可能的值,就像你建议的那样。

这是一个非常简洁的实用程序,使用得当,它可能不会造成任何伤害。它仍然需要您花一些时间在表单上手动布置小部件,但是如果您更新数据库以向该枚举添加新值,则无需重建您的应用程序即可看到它显示在 UI 中。

但是大多数可用性专家在听到您的问题时会畏缩的原因是因为程序员倾向于认为,嗯,为什么不直接从数据库生成整个 UI、表单布局和所有内容?这就是它开始变得非常糟糕、非常快的地方。

假设您有一个简单的 Person 表,包含 first_name、last_name、email_address、street_address、city、state、zip 和 phone_number。您希望根据这些字段自动生成 UI。你如何对字段进行排序?我的意思是,理想情况下,名字和姓氏应该紧挨着。如果您在街道地址之前加上城市和州,那看起来会很傻。因此,如果您使用最快的方法,则必须向表中添加一个新列以指定排序顺序,或者添加一个新表以将每个字段的顺序索引指定为其字段 ID。

如果您想将部分信息单独分组怎么办?然后,您必须将更多特定于 UI 的内容添加到您的数据库布局中(要一般地执行此操作,您将需要一个新表来指定哪些 UI 字段属于哪些 UI 组框)。所以你只解决了两个问题,你的数据库布局已经变得丑陋了一倍,再加上现在当你加载 UI 时不是一个简单的 O(1) 布局操作,你必须做几个数据库查询来找出哪些字段存在并在应用正确的小部件顺序时动态地布置它们......我们甚至还没有处理大小调整(每个字段是否应该是最大尺寸以适应其可能的内容,或者所有文本字段是否应该具有相同的宽度?不会'如果您可以说一些文本字段应该是一个宽度和高度,而一些应该是另一种组合?等等),或者文本对齐,或者格式,或者任何其他需要进一步牺牲的真正常见的基本可用性要求,那不是很好吗?数据库架构的清晰度和简单性。

关于database - 为什么不基于 DB schema 构建 UI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1450235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com