日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于主键的设计、primary key

發布時間:2023/12/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于主键的设计、primary key 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主鍵:用于唯一標識一個表中一行數據。

外鍵:用于建立兩個表之間的關系,A表中有一列是B表中的主鍵,那么A表中這列的數據就受到B表主鍵的約束。

那么關于主鍵應該如何設計呢,這里我說下優缺點:

1.用自動增長字段作為主鍵,這樣的主鍵可以稱之為 非業務主鍵(或邏輯主鍵、或代理主鍵),就是說這列與業務無關,僅僅是作為主鍵而設計。

優點:自增長字段往往是integer bigint類型,最多占8個字節。索引與外鍵 所占用的空間連帶減少,增刪改查 效率高。業務變化,不影響,不需要更新主鍵。

缺點:無法轉移數據庫,比如把表中的一批數據 轉移 或 附帶到 另一個表中,那么由于是自增長字段,那么會導致無法轉移,因為另外一個表可能已經存在部分數據,會造成主鍵沖突。自增長字段的缺陷。

? ? ? ? 業務數據的完整性,無法保證。

?

2.用全球唯一標識符GUID,來做主鍵。依然是非業務主鍵。

優點:可以轉移數據庫。業務變化,不影響,不需要更新主鍵。

缺點:字符串較長,占用的空間較多,如果用于外鍵的話,會導致連帶其它表占用的空間連帶增多。A表中有一列是B表中的主鍵 ,那么A表中的這列也是需要有個索引的,即存儲空間會連帶增多。效率變低。

? ? ? ? 即除了正常業務字段外,還是弄個字符串字段來專一保存這個全球唯一標識符,造成存儲浪費。業務數據的完整性,無法保證。

?

3.用業務字段做主鍵。

優點:可以轉移數據庫,最大化節省了空間,因為并沒有 多增加一個非業務字段做主鍵。業務數據的完整性,可以保證。避免產生垃圾數據,銀行就是用業務字段做主鍵的,雖然效率低,但是安全。

缺點:如果業務發生改變,有可能需要修改主鍵,舉例:國家A表用身份證號做主鍵,然后其他很多表中的身份證號這列都是來自 身份證表A中的主鍵(即外鍵),那么如果身份證號升級,比如從1代升級到2代,那么

? ? ? ? 那么連帶的表的外鍵 的索引 通通都得發生變化,效率極低 因為會連帶更新一串用到這個外鍵的表,可見用業務字段做主鍵的話,你得保證 主鍵不經常變化。

?

==============

綜上:用哪種方式做主鍵,還是得看業務需求,實際情況,實事求是。根據情況選擇,沒有固定的標準。

轉載于:https://www.cnblogs.com/del88/p/6719176.html

總結

以上是生活随笔為你收集整理的关于主键的设计、primary key的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。