2014.4.21 数据库设计:冗余一个字段支撑一个功能的巧妙的设计

CRM后期需求修改时,程序设计思维上的亮点:

1.实现录音权限分配功能

A.早期需求:角色都可以听录音。

   处理方式:界面不加限制。

B.中期需求:仅超级管理员可以听录音。

   处理方式:对非超级管理员的角色在界面上加限制。

C.后期需求:超级管理员可以分配听录音的权限给指定的人员,且分配之后72小时有效,过期失效。

   个人计划处理方式:新建听录音的权限表(某人,开始时间,结束时间);新建一套增删改的界面;

   同事计划处理方式:直接在人员表中冗余一个voice_endtime表示听录音的截止时间,在界面上判断:为空或者在当前时间之前都表示“未授权”。

亮点总结:思维跳跃,这样处理简化了很多事情:不必新建表,不需要添加一套增删改的界面,java文件不需要修改(不需要另外去查询权限相关的数据,因为本条数据已经包含了权限标识)减少了此功能的维护成本,简化了对功能的理解。新增一个字段就完成了一个功能,这种高效的方式给我很大意外。

2.审核功能的设计原理(更名审核、延期审核)

   个人计划处理方式:新建审核表(申请类型,原值,更改后的值...),新建一套对应的增删改的界面,同时对不同的申请做通过或拒绝才操作时,续作逻辑处理;

   同事计划处理方式:

在人员表中冗余name_temp字段,存更改后的值,当name和name_temp的内容不一致时,可以筛选出此条数据进行操作,如果点击‘通过’,则将name_temp的值赋给name,‘拒绝’,则将name的值覆盖到name_temp。

在客户表中冗余sign_time_temp字段,原理如上。

亮点总结:避免了引入更多的逻辑,使得代码更精简。也是一个字段支撑一个功能的巧妙的设计!


版权声明:本文为xingxinglaile原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。