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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

主键设计原则

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

1.是否要采用GUID作為主鍵

用GUID作主鍵有它的優(yōu)勢與不足.優(yōu)勢是GUID具有唯一性,在任何情況下,可以產(chǎn)生全球唯一的值.這是GUID最大的優(yōu)勢,也方便數(shù)據(jù)導(dǎo)入,比如要求從另一個系統(tǒng)中把數(shù)據(jù)導(dǎo)入進(jìn)來,那么,不用擔(dān)心,導(dǎo)入時,會導(dǎo)致主鍵沖突.不足是GUID值太復(fù)雜.不易記憶,因為有時,難免我們會用記錄的方式,來進(jìn)行記錄判斷.而且數(shù)據(jù)太長,影響數(shù)據(jù)庫效率.GUID的產(chǎn)生不是以一定的次序產(chǎn)生,對于按主鍵物理排序的數(shù)據(jù)庫來說,如果在記錄的前部插入一條記錄,可能會導(dǎo)致后面N次方的數(shù)據(jù)條數(shù)后移.這將導(dǎo)致數(shù)據(jù)插入效率.因此GUID的采用應(yīng)該要慎重.

2.是否要采用自動遞增的方式

對于以前談到的主鍵,要求唯一性,因此大家都用自動遞增的方式.這樣的方式是非常不可取的.可能是為了方便插入記錄時,不必去人為創(chuàng)建主鍵值.以為這樣會方便,其實不是的.帶來的麻煩要遠(yuǎn)遠(yuǎn)勝于這種所謂的"方便".第一:數(shù)據(jù)導(dǎo)入不方便,經(jīng)常會有從另一系統(tǒng)導(dǎo)入數(shù)據(jù)進(jìn)來,自動遞增的主鍵,將不允許原表中的ID被導(dǎo)入進(jìn)來.這會導(dǎo)致主鍵丟失.第二:對于象訂單這樣的有主外鍵的表來說,如果訂單的"主檔表"主鍵是自動生成的.那么在保存一個訂單時,會要求對主檔表與明細(xì)表同進(jìn)行事務(wù)保存,而此時,先要生成一條訂單,然后取出這個訂單自動生成的主鍵,然后再把此作為明細(xì)表的一個外鍵,進(jìn)行明細(xì)的保存.這過程中,將變以復(fù)雜而且不可行.事務(wù)如何處理.訂單主檔表插入記錄后,要是明細(xì)保存時遇到錯誤,主檔表記錄還要進(jìn)行刪除.煩.插入成功以后,還要取出產(chǎn)生的最大值.這將是一個嚴(yán)重的浪費(fèi).記錄多的話會影響速度,而且會存在并行插入.導(dǎo)致獲取的記錄可能是不正確的. 因此在以上的嚴(yán)重問題下,請不要采用自動遞增方式.

3.是否要采用int型作為主鍵

以前大家都采用int型,都是出來主鍵都是數(shù)字導(dǎo)致的.其實我們也明白.并不是只是數(shù)字的東西就是數(shù)字型的.比如電話號碼等.因此對于主鍵,采用int型的優(yōu)勢是速度快,插入,查詢時都可能會比其他的方式快.但我這種快的效果也未必有多明顯,比如以varchar(15)為例,物理主鍵排序的數(shù)據(jù),會自動以主鍵進(jìn)行物理數(shù)據(jù)排序.因此,就算是字符型的數(shù)據(jù),在插入時也會插入到相應(yīng)的物理位置上,也就是說,在插入時可能會影響一些速度.但在以后的查詢中,速度影響不會太明顯.而我要說的,不采用int型作為主鍵,不是說,里面不存數(shù)據(jù).我還是建議大家在主鍵中存放數(shù)字,這樣的排序比較要比夾雜字母的排序來的快,之所以要采用字符型,也是為以后的數(shù)據(jù)導(dǎo)入作準(zhǔn)備,有一天,會要求從其他表導(dǎo)入數(shù)據(jù)時,可以在導(dǎo)入數(shù)據(jù)的主鍵上加一個特定字母來避免與原主鍵沖突.比如在導(dǎo)入數(shù)據(jù)的主鍵前加一個"N"字母.這也就不用擔(dān)心,要求導(dǎo)入數(shù)據(jù)表中的主鍵是數(shù)字型還是字符型了.

4.是否采用編號來定義主鍵

這個問題是老生常談了.主鍵設(shè)計有個原則,就是主鍵不應(yīng)具有任何實際意義.這條其實是非常重要,有人就是覺得編號本身是唯一的,可以作為主鍵用,但可能會為以后帶來麻煩.因為帶有實際意義的字段,還是存在被修改的可能性.而對于主鍵最大的忌諱就是修改主鍵,這可能會導(dǎo)致非常嚴(yán)重的不可估計的后果.比如學(xué)生編號,平時以為永遠(yuǎn)不會修改,但修改的可能還是會存在.

