【问题标题】:How to make table fields customizable for the end user如何为最终用户定制表格字段
【发布时间】:2013-05-06 19:33:48
【问题描述】:

我有 4 个表或实体:

  1. 客户

  2. 物品

  3. 联系方式

  4. 交易

我喜欢为每个名为 CODE 的表设置一个单独的字段。该字段将存储系统为每个表生成的代码。但是这个系统生成的代码必须由最终用户定制。最终用户必须有权根据自己的判断自行编写代码。

我怎样才能做到这一点?有什么线索吗?

【问题讨论】:

  • 我想知道我们是否可以在我们的数据库中使用 METADATA 来实现这个解决方案。有可能吗?
  • 那么,您是说 Customer 表有一个字段(例如)Customer-Code,而 Item 表有一个字段(例如)Item-Code,并且这些都与 UN 相关其他?您是否有一个表(例如,称为 ITEM_CODE)来存储可能分配给 ITEM 表中记录的所有允许代码?

标签: .net database database-design


【解决方案1】:

如果您想要一个用户可分配的 CODE 标识符,请将其添加到您的 ID 主键字段中并与之分开。

这为您提供了一个可靠的“内部标识符”来构建应用程序,同时保留了企业分配某些“业务标识符”的能力。

加入整数 ID“内部标识符”也比 VARCHAR 更有效,这是您为“业务标识符”提供灵活性所需要的。

create table CUSTOMER (
    ID          integer not null,
    CODE        varchar(32),
    -- other fields
    primary key (ID)
);

老实说,您可能无法为企业决定他们希望如何分配 CODE——因此尝试使用 CODE 作为主键会使您的应用程序无法向表中添加行,因为规则分配这些太复杂/未知/无法委派给应用程序中的代码。

确实,代码应该由企业决定——而不是让您尝试和猜测,这只会导致您错了。 PROD001,PROD002 听起来不错.. 但随后他们将决定为某些不同类别的产品更改系统。 您永远无法正确猜测 PAPERPROD0084/12/a,业务将决定哪个是正确的,因此您将不可避免地最终出错。

此外,这还可以让您在业务摸不着头脑的同时构建一个真正的应用程序,并浪费时间弄清楚“业务 ID”系统将如何工作——或者改变它的想法。

最后一个提示:允许 CODE 为空,以便人们稍后填写。最好是空白而不是错误。

【讨论】:

  • 我知道我们无法猜测用户需要什么样的 CODE 字段。但归根结底,我们可以为最终用户提供一个界面来输入所有必需的值以组成他/她自己的 CODE。
  • 元数据做不到。归根结底,分配代码的业务规则和可变性存在于数据库和应用程序控制之外——用户和管理员必须分配它们。您可以索引该列,但不能使其成为 not null 或唯一的(除非您的数据库允许 UNIQUE 忽略任意数量的空值)。我看不出元数据有什么帮助。
  • 如您所说,提供用户界面以输入/编辑 CODE 字段,并显示所有搜索结果。用户会很高兴。
猜你喜欢
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多