从一个需求看问题的无限复杂化和简单化
一個需求 如果你一開始的出發點就錯了,那么后續的設計只會非常復雜,而且還會有漏洞,也很難發現,發現了也很難解決。
先看數據結構:
A表 主鍵id? ?其他各種字段不重要? ,重要的就一個字段sort字段
aid1? ?sort=1
aid2? ?sort=1
---------------------
B表? A的關聯表 存A的id? ?還有就是C表的id
aid1? ?cid1
aid2? ?cid2
-------------------
C表? 某種數據
cid1
cid2
------------------
需求是:A表的sort在同一個cid下必須唯一
也就是某個sort例如是1被aid1和aid2占用,但是由于在B表他們是關聯不同的cid所以沒事,如果是同一個cid就不允許。
也就是你入庫的新增更新的時候要check.這個比較簡單,新增的cids和B表同sort關聯的cids比較 只要不一樣就行 ,只要有交集就返回false
Collections.disjoint
?
這里需要注意就是 你更新的時候 由于sort不變那么顯然是要允許的,這是自己和自己比較,這個時候要看新管理的B表我新增的cid有沒有被占用
?
最簡單的做法是拿sort在A表查aid ,然后拿aids在B表查一個List<B>
再對List<B>遍歷,如果aid=更新的aid那么忽略 說明是自己
如果不是? 那么看cid=更新的時候傳遞的cid,只要有命中那么說明就有重復的? 就返回false
將更新的cids轉為一個set就行了。
?
這個問題 如果不是這樣做的 嘗試其他辦法組建各種list然后去重組合各種玩法就復雜了。
?
這題可以思考下。
?
總結
以上是生活随笔為你收集整理的从一个需求看问题的无限复杂化和简单化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一副眼镜多少钱啊?
- 下一篇: 大厂线上案例复盘--代码漏洞