精华帖 (0) :: 良好帖 (15) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-13
Jackphone 写道 微软的Access都用过吧,想想它是怎么实现的。
这就像做一个DB Client,不过这种需求倒是让我觉得很奇怪,客户是想自己开发吗? 客户是想省银子。。。 |
|
返回顶楼 | |
发表时间: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中新增一条记录即可。 同时在对应关系中增加 一条 对应关系的记录。 这样既能满足基本的查询,扩展性也是一个提高。但是只能做到查询和显示,如果涉及到业务逻辑要根据这些字段来决定走向,基本不可能。 |
|
返回顶楼 | |
发表时间:2009-01-19
业务逻辑的复杂的产品最好不要太追求可配 而是 可维护 可重构 提供服务的接口定义是最重要的 一定要定义好 如果你是想做一个 配置下今天可以变成美食网 明天改下配置又能变成体育网的 可配应用 你就用纵表吧
|
|
返回顶楼 | |
发表时间:2009-01-20
赞同caicai_45的思路,使用行转列再加个视图,应该能比较好的解决这个问题。
|
|
返回顶楼 | |
发表时间:2009-01-20
这种问题很常见,尤其是做OA或者ERP系统时候。
其实你组织好数据字典就行了,把所有的描述都放到你定义好的表里,然后自己开发底层程序对这些表进行操作,最好再开发一个客户端的小工具来维护这些表就可以了。 我曾经开发过一个系统,只要你在excel表里配置好数据后,然后通过自己编写的工具导入到服务器数据库中,系统基本就可以跑了,类似于一个开发体系,开发一个系统的时候,只要用这个平台基本的东西都可以搭建起来,而且用户也可以自定义表单。。 比如说:有个学籍表,今天客户突然想加个“本人成分”的选项,他自己就可以完全完成,不需要像以往那样,由程序员来数据库里家字段,修改po之类的东西,修改页面。。。。 |
|
返回顶楼 | |
发表时间:2009-02-01
请问写在xml里的,如果要更新岂不是要重启服务器?
这个热加载问题怎么解决? |
|
返回顶楼 | |
发表时间:2009-11-30
动态字段这样的需求在软件项目基本不应该存在,如果真的出现了,那么预期提前做这样的设计,还不如改程序来的直观,所以也会有人说是不能答应的需求之一。
但是对于软件产品,这样的需求很常见也很有用,因为你永远不知道下一个客户需要的字段是什么样的。 |
|
返回顶楼 | |
发表时间:2009-11-30
但是对于不同类型不同表的方案我有点不理解,这样做这样也许存储效率是提高了,但是统计怎么做?还有这样会给开发带来的额外劳动应该也不少吧。
|
|
返回顶楼 | |
发表时间:2009-12-01
一个破问题讨论到现在。
最懒的方式是去redmine看看人家咋着做的。 直接拷贝到你项目里面就行了。 人家已经抽出了个customable之类的东西, 简简单单Include一下就O了 |
|
返回顶楼 | |
发表时间:2009-12-02
理论上,采用META表可以解决自定义字段的问题。(META表是多加了一层抽象:管理元数据的元数据)
但这将带来很多的编码量。(因为要自己写META表访问的DB接口,某种意义上,你在写一个数据库软件)性能也要打个问号。 而在程序上实行DDL查询实在是一个不好的办法--维护数据库将是噩梦。 考虑具体情况,如果自定义字段只是特例不是普遍的数据存储要求,有时候采用预留字段的方式是最快最好的办法。 |
|
返回顶楼 | |