有這樣乙個需求:
有m個使用者公用n個檔案,乙個使用者可能會用到多個檔案,乙個檔案可能被多個使用者使用;
如果某個使用者離開,那這個使用者就不再使用任何檔案;如果某個檔案沒有任何使用者使用,就要刪除該檔案;
已知某個使用者正在使用某些檔案,要求管理這個使用者離開的時候,到底要不要刪除他原來使用的檔案。
這個問題對搞伺服器開發的人來說可能就是幾十分鐘或者幾分鐘的事兒,但這對我乙個ios開發者來說,可就沒那麼容易了。
想了半天搞不定,最後還是向搞伺服器的朋友們請教才弄出了個解決方案。。。
我只能說,資料庫這麼強大,不補一下不行啊~~
簡單記錄下解決方案:
用資料庫建3張表搞定。
一張使用者表:記錄userid username
一張檔案表:記錄fileid filepath
一張使用者-檔案關係表:記錄使用者跟檔案的對應關係 userid-fileid
其中關係表是個m對n的關係表
使用者表和檔案表都是直接增刪查改就行;
關係表要注意下:當某個使用者使用某個檔案的時候,在關係表中插入一條 userid-fileid的資料,當這個使用者不再使用這個檔案的時候,刪除這條資料
所以關係表的內容大概是
userid fileid
1 1
1 2
1 3
1 4
2 1
2 4
。。。。。。
如果要查userid為i某個使用者用到了多少檔案,只需要查關係表中所有userid=i就可以了;
如果要查fileid為j的某個檔案被多少使用者使用,只需要查關係表中所有fileid=j的就可以了;
那麼當userid為i某個使用者要離開的時候,他用到的那些檔案應不應該刪除呢?
那就需要以下幾個步驟:
1,查詢出這個使用者用到了哪些檔案,將檔案fileid快取起來
2,刪除關係表中所有userid=i的資料
3,遍歷快取起來的fileid,再次查詢關係表,查詢該檔案還被多少人使用;
如果這時候使用的人數為0,那說明該檔案已經沒使用者使用了,可以刪除,
如果使用人數不為0,則說明該檔案還有其他使用者使用,不能刪除。
搞定~~~
邏輯搞定了,剩下的就是敲**
ios上用sqlite,fmdb貌似是最好用的了吧~fmdb的文件寫的也很不錯
我用fmdb把上面的邏輯寫了個demo,放在這裡
有什麼問題,歡迎討論~~
(如果覺得不錯,別忘了點個star)
Sqlite 資料庫 FMDB 簡單使用
1 通過sqlite建立資料庫。首先匯入框架 建立資料庫的路徑 nsstring path nssearchpathfordirectoriesindomains nsdocumentdirectory nsuserdomainmask yes lastobject data.sqlite 第乙個引...
FMDB資料庫的簡單操作
一直以來對資料庫的操作都感覺很麻煩,每次封裝fmdb的工具類都是一件讓人很頭大的事情,在這記錄一下它的一些常用操作,很方便實用 首先,是常用的資料庫語句 增 insert into 表名 欄位1,欄位2 values 值1,值2 刪 delete from 表名 where 字段 值 查 selec...
資料庫操作 使用FMDB
ios中原生的sqlite api在使用上相當不友好,在使用時,非常不便。於是,就出現了一系列將sqlite api進行封裝的庫,例如fmdb plausibledatabase sqlitepersistentobjects等,fmdb 是一款簡潔 易用的封裝庫,這一篇文章簡單介紹下fmdb的使用...