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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于主键的设计、primary key

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

主鍵:用于唯一標(biāo)識一個表中一行數(shù)據(jù)。

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

那么關(guān)于主鍵應(yīng)該如何設(shè)計呢,這里我說下優(yōu)缺點:

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

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

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

? ? ? ? 業(yè)務(wù)數(shù)據(jù)的完整性,無法保證。

?

2.用全球唯一標(biāo)識符GUID,來做主鍵。依然是非業(yè)務(wù)主鍵。

優(yōu)點:可以轉(zhuǎn)移數(shù)據(jù)庫。業(yè)務(wù)變化,不影響,不需要更新主鍵。

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

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

?

3.用業(yè)務(wù)字段做主鍵。

優(yōu)點:可以轉(zhuǎn)移數(shù)據(jù)庫,最大化節(jié)省了空間,因為并沒有 多增加一個非業(yè)務(wù)字段做主鍵。業(yè)務(wù)數(shù)據(jù)的完整性,可以保證。避免產(chǎn)生垃圾數(shù)據(jù),銀行就是用業(yè)務(wù)字段做主鍵的,雖然效率低,但是安全。

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

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

?

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

綜上:用哪種方式做主鍵,還是得看業(yè)務(wù)需求,實際情況,實事求是。根據(jù)情況選擇,沒有固定的標(biāo)準(zhǔn)。

轉(zhuǎn)載于:https://www.cnblogs.com/del88/p/6719176.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。