日期:2014-05-18  浏览次数:20474 次

如何实现能够让客户自定义字段。
我现在要做一个多用户系统,准备实现让用户自定义字段的功能,比如用户可以为自己的产品设定公司自己特定的属性。我现在考虑了几个方案,第一是建一个表,提供用户自己修改表字段的显示名字,但是这样字段类型是死的,并且字段数量也是有限的。第二种是给每个用户建一个附加表,然后根据用户的设置直接修改表的结构,但是这会受到一个数据库总表数量的限制,第三种是给每个用户建一个库,但是这样同样会遇到上面的问题。第四种是把行转换成列,但是这会造成编程的难度,同时将会大大的影响性能。

哪位有好的解决方案,既能方便使用(特别是好查询,用户自定义的字段要允许查询),同时又能保证性能。

------解决方案--------------------

预设足够用个数的字段,如:100个字段,F1,F2,F3,F4...

另外单独建表,定义这100个字段的数据类型和标题。

如:

字段名 数据类型 标题
F1 数值 年龄
F2 字符 身份证号

通过程序动态的生成查询或操作表的SQL语句。



------解决方案--------------------
三张表 t_table,t_column,t_value
t_table,t_column, 类似sqlserver 的系统表,t_value用来指定某行某列的值,需要定义5个不同的数据类型的列,数据类型在t_column中指定,
通过存储过程,将t_value 根据t_table,t_column,整理成视图查询.同时,也可以通过存储过程或者触发器来更新视图.
效率的话,我的数据大约是7个表62个列,t_value 3万多一点,查询效率可以接受,(因为动态,也没有加索引)