0x01
但做的模型設計往往是設定字段滿足當前的需求,缺乏足夠的經驗,即使為以後的功能預留出位置,也無法考慮周全。
比如,剛開始做使用者表,關於刪除使用者的功能,一開始預想的是直接刪除使用者。等到所有功能做完了,這乙個版本結束了,在下乙個版本迭代中,想要給資料庫新增乙個刪除status欄位,刪除的時候改status=0,用於標記刪除,代替直接刪除使用者,以記錄歷史使用者資料。
但是看了一遍**,如果加多乙個刪除的status欄位,需要考慮這個庫的各個使用的地方,是不是需要在增刪改查的時候加入status的判斷,會特別頭疼。
0x02
最近的乙個需求是我需要做乙個資料庫資料刪除的功能,但是刪除完又想有資料回滾、刪除資料記錄的功能;最好的應該是有乙個刪除狀態,但是這個專案的所有功能邏輯其實我也並不是特別清楚,如果加乙個狀態,需要先弄清80個使用該錶的地方,再進行判斷是否需要改動,工作量實在是複雜。
反而是在刪除的時候同時插入另乙個複製的表,很快就能做完回滾的功能。
前期的模型設計,後期要改動,成本實在是太大了。所以應該盡量在專案開始初期就做好資料庫模型的設計,還有功能的預留位置,就算現在版本比較簡單,也需要考慮以後迭代更新的時候可能會新增這個功能。盡量設計好乙個足夠健壯健全的框架,以免迭代的時候還要回頭改動框架,那樣成本就太大了。這也是與經驗有關,但不要以經驗不足為藉口就不做了。經驗不足,調研輔助,思考為主。
0x03
另乙個點是,在加狀態來判斷幾種狀態之前,先考慮一下,能不能從資料庫中的其他欄位中判斷出狀態的不同。
比如說,原本我這個表中只存廣東人,所以所有模型設計都是依靠廣東人的。之後需要加乙個需求,東北人的資料也要接入這個表中。
其實加乙個**欄位是最科學的方法。但是如果可以從其他字段,比如戶籍、戶口、住址、口音這些地方來判斷**,那麼更容易做的是用其他欄位來判斷,加乙個**字段實在是成本太高了,而且相比現有字段判斷,顯得更加雞肋。
—————————做完了狀態判斷的流程後,發現有乙個字段可以很簡單的判斷,於是把之前的改動都刪除掉,再兩三句**改完。當改完的時候有點想哭,記下來,長點腦子。
專案 RBAC模型與許可權設計
一.rbac模型 什麼是rbac rbac 全稱 role based access control 基於角色的許可權訪問控制,作為傳統訪問控制 自主訪問,強制訪問 的有前景的代替受到廣泛的關注。在rbac中,許可權與角色相關聯,使用者通過成為適當角色的成員而得到這些角色的許可權。這就極大地簡化了許...
遞迴的概念與模型設計
在計算機程式設計的道路上,決心修行時,第乙個想到的起點卻是遞迴,也許這就是程式設計思想的一種默契。遞迴是程式設計中乙個強有力的工具,但是大多數人不會自然而然地想到遞迴。遞迴可以方便我們解決某些問題,我們需要考慮在哪些情況下使用遞迴。乙個問題要採用遞迴遞迴方法來解決問題時,必須符合以下3個條件。1 解...
系統分析與設計 軟體專案過程模型與規劃
簡述瀑布模型 增量模型 螺旋模型 含原型方法 的優缺點 瀑布模型 優點 降低軟體開發的複雜程度,提高軟體開發過程的透明性,提高軟體開發過程的可管理性 推遲軟體實現,強調在軟體實現前必須進行分析和設計工作 以專案的階段評審和文件控制為手段有效地對整個開發過程進行指導,保證了階段之間的正確銜接,能夠及時...