Re: [討論] Key跟Foreign key的關聯性

看板Database作者 (科科彬)時間11年前 (2014/12/16 23:09), 編輯推噓5(507)
留言12則, 5人參與, 最新討論串3/3 (看更多)
前文恕刪 ※ 引述《vity (逍遙盃-佛得)》之銘言: : ※ 引述《drcgs (我心中尚未崩壞的地方)》之銘言: : : Q3:什麻情況下才考慮欄位自動產生流水號? : : 感謝大家教導 : 如果ptt沒ID只有真實姓名, 就需要流水號才能辨認誰是誰, 因為會有同名同姓 : 如果ID可以不唯一, 例如可以有兩個drcgs, 那也要流水號才能分別出兩個drcgs : 流水號 作者ID : 1 drcgs : 2 drcgs : 資料已經有可以辨認誰是誰的就不需要流水號了, 反之就需要 : 一點淺見 建議primary key最好是使用流水號,不要讓pk與商務邏輯有關係,這麼做有兩個原因: 1.避免商務邏輯變動影響到pk, 例如:你使用身分證字號當作pk,萬一有人身分證字號修改 了,你的pk也會跟著異動。由於大部份的資料庫系統都是使用pk當作cluster index, cluster index決定資料在硬碟的實際儲存順序,所以如果你的pk異動的話,資料的儲存 順序也會跟著異動 2.primary key會是index,使用流水號的話,資料型態是integer,效能會比較好 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 58.114.223.34 ※ 文章網址: http://www.ptt.cc/bbs/Database/M.1418742552.A.218.html

12/17 03:34, , 1F
使用流水號的話,當資料有刪出、新增,流水號的連續就很難維
12/17 03:34, 1F

12/17 03:34, , 2F
持了吧?
12/17 03:34, 2F

12/17 08:12, , 3F
一樓的case 連續流水號自己手動編 系統的變key
12/17 08:12, 3F

12/17 09:09, , 4F
不連續會怎麼樣嗎? 影響還好吧
12/17 09:09, 4F

12/17 09:17, , 5F
推~
12/17 09:17, 5F

12/17 10:01, , 6F
不連續的話..會有爆炸的一天~
12/17 10:01, 6F

12/17 10:02, , 7F
也不是這樣講,是爆掉的機率比較大,如果刪除新增很頻繁的話
12/17 10:02, 7F

12/17 12:58, , 8F
怕爆掉就考慮用bigint
12/17 12:58, 8F

12/17 12:59, , 9F
約 10^20筆
12/17 12:59, 9F

12/17 13:03, , 10F
流水號必須連續的堅持實在沒必要,這是技術key而非業務key.
12/17 13:03, 10F

12/17 13:04, , 11F
怕資料量過多爆掉,GoalBased的方法可用.
12/17 13:04, 11F

12/17 14:54, , 12F
受教了!!
12/17 14:54, 12F
文章代碼(AID): #1Ka4iO8O (Database)
文章代碼(AID): #1Ka4iO8O (Database)