.net 如何为最终用户自定义表字段

.net 如何为最终用户自定义表字段,.net,database,database-design,.net,Database,Database Design,我有4个表或实体: 顾客 项目 接触 交易 我希望每个表都有一个单独的字段,名为CODE。此字段将存储每个表的系统生成代码。但是这个系统生成的代码必须由最终用户自定义。最终用户必须有权根据自己的判断自行编写代码 我怎样才能做到这一点?有什么线索吗?如果您想要一个用户可分配的代码标识符,请将其添加到您的ID主键字段并将其分开 这为您提供了一个可靠的“内部标识符”,在其上构建应用程序,同时保留了业务分配某些“业务标识符”的能力 加入整数ID“内部标识符”也比VARCHAR更有效,这是为“业务标识符”

我有4个表或实体:

  • 顾客

  • 项目

  • 接触

  • 交易

  • 我希望每个表都有一个单独的字段,名为CODE。此字段将存储每个表的系统生成代码。但是这个系统生成的代码必须由最终用户自定义。最终用户必须有权根据自己的判断自行编写代码


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

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

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

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

    老实说,您可能无法为业务决定他们希望如何分配代码——因此尝试将代码用作主键将导致应用程序无法向表中添加行,因为分配这些行的规则太复杂/未知/无法在应用程序中进行编码

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

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


    最后一个提示:允许代码为null,以便人们以后可以填写它。与其不正确,不如空白。

    我知道我们无法猜测用户需要什么类型的代码字段。但归根结底,我们可以为最终用户提供一个界面来输入所有必需的值,以组成他/她自己的代码。元数据无法做到这一点。最终,分配代码的业务规则和可变性在数据库和应用程序控制之外——用户和管理员必须分配它们。您可以为列编制索引,但不能使其
    不为null
    或唯一(除非您的数据库允许unique忽略任意数量的null)。我看不出元数据有什么帮助。正如您所说,提供用户界面来输入/编辑代码字段,并在所有搜索结果中显示它。用户会很高兴的。我想知道我们是否可以在数据库中使用元数据来实现这个解决方案。可能吗?那么,您是说Customer表有一个字段(比如说)Customer代码,Item表有一个字段(比如说)Item代码,并且它们彼此不相关吗?您是否有一个表(例如,称为ITEM_CODE)来存储可能分配给ITEM表中记录的所有允许代码?
    create table CUSTOMER (
        ID          integer not null,
        CODE        varchar(32),
        -- other fields
        primary key (ID)
    );