2013-05-06 39 views
2

我有4个表或实体:如何使表中的字段定制为最终用户

  1. 客户

  2. 项目

  3. 联系

  4. 交易

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

我该如何做到这一点?任何线索?

+0

我不知道,如果我们可以使用元数据在我们的数据库来实现这个解决方案。可能吗? – 2013-05-06 11:10:10

+0

那么,你说客户表中有一个字段(比方说)客户码,和项目表中有一个字段(比方说)项目码,而这些都是联合国的相互关系? 您是否有一个表(称为ITEM_CODE),其中存储了可以分配给ITEM表中的记录的所有允许的代码? – 2013-05-06 14:50:50

回答

1

如果您想要一个用户可分配的代码标识符,请将它与您的ID主键字段分开,并将其添加为&。

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

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

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

说实话,你可能无法决定企业愿意怎样分配码 - 所以试图用代码作为主键会使它不可能为你的应用将行添加到表,因为分配这些规则的规则太复杂/未知/不能委托给应用程序中的代码。

真的,CODEs应该由企业来决定 - 不是为了尝试&第二次猜测,这只会导致你的错误。 PROD001,PROD002听起来不错..但是他们会决定改变系统以适应不同类别的产品。 你将永远无法正确猜出PAPERPROD0084/12/A,其业务将决定什么是正确的,所以你将不可避免地最终被错。

而且,这可以让你建立一个真正的应用程序,而企业划伤它的头&浪费时间搞清楚“业务ID”系统是如何工作 - 或者改变它的想法。

最后一个提示:允许CODE为空,以便人们可以稍后填写它。最好让它空白而不是不正确。

+1

我知道,我们无法猜测用户需要什么样的CODE字段。但在一天结束时,我们可以为最终用户提供一个界面,以输入所有需要的值来组成他/她自己的代码。 – 2013-05-06 11:05:13

+0

使用METADATA如何? – 2013-05-06 11:10:41

+0

元数据无法做到。在一天结束时,分配代码的业务规则和可变性位于数据库和应用程序控制之外 - 用户和管理员必须分配它们。您可以对列进行索引,但不能使其为'非空'或唯一(除非您的数据库允许UNIQUE忽略任何数量的空值)。我没有看到元数据如何提供帮助。 – 2013-05-06 12:42:31