最近,公司老大給了這個任務,功能差很少完成了,現將一些通過分享給你們!前端
------------------開始設計時-----------------web
思路:sql
思路:sql語句加上對應的where條件 ,來對查詢到的全部數據作進一步的篩選。json
實現步驟:後端
-----------------------功能完成後的表-------------------------------api
用戶表spa
角色表設計
菜單表blog
關係表 接口
-------------------------開發過程當中發現的問題------------------------------
1. 返回當前用戶的菜單按鈕數據
A方式 經過關係表查詢 , 這種方式查詢不方便 (若是用EF的導航屬性的話,實現起來仍是相對簡潔些的) ,可是作數據修改的時候很方便 ,能夠直接對關係表作操做。
B方式 經過存儲的MenuIds去菜單表中作查詢,這種方式查看查詢方便,可是修改不方便,須要 在 用戶更新角色數據、角色更新權限數據、權限數據更新時,去更新用戶表裏面的MenuIds值 非常繁瑣
我採用的方式:因爲我的比較懶,喜歡數據可以直觀些,也不太知道哪一種方式好,就把2種方式都用了! 可是我的建議,仍是用第一種方式,不要弄複雜了,功能能實現就行!
過後分析總結: A方式 在表裏就不須要加MenuIds、RoleIds字段來處理,直接經過 用戶角色列表,操做關係表 rel_userRole、rel_roleMenu表來處理,因爲咱們現有公司該表沒有作軟刪除的設計,還須要在刪除 單條menuId、roleId值時,去這些關係表裏刪除對應的記錄
B方式 實際上就不須要建關係表了, 而要加上MenuIds、RoleIds字段值,而後經過這些MenuIds、RoleIds去Menu表、Role表中找出對應的記錄就能夠了。 在進行menu表、role表數據進行更新時要找出它所影響的 用戶數據、角色數據是哪些、而後更新這些數據的MenuIds、RoleIds值
2. 菜單表父子結構的數據
A方式 直接將表數據交給前端人員處理成樹形結構
B方式 本身在後端處理這些數據,而後將處理的樹形結構數據返回給前端人員,具體實現方法,我將在個人下一篇博客裏寫出來