我们单位是一个信息咨询方面的公司,现在要做一个新闻提交系统,但是我们的客户所属的行业却有不同,所以他们所关注的内容或多或少有些不同,比如A客户需要F1,f2,f3,f4字段,B客户需要f1,f2,f3,f5字段,C客户需要F1,f2,f3字段。那么我们的库结构该怎么设计才能满足以下要求:
1、易于维护和扩展
   比如我们又有了新的客户,新客户需求和已有的客户又不一样。或者是我们的客户合同到期了。我们的库结构该怎么设计才能使程序尽量少的改动。
2、数据冗余尽量少,查询速度快我们想了几个方案但都觉得不太好请各位多出主意,多提意见1、所有客户的新闻文章都保存在一张表里
   那么这张表的字段就得满足所有客户的需要,那么有些字段对某些客户根本就不需要,而且如果有新的需求的话,还需要添加新的字段。
2、每一个客户新闻文章都保存在各自客户的表里
   那么如果一篇文章是一个行业几个客户都需要的话,就要每个客户都要保存一次新闻文章
3、每一个行业的新闻文章都保存在各自行业的表里
   如果一个客户属于不同的行业时怎么办以上方案都不能满足要求,而且主要是不能很好的扩展。
请各位多提意见和方案。

解决方案 »

  1.   

    还有一种办法就是把公用的字段做出固定,把不同的字段合并成一个,里面用xml格式存储。
      

  2.   

    都做成定制的,包括表、表的字段
    1 一个xml文件放表的信息
    2 一个表放显示数据列的信息,可以让用户自己设置要显示的列,不同的用户对同一个表需要的显示  列不一样就可以在这里设置。
    3 一个表设置功能模块,系统从这里动态的加载模块和功能
    每次显示数据的时候都从显示列里取数据,
    当用户增加一个表的时候必须在xml里设置上,这样进入模块的时候就可以从这里取得表的信息。
    定义一个基类包括常用的增删改的功能的操作,特殊需要的时候重载这个基类。
      

  3.   

    标题内容发布日期浏览量都是固定字段
    其他为备用字段  field1  field2 field3 .......field10   (10个不够就用20个)另外建立一个表B来控制自定义字段信息   
    B的字段为用户名及 controlfield1 controlfield2  ......controlfield10controlfield对应新闻表    可以在controlfield里面定义字段标题  也可以根据标题是否为空判断显示新闻字段
      

  4.   

    表:                    字段
       客户                      客户ID 客户名称
       字段                      字段ID 字段名称
       客户与字段的关联          客户ID 字段ID 
       新闻                      新闻ID 客户ID 新闻标题
       新闻内容                  新闻ID 字段ID 新闻字段内容这样吧,动态点的
      

  5.   

    我建义表根本就不存在
    做一个重构表的功能界面
    一个原始表,里面存放哪一种类型对应的哪个表
    代码做一个基类,取出数据库的所有字段生成一个comm类,然后你就可以在数据访问层,业务逻辑层直接填充comm类所对应的数据库字段映射,将其写入库。这样不会有一个多的字段,全由客户来决定
      

  6.   

    http://community.csdn.net/Expert/TopicView3.asp?id=4071048
    http://community.csdn.net/Expert/TopicView3.asp?id=4040085
    哪位帮忙给顶一下贴子