日期:2014-05-20  浏览次数:20732 次

一个项目的设计问题,令我这个菜鸟苦恼!
我这个项目工具叫《无线网络城市覆盖财务工具》,简单功能叙述是这样的:输入一大推原始数据(包括基本信息、财务支出信息、运营费用信息等),
然后要通过复杂的运算公式(客户提供)得出三个表(运维费用、资本支出、收入),还有一个功能就是要以图表的形式来显示出这些三表的数据(我用jfreechart来做)并可以实现随着滚动条(可以是原始表中的一个字段)的改动,来实时的改变图形(也就是三个表)。
  我一开始是这样设计的,数据库分为四个表,分别是原始表、运维费用、资本支出、收入;然后通过用户输入的原始数据再加上运算公式得出那三个表的数据,显示的时候是从数据库里读取。
  但是现在用户说了,在原始信息的资本支出里面,不一定是固定的那么几项,想随时增加(就相当于新增人员模块,客户要求你不要把姓名、年龄这些输入项写死,要可以灵活增加),这样的话,我的数据库字段就定不下来了。
  我现在想是这样设计,原始表中的每一个栏目都再定为一个表,比如资本支出这一栏目就存一个独立的表,字段可以是名称等等,无非就是把原始数据分几个表存放,只是计算的时候麻烦一些,但是问题又来了,我其他的表的字段还是定不下来呀,
我现在是想能不能不把通过计算得出的那三个表的数据存数据库里而直接显示在页面呢?!这样的话本项目就一个表!
还是有什么更好的设计呢,哥哥姐姐要是有时间帮我想想万分感谢

------解决方案--------------------
我有个思路不晓得要不要的

就是把不确定的字段都用以保留字段命名。
然后在设置一张字段配备表。
标明哪个用户的在那张表的做什么的。什么属性,和什么表的什么字段有关联。

然后根据这个配备关系去关联计算数据。
------解决方案--------------------
属于不定列的问题,预留字段的话还是无法完全满足要求

可以用关联表存储,可以确定的字段先形成一个基本信息表a
然后建一个表用于存储扩展属性的定义(属性id 属性名 数据类型)
再建一个表存放值(对象id 属性id 属性值(String))

或者
就是基本信息表,增加修改字段等的时候就拼sql去改表结构(以前有个erp项目用的这种方式)


至于你说的汇总表,需要根据实际情况而定。因为不要汇总表可能导致最终界面展示数据时查询缓慢,一般加上汇总表都是为了查询时方便同时有较好的性能
------解决方案--------------------
探讨
我有个思路不晓得要不要的

就是把不确定的字段都用以保留字段命名。
然后在设置一张字段配备表。
标明哪个用户的在那张表的做什么的。什么属性,和什么表的什么字段有关联。

然后根据这个配备关系去关联计算数据。