還有一種,表面上是唯一的,但實際上應(yīng)該是允許重復(fù)的.我舉個例子,訂單吧,訂單編號應(yīng)該是唯一吧.是的.可是會存在這樣的情況,一張原來的訂單是因為某個原因,要求訂單作廢.那好給訂單的狀態(tài)標(biāo)識為"cancel".然后允許再次錄入同樣編號的訂單.因此.對于這樣的情況下在,雖然有效的訂單編號只有一個,但在數(shù)據(jù)庫角度會允許編號重復(fù).所以不管如何,還是建議大家為表都建一個沒有任何意義的主鍵,如ID.

因此,總結(jié)一下,我在設(shè)計主鍵,會采用字符型的.不采用自動遞增,在新增記錄時,系統(tǒng)生成主鍵值.一般為全數(shù)字進(jìn)行存入,至于主鍵值的生成規(guī)則,可以按需求進(jìn)行規(guī)則定義.如果沒有特殊的要求,只是為了保持唯一,可以定義一個字段存放一個數(shù)值.在生成時,自動加一.然后再存回去.這也比從一個表中尋找最大值要來的快吧.


轉(zhuǎn)載于:https://www.cnblogs.com/wala-wo/archive/2012/02/16/5119485.html

總結(jié)

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

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

主站蜘蛛池模板: 亚洲一级黄色大片 | 草草国产 | 亚洲xxxxxx | 国产调教视频在线观看 | 香蕉视频污在线观看 | 色中色在线视频 | 女仆乖h调教跪趴1v1 | 成色网 | 国产一区二区伦理 | 9人人澡人人爽人人精品 | 精品国产av无码一区二区三区 | 欧美特级黄色片 | 狠狠做深爱婷婷久久综合一区 | 久久久久久久久97 | 一区在线观看视频 | 尤物在线免费视频 | 快播av在线 | 欧美精品videosex极品 | 视色视频在线观看 | 五月婷婷狠狠干 | 国产男人的天堂 | 中文字幕第一页av | 成人久久久精品乱码一区二区三区 | 妓院一钑片免看黄大片 | 91婷婷 | av一二三四区 | 亚洲专区在线 | a在线天堂 | 被绑在床强摁做开腿呻吟 | 丁香四月婷婷 | 色婷婷亚洲一区二区三区 | 国产精品二区在线观看 | 国产精品视频观看 | 开心激情亚洲 | 日韩少妇内射免费播放 | 亚洲欧美日韩精品在线 | 国产亚洲欧美精品久久久www | 性视频网 | 国产精品VideoSex性欧美 | 中文字幕日产乱码中 | 精品熟妇视频一区二区三区 | 在线播放一级片 | 国产一级免费视频 | 亚洲天堂第一 | 亚洲色图17p| 激情一区| 中文在线字幕免费观 | 黄色网址在线免费播放 | 污污内射久久一区二区欧美日韩 | 国产一区欧美二区 | 奇米影视亚洲春色 | 亚洲精品一区二区三区在线 | 欧美一区二区三区成人 | 亚洲自偷自偷偷色无码中文 | 69成人免费视频 | 精品一区二区久久久 | 久久亚洲精少妇毛片午夜无码 | 日韩精品视频免费看 | 午夜爱爱网站 | 国产精品免费精品一区 | 黄色美女一级片 | 999这里只有精品 | 亚洲又粗又长 | 影视av| 中文字幕电影一区 | 久久永久免费 | 深夜福利视频导航 | 亚洲五级片 | 国产精品麻豆视频 | 永久国产| 亚洲精品天堂成人片av在线播放 | 成人高清免费观看 | 国产精品久久久久精 | 日本 奴役 捆绑 受虐狂xxxx | h在线免费观看 | 午夜av片| 久久中文字幕一区 | 美女视频久久 | 老妇高潮潮喷到猛进猛出 | 成人黄色激情视频 | 老狼影院伦理片 | 神马午夜嘿嘿 | 在线观看a视频 | 欧美三级午夜理伦三级小说 | 97视频播放 | av在线不卡网 | 久久av高潮av无码av喷吹 | 精品一区二区视频 | 激情导航 | 激情文学88 | 色999在线 | 91激情影院 | 伊人网在线观看 | 国产理论在线观看 | 免费三级黄色 | 二级黄色录像 | 先锋影音av资源在线观看 | 香蕉视频一区二区三区 | 青青草原国产在线 |