LifeType 中文開發論壇

支援 => 使用與操作 => 主題作者是: bibicall 於 三月 30, 2005, 12:44:30 下午



主題: 關於多使用者PLOG所產生的UID
作者: bibicall三月 30, 2005, 12:44:30 下午
我在我的plog(0.32版)裡刪掉一個使用者
再重新新增一個使用者
結果UID變成不連續
假設我第一次新增的使用者的UID是10
刪掉之後重新新增UID卻是11

是因為資料庫的關係嗎?
我在資料庫裡也把USER 10的相關資料欄位都刪除了

可是新增後還是不連續?
 why?:-S


主題: Re: 關於多使用者PLOG所產生的UID
作者: darkhero三月 30, 2005, 01:27:58 下午
引用自: bibicall
我在我的plog(0.32版)裡刪掉一個使用者
再重新新增一個使用者
結果UID變成不連續
假設我第一次新增的使用者的UID是10
刪掉之後重新新增UID卻是11

是因為資料庫的關係嗎?
我在資料庫裡也把USER 10的相關資料欄位都刪除了

可是新增後還是不連續?
 why?:-S


沒錯...正是資料庫的原因...

資料庫的 auto_increment 欄位會紀錄下一個 auto_increment 的 id 值.
而該值並不會因為你砍掉當時最大的 uid 值改變. 除非你將整個資料表重建 也就是全部清空,該值才會同時重設...

這樣做也是比較好的...

試想: 要是你砍掉一個人.而那個人已經建立的 blog , 寫過文章寫過資料...
而後來的人用了他的 uid , 那系統要如何判斷那篇文章以及哪個 blog 是屬於哪個 uid user的?...
難道讓後來新增的看到或沿用原來 uid 的資料是對於原使用者比較好嗎?....

當然.通常系統在刪除使用者的時候會同步刪掉所有的使用者資料跟文章..

如果你是想知道使用者人數...
也不是看 uid 值來判斷 , 而是應該 select count(uid) from user 這類的方式.


主題: 關於多使用者PLOG所產生的UID
作者: markwu四月 01, 2005, 01:26:35 下午
bibicall:

Darkhero 講得很清楚了,就是這樣沒錯。一般的資料庫設計都不會刪除資料後,重新整理(命名) id 的,這很容易出錯喔!

Mark


主題: 關於多使用者PLOG所產生的UID
作者: TomexOu四月 01, 2005, 11:41:30 下午
auto increatment欄位雖好,但跳了一號就會覺得怪怪的
我了解原po的心境。

這種identity欄位變動並不方便,尤其轉移匯出數據時很危險
要一直受其制約。

當然,它在程式寫作及效能上(index)很有用
因為我db實務上,會有 serial_id及 table_id
前者給程式看的,後者給人看的。


主題: 關於多使用者PLOG所產生的UID
作者: markwu四月 02, 2005, 11:52:51 下午
其實以 blog 的 DB 設計還算簡單!在ERP或財物系統中,資料是絕不可能刪除的啦,只能 把 delete flag 設為  "on" 或是用 roll back (undo) 的方式來做刪除,否則資料會大亂。

Mark