1. 程式人生 > >2014.4.21 資料庫設計:冗餘一個欄位支撐一個功能的巧妙的設計

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欄位,原理如上。

亮點總結:避免了引入更多的邏輯,使得程式碼更精簡。也是一個欄位支撐一個功能的巧妙的設計!