论坛首页 编程语言技术论坛

探讨企业级应用中,如何允许用户增加自定义字段

浏览 25810 次
精华帖 (0) :: 良好帖 (15) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-01-13  
Jackphone 写道
微软的Access都用过吧,想想它是怎么实现的。

这就像做一个DB Client,不过这种需求倒是让我觉得很奇怪,客户是想自己开发吗?


客户是想省银子。。。
0 请登录后投票
   发表时间:2009-01-13   最后修改:2009-01-13
嘿嘿,我09年年初的时候,可能也要做一个类似的项目,大概的需求和LZ的是一致的。

数据库的设计思路是这样的,行列转置。

每个实体的属性的存储,是放到一行记录中的,类似这样Product表设计
ProductID  Name  ProductType
1          MP3   消费数码

行列转置,采用类似key-value的方式来做
Product表,就一个ProductID 字段,然后有一个 ProductField表,
ProductFieldID FieldName  FieldType
1              Name       string
2              ProductType string

然后有一个关系表 Product_Field
ProductID  ProductFieldID value
1          1              MP3
1          2              消费数码

这样如果Product增加一个属性的时候,在ProductField中新增一条记录即可。
同时在对应关系中增加 一条 对应关系的记录。

这样既能满足基本的查询,扩展性也是一个提高。但是只能做到查询和显示,如果涉及到业务逻辑要根据这些字段来决定走向,基本不可能。


0 请登录后投票
   发表时间:2009-01-19  
业务逻辑的复杂的产品最好不要太追求可配 而是 可维护 可重构 提供服务的接口定义是最重要的 一定要定义好 如果你是想做一个 配置下今天可以变成美食网 明天改下配置又能变成体育网的 可配应用 你就用纵表吧
0 请登录后投票
   发表时间:2009-01-20  
赞同caicai_45的思路,使用行转列再加个视图,应该能比较好的解决这个问题。
0 请登录后投票
   发表时间:2009-01-20  
这种问题很常见,尤其是做OA或者ERP系统时候。
其实你组织好数据字典就行了,把所有的描述都放到你定义好的表里,然后自己开发底层程序对这些表进行操作,最好再开发一个客户端的小工具来维护这些表就可以了。

我曾经开发过一个系统,只要你在excel表里配置好数据后,然后通过自己编写的工具导入到服务器数据库中,系统基本就可以跑了,类似于一个开发体系,开发一个系统的时候,只要用这个平台基本的东西都可以搭建起来,而且用户也可以自定义表单。。
比如说:有个学籍表,今天客户突然想加个“本人成分”的选项,他自己就可以完全完成,不需要像以往那样,由程序员来数据库里家字段,修改po之类的东西,修改页面。。。。
0 请登录后投票
   发表时间:2009-02-01  
请问写在xml里的,如果要更新岂不是要重启服务器?
这个热加载问题怎么解决?
0 请登录后投票
   发表时间:2009-11-30  
动态字段这样的需求在软件项目基本不应该存在,如果真的出现了,那么预期提前做这样的设计,还不如改程序来的直观,所以也会有人说是不能答应的需求之一。

但是对于软件产品,这样的需求很常见也很有用,因为你永远不知道下一个客户需要的字段是什么样的。
0 请登录后投票
   发表时间:2009-11-30  
但是对于不同类型不同表的方案我有点不理解,这样做这样也许存储效率是提高了,但是统计怎么做?还有这样会给开发带来的额外劳动应该也不少吧。
0 请登录后投票
   发表时间:2009-12-01  
一个破问题讨论到现在。

最懒的方式是去redmine看看人家咋着做的。 直接拷贝到你项目里面就行了。

人家已经抽出了个customable之类的东西, 简简单单Include一下就O了
0 请登录后投票
   发表时间:2009-12-02  
理论上,采用META表可以解决自定义字段的问题。(META表是多加了一层抽象:管理元数据的元数据)
但这将带来很多的编码量。(因为要自己写META表访问的DB接口,某种意义上,你在写一个数据库软件)性能也要打个问号。

而在程序上实行DDL查询实在是一个不好的办法--维护数据库将是噩梦。

考虑具体情况,如果自定义字段只是特例不是普遍的数据存储要求,有时候采用预留字段的方式是最快最好的办法。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics