亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        數(shù)據(jù)庫主鍵設置探討

        2013-06-25 08:45:14劉敏
        中國信息化·學術版 2013年3期
        關鍵詞:主鍵數(shù)據(jù)庫

        劉敏

        【摘 要】數(shù)據(jù)庫應用程序涉及到計算機軟件應用的方方面面,很多人在開發(fā)數(shù)據(jù)庫應用程序時受到數(shù)據(jù)庫表主鍵設置的影響,導致開發(fā)過程遇到不少的麻煩,本文就關系型數(shù)據(jù)庫的表主鍵設置的必要性、類型、策略等方面作出探討。

        【關鍵詞】數(shù)據(jù)庫 主鍵 主鍵設置策略

        【中圖分類號】TP3 【文獻標識碼】A 【文章編號】1672-5158(2013)03-0122-02

        “工欲善其事,必先利其器”這句話表明工具的重要性,其實也反映了在一個工程項目中基礎工作的重要性。同樣,在關系型數(shù)據(jù)庫應用程序開發(fā)中,我們首先要解決的問題就是數(shù)據(jù)庫的設計,而其中表主鍵設置的好壞更是決定著程序設計的方便性及效率性,它是一個繞不開的問題。

        一、主鍵的必要性

        有些人在設計數(shù)據(jù)庫時糾結要不要設置主鍵,那就先讓我們理清以下兩點:

        1.什么是主鍵

        主鍵,又稱主碼。數(shù)據(jù)庫表中對儲存數(shù)據(jù)對象予以唯一和完整標識的數(shù)據(jù)列或屬性的組合。一個數(shù)據(jù)列只能有一個主鍵,且主鍵的取值不能缺失,即不能為空值(Null)。

        2.主鍵的必要性

        從主鍵的定義可以看出,主鍵可以唯一標識一行記錄,所以可以確保執(zhí)行數(shù)據(jù)更新、刪除的時候不會出現(xiàn)重復及張冠李戴的錯誤。另外主鍵的值不能為空,主鍵往往與外鍵共同作用,用以保證數(shù)據(jù)表信息的完整性。而且這些限制可以通過數(shù)據(jù)庫系統(tǒng)做到,不需要另外編寫程序來完成,所以為表設置相應的主鍵是必要的。

        二、自然鍵還是代理鍵好

        有些人會告訴你,你應該使用自然鍵來作主鍵,也有人說你應該總是使用代理鍵作主鍵,所以首先要確定用自然鍵還是用代理鍵來作主鍵的問題?,F(xiàn)實的情況是,自然鍵和代理鍵有各自的優(yōu)點和缺點,并且沒有哪一種是完美的,換句話說,你要根據(jù)你自己在軟件設計中的需求來選擇。

        1.自然鍵

        自然鍵也叫業(yè)務主鍵。在數(shù)據(jù)庫表中把具有業(yè)務邏輯含義的字段作為主鍵,稱為“自然主鍵(Natural Key)”。自然鍵,這是一個主鍵的屬性,它也往往是實體的一個現(xiàn)實中存在的屬性,它的好處是,它們已經(jīng)存在,你并不需要另外引入一個新的“非自然”值到你的數(shù)據(jù)架構中,而且這種主鍵見名識義;另外用戶通常都是對業(yè)務相關的字段進行查找(比如員工的工號,書本的 ISBN No. ),自然鍵能夠實現(xiàn)聚集存放,對于索引及查找的效率是比較高的。

        它的缺點也是來自它的業(yè)務含義,這種主鍵信息能有效地耦合到數(shù)據(jù)庫中,業(yè)務主鍵一旦改變則系統(tǒng)中關聯(lián)該主鍵的部分的修改將會是不可避免的,并且引用越多改動越大,例如:學生退學,記錄刪除,學生又回來復讀,要用回以前的學號;又如原來學號是數(shù)字型的,現(xiàn)決定改為字符型,你首先必需修改學生基本信息表中“學號”的數(shù)據(jù)類型,然后還要修改所有關聯(lián)表中的外鍵數(shù)據(jù)類型,所以對于以后可能要變動的屬性作為主鍵,對于眾多關聯(lián)表來說維護起來十分麻,畢競沒有任何一個業(yè)務是永遠不變的。

        2.代理鍵

        代理鍵也叫邏輯主鍵。在數(shù)據(jù)庫表中采用一個與當前表中邏輯信息無關的字段作為其主鍵,稱為“代理主鍵”。它是引入一個新的數(shù)據(jù)項作為主鍵,這是一個沒有業(yè)務含義的主鍵。例如在學生基本情況表中,我們新增一數(shù)據(jù)項studentID,它不是學生的學號,在這種情況下,學生學號已經(jīng)成為一項非鍵列。

        代理鍵強調(diào)主鍵不應該具有實際的意義,它剛好與自然鍵是的定義相反,例如訂單表中的“訂單編號”字段,而這個字段符合自然鍵的定義,它在訂單信息表中具有唯一性,能夠唯一標識記錄,但是不建議用“訂單編號”字段作為主鍵的,因為具有實際意義的字段,具有“意義更改”的可能性。現(xiàn)實情況是,原先輸入某一訂單,后來因某一原因該訂單作廢,并重新生成訂單,而且訂單號要保持原訂單號一致,這樣原來的主鍵就面臨危險了。代理鍵的好處是對于數(shù)據(jù)表的維護處理方便,當要增加記錄時,生成代理鍵的值是一個新的鍵值,與原有數(shù)據(jù)不存在沖突問題。當然,缺點是,這種主鍵在一定程度增加了表的復雜度。

        相比代理鍵而言,使用業(yè)務主鍵的主要原因或好處是,增加邏輯主鍵就是增加了一個業(yè)務無關的字段,而用戶通常都是對于業(yè)務相關的字段進行查找(比如員工的工號,書本的 ISBN No. ),這樣我們除了為邏輯主鍵加索引,還必須為這些業(yè)務字段加索引,這樣數(shù)據(jù)庫的性能就會下降,而且也增加了存儲空間的開銷。所以對于業(yè)務上確實不常改變的基礎數(shù)據(jù)而言,使用業(yè)務主鍵不失是一個比較好的選擇。

        因此,使用自然鍵還是代理鍵,主要取決于系統(tǒng)規(guī)模的大小及日后的變動性,對于小項目,以后擴展不會很大的話,也允許用實際唯一的字段作主鍵的,否則,使用代理鍵更利于適應未來不確定的變化。

        三、采用單列鍵還是復合鍵作為主鍵

        所謂復合主鍵即聯(lián)合主鍵,是通過兩個或者多個字段的組合作為主鍵。

        使用復合主鍵的主要原因和使用業(yè)務主鍵是相關的,在業(yè)務主鍵只使用一個字段不能解決問題情況下,那就只能使用多個字段了。例如在學生成績管理系統(tǒng)中,有幾個表分別是學生(學號,姓名,…)、課程(課程編號,課程名稱,…),學生成績(學號,課程編號,學期號,…),在學生成績表中使用學號不夠用了,要加上課程號,另外還要加上學期號(可能存在同一課程兩個學期開設情況)。這種使用復合主鍵方式存著在幾點弊端:

        1.數(shù)據(jù)存儲冗余:隨著這種主從關系的延伸,必然導致數(shù)據(jù)庫中需要重復存儲的數(shù)據(jù)變大,當主表本身就是復合主鍵時,關聯(lián)的從表中要重新存儲該主鍵字段一次,存在多級關聯(lián)時就更明顯。原因是:復合主鍵導致不良的外鍵。

        2.SQL命令復雜化及效率降低:當存在復合主鍵時,SQL語句長度增加;同時,聯(lián)合主鍵自動生成聯(lián)合索引,需要將主表的多個字段與子表的多個字段關聯(lián)以獲取滿足某些條件的所有詳細情況記錄。

        3.程序復雜度增加:需要設置及傳遞多個參數(shù)。

        使用復合鍵的人通常有兩個理由為自己開脫,而這兩個理由都是錯誤的。其一是主鍵應當具有實際意義,然而,讓主鍵具有意義只不過是給人為地破壞數(shù)據(jù)庫提供了方便。其二是利用這種方法可以在描述多對多關系的連接表中使用兩個外部鍵來作為主鍵。

        由此可見,單列主鍵還是比較簡單的,特別是對于提高連接和篩選操作的效率而言有優(yōu)勢。

        四、幾種主鍵策略的選擇

        主鍵設置存在多種策略可以選擇,我們可以對比下幾種常用策略的優(yōu)缺點,以利于我們做出選擇。

        1.編號作主鍵

        此方法就是采用實際業(yè)務中的唯一字段的“編號”作為主鍵設計,也就是自然鍵方式,在各種實體信息中都存在相應編號,如學生編號,公民身份證編號,員工編號等,在小型的項目中是推薦這樣做的,因為可以使項目比較簡單化,但在使用中隱含一些麻煩,它的缺點存在兩個方面:

        —當業(yè)務要求編號可以重復時造成存儲不了的情況

        對涉及編號數(shù)據(jù)定義改變時需要大量修改關聯(lián)表引用的外鍵的定義這個問題在上面自然鍵中已作出說明。

        2.自動編號主鍵

        這種方法就是新建一個ID字段,自動增長,眾多數(shù)據(jù)庫系統(tǒng)都可以定義自動增長型主鍵,方便且滿足主鍵的原則。優(yōu)缺點如下:(下轉59頁)

        ■系統(tǒng)集成問題

        由于主鍵生成脫離了系統(tǒng)中的自動生成方法,在與其他系統(tǒng)集成時,很難保證自制表中的最大值與導入后的保持一致。在導入時,為了區(qū)分新老數(shù)據(jù),可能會在老數(shù)據(jù)主鍵前統(tǒng)一加一個“o”(old)來表示這是老數(shù)據(jù),但又會遇到數(shù)字型問題。解決辦法是,在“自制加一”中把主鍵設為字符型的,字符型主鍵可以應付很多我們意想不到的情況。

        五、GUID主鍵

        采用GUID主鍵,優(yōu)點是:主鍵值可以自動生成,也可以程序生成,GUID具有唯一性,在任何情況下,可以產(chǎn)生全球唯一的值。當要求從另一個系統(tǒng)中導入數(shù)據(jù),鍵值不可能重復,可以解決系統(tǒng)集成問題。缺點是:GUID值太復雜,不易記憶,而且數(shù)據(jù)太長,影響數(shù)據(jù)庫效率及增加存儲空間。

        小結:

        由此可見,主鍵的設置沒有固定方式,選擇什么樣的主鍵原則還是要根據(jù)項目的情況:項目的大小,項目的擴展情況,項目的數(shù)據(jù)系統(tǒng)的合并或變更情況,主要原則是考慮數(shù)據(jù)處理的方便性及效率性。

        猜你喜歡
        主鍵數(shù)據(jù)庫
        基于Go 實現(xiàn)的分布式主鍵系統(tǒng)研究
        “三師共管”患者服務平臺構建
        基于外鍵的E-R圖繪制方法研究
        基于MySQL數(shù)據(jù)庫實施完整性約束的研究
        數(shù)據(jù)庫
        財經(jīng)(2017年15期)2017-07-03 22:40:49
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫中表設計原則分析
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        永久免费av无码网站yy| 亚洲一区二区三区精品视频| 欧美性生交大片免费看app麻豆| 色偷偷av男人的天堂| 国产在线一区观看| 久草91这里只有精品| 亚洲中文字幕久久精品一区| 久久婷婷人人澡人人爽人人爱| 麻豆精品久久久久久久99蜜桃| 中文字幕乱码中文乱码毛片 | 狠狠狠色丁香婷婷综合激情| 免费观看在线视频一区| 青青草在线这里只有精品| 国产日产综合| 国产最新地址| 国产喷白浆精品一区二区豆腐 | 传媒在线无码| 91精品蜜桃熟女一区二区| 国产欧美日韩中文久久| 中文字幕有码无码av| 日韩毛片久久91| 久久精品熟女亚洲av麻豆永永| 国产精品a免费一区久久电影| 六月婷婷国产精品综合| 婷婷开心五月综合基地| 极品尤物人妻堕落沉沦| 国产精品_国产精品_k频道| 一区二区三区不卡在线| 日本女同视频一区二区三区| 粗大的内捧猛烈进出少妇 | 大陆国产乱人伦| 国产va免费精品观看| 国产午夜亚洲精品不卡免下载| 国产成人大片在线播放| 人妻有码中文字幕| 亚洲丁香五月激情综合| 国产精品女同一区二区免| 国产欧美一区二区三区在线看| 无码不卡高清毛片免费| 国产高清不卡在线视频| 国产高清av在线播放|