做软件要尊重事实
"原始数据具有不可删除性,是要忠实、全面的记录历史的"。
"做软件,一定程度上的数据冗余是有必要的,数据要真实、全面、准确、原始、有效"。
以上是米老师对这次讨论的一个中心总结,又是一个上午的会,讨论的是关于软件设计中数据的价值,以及数据该如何处理、存储。
这段时间YH收银系统的维护工作,最多的问题便是数据问题,数据的真实可靠问题被提上了桌面,做任何一款商业软件乃至其他类别软件,数据都是十分重要的,数据就是财富,数据就是生命。数据的丢失,意味着财富的流失;数据的错误,也说明软件生命的终结。
数据,我们一直不曾过多关注的数据,这次确实让我们为之一振。
现在做软件,很多的都在与数据库(DataBase)打交道,数据就以一定的逻辑关系存储于数据库中。这次有关数据的讨论会,着重说了一下,数据库中级联(更新、删除)、事务、主外键(表关系)。
1.表间级联(删除、更新) ,工具的使用要掌握好尺度、平衡,也就是把握好工具的应用范围,那么使用得当,确保了数据的一致性,但是却也能导致数据变动,进而软件出现数据差异。
2.事务,确保数据操作的完整性。
3.主外键关系,这是由表间级联引起来的一个问题,讨论期间 坤哥给我们看了一个行健数据库系统,我们看了人家是如何灵活处理表之间关系,如何将变动提前设计到数据库中去的。
我们平时设计数据库,都是确定好每个表的主外键,直接将相关联的两个表绑在一起,然而,行健中提出,单独建一个表用来存储相关联表之间的对应关系,进而达到了相关联表之间的解耦。
我觉得这样设计,很是巧妙,并且很好的处理了以后可能发生的数据表对应变动。唯一多出的一点,也就是维护数据库的工作量大了一些。
还有一点是比较重要的,如何处理原始数据(类似log一类的数据),如何在设计数据库的时候很好的将原始数据需要的数据元素找全,确保原始数据的有效性、真实性。
这次讨论会,使我重新认识了软件设计中数据的重要性,以及这些重要的原则性约束。其实这些原始数据在以后的数据挖掘中将发挥非常重要的价值,无可替代。