您的位置:首页 > 数据库

数据库设计漫谈之一

2007-10-10 17:15 190 查看

第一天:
数据库设计的时候某数据项能被计算得出,就尽量用计算的方式,而不要增加字段,带着这种想法设计的数据表如下:

图1

    如上图中有“日产量”,“月累产量”,“年累产量”,但是“月累产量”和“年累产量”能通过计算“日产量”得到,所以设计数据表的时候就不要增加“月累产量”和“年累产量”这两个字段。

简化后的数据表如下

图2
    简化以后再想查询“月累产量”或者“月累耗电量”就得通过视图、存储过程等方式,在减少了工作量的同时又会增加别的工作量。这样做的优点是数据源单一,一切从基础字段计算而来,同时缺点是在减少了数据维护工作量的同时又会增加别的工作量(视图、存储过程等)。从提高正确性和可扩展性的角度看的话,还是简化一下好一点。此时问题似乎告一段落。

第二天:

    突然想到要想得到当前的“月累产量”就得知道期初(初始化)的“月累产量”,在期初“月累产量”的基础之上再加上本月的日产量才能得到当前的“月累产量”。

如此一来就面临两种选择,第一种选择就是另外维护一张表记录期初的“月累产量”,这样做不仅做到简化的作用,反而又加了一张表。

第二种选择就是将已经删除的“月累产量”(当然也包括“年累产量”等等)这些字段都恢复就是回到图1。在初始化的时候设定初始“月累产量”就可以了。在每新增一条产量数据时,计算公式为当前“月累产量”=期初“月累产量”+Sum(日产量)。

造成这种情形的原因是因为我没有想清楚“月累产量”其实也是基础计算公式中的一部分,而非计算结果,做为函数中的自变量当然不能删除。

如果在此基础再计算当前“日产量”在当前“月累产量”(日产量/月累产量)中的百分比,就可以直接用计算字段来表示了。

结论是,分清楚那些基础字段(本例中的“月累产量”是基础字段,要作为公式中的变量来使用)。对于可以通过计算衍生出来的字段就完全可以被简化掉了(本例中的日产量/月累产量)。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