Ale*_*lex 5 database asp.net field user-defined-fields
我需要允许用户向记录添加新字段,例如,如果有联系人记录,用户可能想要添加"SSN"数字字段和"出生日期"日期/日历字段.他们当然会通过用户界面做到这一点.
然后,这些字段可用于所有联系人记录的输入.
考虑到我的应用程序同时为许多用户运行(不是单个公司部署等),理论上每个人都可以添加自己的自定义字段,将这些信息存储在数据库中的最佳做法是什么,尤其是当需要搜索时?
tho*_*ter 10
有一个存储字段名称和类型的表.
field_ID INT
field_name VARCHAR
field_type ENUM('int','float','text','richtext')
Run Code Online (Sandbox Code Playgroud)
有一个表,用于存储记录表中条目的链接,字段表中条目的链接以及字段值.
fieldvalue_fieldID INT
fieldvalue_recordID INT
fieldvalue_value BLOB
Run Code Online (Sandbox Code Playgroud)
使其可搜索是另一个挑战 - 您需要从该fieldvalue_value中获取任何可搜索的内容并将其编入索引.这将是特定于数据库的.在MySQL中,您可以将其设为TEXT值并在其上添加MySQL FULLTEXT索引.
我们几乎在所有应用程序/产品中添加了附加属性/字段支持,以便为用户提供灵活性
就像我们有一个产品类别一样,在该类别中,客户可以定义任何产品的附加属性,
我们在数据库级别所做的是:
类别表有一些附加列,如: Text1Att、Text2Att...用于文本值支持,Num1Att、Num2Att...用于数字值支持,Date1Att、Date2Att...用于日期时间值支持,ID1Att、ID2Att...支持其他 ID像您可以添加下拉列表、列表框等表,...
这里所有列都有字符串数据类型。
我们在这里存储的是
我们将在这里存储元信息,例如 Text1Att 元是
SSN;textbox;50;true;false;Null;
字段标题;控件类型;最大长度;是必填字段;是需要自定义验证;自定义验证消息;
出生地;文本框;100;true;true;无效值;
数字字段相同...
日期元信息将类似于
出生日期;日历控件;true;true;无效日期;
字段标题;日历控件或者可以是其他;是必需的;是自定义验证;自定义验证消息;
在产品表中所做的是添加相同数量的列并具有数据类型text1Att,..是varchar,num1Att具有数字,date1Att具有日期时间,ID1Att具有int
我们在GUI方面所做的是:在类别定义页面中添加这些属性并在运行时构建元信息并将其存储在类别表中
另一方面,当我们在类别中定义产品时,元信息将从类别表中读取和遍历并填充到产品定义页面与其他字段一样。
如果您需要进一步的帮助,我可以为您提供图像,以便您更好地了解如何做到这一点。
我们正在经验和分析,这是一个非常灵活的方法
| 归档时间: |
|
| 查看次数: |
5381 次 |
| 最近记录: |