業務場景:用戶填一些單據,然后上報,完成審批。單據中有幾個字段是需要統計的,業務并不復雜。
看似簡單的場景,當開發人員拿出PDM設計的時候,我驚呆了,密密麻麻的有接近70張表,每張表都是一百多個字段。開發人員抱怨,花了一周的時間來做數據庫設計,實在是太麻煩了。
設計方案1,我問能不能把單據進行歸類,一類單據設計成一張表,用一個字段區分是那張單據,這樣會減少很多表。得到的回復是,沒法歸類,方案1行不通。
設計方案2,做個Excel模板,審批的時候就在excel上審批,問題是有字段要做統計,行不通。
設計方案3,單據的內容使用JSON格式用blob存起來,如果要做統計的字段,做常用條件查詢的字段,從blob中冗余出來專做統計。
總結:選擇方案3是大大的減少了開發人員的工作量,但對業務分析人員的要求很高,能識別出來哪些字段做分析、統計,哪些字段做查詢。丟失了傳統數據庫設計的很多優點。是設計很多時候都在做平衡,這種設計無疑減少工作量,但對查詢、統計不友好,如果你不在乎工作量,我還是建議做成最傳統的設計。