我需要允许用户在记录中添加新字段,例如如果存在联系人记录,则用户可能想要添加“SSN”数字字段和“出生日期”日期/日历字段.他们当然会通过用户界面做到这一点.
然后,这些字段应可用于所有联系人记录的输入.
考虑到我的应用程序同时为许多用户运行(不是单个公司部署等),理论上每个人都可以添加自己的自定义字段,将这些信息存储在数据库中的最佳做法是什么,特别是当需要搜索时?
解决方法
我们几乎在所有应用程序/产品中添加了额外的属性/字段支持,以便为用户提供灵活性
就像我们有一个产品类别一样,在类别中,客户可以定义任何产品的附加属性
我们在数据库级别做的是:
类别表有一些额外的列,如:Text1Att,Text2Att …用于文本值支持,Num1Att,Num2Att …用于数值支持,Date1Att,Date2Att …用于日期时间值支持,ID1Att,ID2Att …支持ID从其他表格,你可以添加下拉列表,列表框,…
这里所有列都有String数据类型.
我们在这里存储的是
我们将在这里存储元信息,就像Text1Att Meta一样
SSN;文本框; 50;真,假,空;
字幕;控制类型;最大长度;是必填字段;是否需要自定义验证;自定义验证消息;
出生地;文本框; 100;真;真;无效价值;
数字字段相同…
对于日期元信息将看起来像
出生日期;日历控制;真;真;无效日期;
字幕;日历控件或可以是其他;是必需的;是自定义验证;自定义验证消息;
就像我们有一个产品类别一样,在类别中,客户可以定义任何产品的附加属性
我们在数据库级别做的是:
类别表有一些额外的列,如:Text1Att,Text2Att …用于文本值支持,Num1Att,Num2Att …用于数值支持,Date1Att,Date2Att …用于日期时间值支持,ID1Att,ID2Att …支持ID从其他表格,你可以添加下拉列表,列表框,…
这里所有列都有String数据类型.
我们在这里存储的是
我们将在这里存储元信息,就像Text1Att Meta一样
SSN;文本框; 50;真,假,空;
字幕;控制类型;最大长度;是必填字段;是否需要自定义验证;自定义验证消息;
出生地;文本框; 100;真;真;无效价值;
数字字段相同…
对于日期元信息将看起来像
出生日期;日历控制;真;真;无效日期;
字幕;日历控件或可以是其他;是必需的;是自定义验证;自定义验证消息;
在产品表中做的是添加相同数量的列并且具有数据类型text1Att,..是varchar,num1Att有数字,date1Att有datetime,ID1Att有int
我们在GUI方面做的是:在类别定义页面中添加这些属性并在运行时构建元信息并存储在类别表中
另一方面,当我们在类别中定义产品时,元信息将从类别表中读取和遍历,并像其他字段一样填充在产品定义页面中.
如果您需要进一步的帮助,我可以为您提供图像,以便您更好地了解如何做到这一点.我们是经验和分析,这是非常灵活的方法