熊慧芳
摘 要:數(shù)據(jù)庫(kù)設(shè)計(jì)的好壞會(huì)直接影響到軟件研發(fā)和實(shí)際操作過(guò)程,而以主鍵為核心的部分又主導(dǎo)著數(shù)據(jù)庫(kù)的功能和運(yùn)行狀態(tài),間接發(fā)揮了后臺(tái)支撐的作用。本文深入了解了主鍵的內(nèi)容和屬性,研究主鍵設(shè)計(jì)過(guò)程中遵循的幾大原則,在此基礎(chǔ)上提出了主鍵的設(shè)計(jì)方法,提倡以編號(hào)、自動(dòng)編號(hào)、COMB、自制加一來(lái)作為主鍵,在維持關(guān)系表唯一性、關(guān)聯(lián)性的前提下開(kāi)拓?cái)?shù)據(jù)庫(kù)的穩(wěn)定性、可行性,真正意義上開(kāi)發(fā)出適合數(shù)據(jù)錄入、用戶檢索和網(wǎng)絡(luò)運(yùn)行的主鍵類型。
關(guān)鍵詞:數(shù)據(jù)庫(kù);主鍵;設(shè)計(jì)方法
科學(xué)、有效的數(shù)據(jù)庫(kù)設(shè)計(jì)對(duì)軟件研發(fā)工作起到事半功倍的作用,細(xì)化數(shù)據(jù)庫(kù)工作的每個(gè)環(huán)節(jié),其中核心部分就是主鍵設(shè)計(jì),它直接影響到數(shù)據(jù)導(dǎo)入、用戶檢索等重要問(wèn)題,只有可行性高、穩(wěn)定性強(qiáng)且可靠性大的數(shù)據(jù)庫(kù)主鍵才能建立起關(guān)系表的關(guān)聯(lián)關(guān)系,實(shí)現(xiàn)記錄和插錄的辨識(shí)性、一致性。根據(jù)主鍵設(shè)計(jì)原則來(lái)尋找和擴(kuò)展方式方法至關(guān)重要,選擇真正適合數(shù)據(jù)庫(kù)運(yùn)行的主鍵模式,提高運(yùn)行速度。
1 主鍵
主鍵具有標(biāo)識(shí)某一行的作用,從本質(zhì)來(lái)說(shuō)是一類屬性或?qū)傩越M,通常應(yīng)用在處理外鍵關(guān)聯(lián)問(wèn)題上,主鍵的嵌入使得修改和刪除記錄變得更加便捷、有效,能維持整個(gè)關(guān)系表的完好度。實(shí)際操作過(guò)程中主鍵必須是實(shí)值,且單個(gè)表對(duì)應(yīng)單個(gè)鍵和多個(gè)候選鍵。在操作要求的指導(dǎo)下主鍵可進(jìn)行刪除和設(shè)置處理,主鍵的功能還體現(xiàn)在審核數(shù)據(jù)和確保資料無(wú)恙等方面上,所以在刪除或更新數(shù)據(jù)時(shí)準(zhǔn)確率顯著提高,主鍵和外鍵構(gòu)成參照關(guān)系,還肩負(fù)著完整性約束的任務(wù),避免出現(xiàn)數(shù)據(jù)出錯(cuò)的現(xiàn)象。一般來(lái)說(shuō)主鍵所在列等同于關(guān)鍵字,實(shí)際查詢過(guò)程中訪問(wèn)速度得以顯著提高,使其快速呈現(xiàn)出有效數(shù)據(jù)。
2 主鍵的設(shè)計(jì)原則
存在主鍵即代表著整個(gè)表結(jié)構(gòu)具備完整性和可行性,將可辨別的字段放入表內(nèi)即可生成記錄。將主鍵嵌入表中可順勢(shì)形成所有記錄,在這個(gè)過(guò)程中還約束了和已有主鍵字段值一致的數(shù)據(jù),避免出現(xiàn)輸入和已存值相同的情況;只要不同表之間存在關(guān)聯(lián)關(guān)系即可引用對(duì)方記錄,利用表內(nèi)主鍵值來(lái)引索出所需數(shù)據(jù)。設(shè)計(jì)切合數(shù)據(jù)庫(kù)、關(guān)系表的主鍵至關(guān)重要,對(duì)后續(xù)運(yùn)行狀態(tài)影響巨大,在設(shè)計(jì)關(guān)系表主鍵過(guò)程中要遵循以下原則:(1)外鍵匹配相應(yīng)的關(guān)聯(lián)字段;(2)單個(gè)鍵只能存在一個(gè);(3)禁止出現(xiàn)復(fù)合鍵;(4)單個(gè)外鍵只能對(duì)應(yīng)關(guān)聯(lián)中一個(gè)鍵字段。
3 主鍵的設(shè)計(jì)方法
3.1 編號(hào)作主鍵
使用編號(hào)來(lái)設(shè)計(jì)主鍵的模式通常應(yīng)用在小項(xiàng)目低擴(kuò)展問(wèn)題上,實(shí)際業(yè)務(wù)中涉及的唯一字段就是“編號(hào)”本身,附著了主鍵功能和屬性。學(xué)校在設(shè)計(jì)學(xué)生表時(shí)擅長(zhǎng)用“學(xué)號(hào)”來(lái)替代主鍵,從方法和執(zhí)行環(huán)節(jié)上來(lái)說(shuō)都相對(duì)簡(jiǎn)單,操作數(shù)據(jù)庫(kù)間數(shù)據(jù)復(fù)制活動(dòng)中能有效的避開(kāi)鍵值矛盾區(qū)域,保證數(shù)據(jù)合并的有效性,而實(shí)際執(zhí)行過(guò)程中只需要將主鍵值段放入唯一的數(shù)據(jù)庫(kù)中即可。該種方法雖然原理清晰、操作簡(jiǎn)單,但也存在或多或少的問(wèn)題,首先在編號(hào)修改過(guò)程中要花費(fèi)大量精力來(lái)尋找相關(guān)表,增加了發(fā)生數(shù)據(jù)沖突的概率,降低了網(wǎng)絡(luò)運(yùn)行速度,而手工維護(hù)主鍵的模式繁瑣而量大,不利于關(guān)系表的正常運(yùn)行狀態(tài)。
3.2 自動(dòng)編號(hào)作主鍵
自動(dòng)編號(hào)作主鍵的第一步就是建立起有效的ID字段,它具有自動(dòng)增長(zhǎng)、快速調(diào)度的優(yōu)點(diǎn),所以無(wú)論向數(shù)據(jù)庫(kù)添加多少數(shù)據(jù)都不會(huì)受到主鍵取值活動(dòng)的影響,只要記錄插錄生成就會(huì)將信息反饋到數(shù)據(jù)庫(kù)系統(tǒng),分配出來(lái)的數(shù)值是唯一且有效的。自動(dòng)編號(hào)方法還具有方便、節(jié)省的優(yōu)點(diǎn),本身數(shù)字化類型決定了小空間、寬檢索特點(diǎn),解決了中間多環(huán)節(jié)、雜流程的問(wèn)題。唯一的不足之處體現(xiàn)在手動(dòng)插入指定ID記錄現(xiàn)象上,操作者在遇到系統(tǒng)之間集成情況時(shí)難以完成數(shù)據(jù)導(dǎo)入工作,而原系統(tǒng)的ID發(fā)生主鍵矛盾的概率劇增,同樣會(huì)帶來(lái)網(wǎng)絡(luò)的負(fù)擔(dān)甚至崩潰。運(yùn)行數(shù)據(jù)緩沖模式時(shí)也會(huì)造成一定的困擾,主鍵和外鍵的值將變得不確定。
3.3 使用“COMB(Combine)”作主鍵
“COMB”設(shè)計(jì)方法由Jimmy Nilsson提出,在《The Cost of GUIDs as Primary Keys》得以實(shí)現(xiàn)COMB數(shù)據(jù)類型。首先將組合方式來(lái)排列位于UniqueIdentifier前十位的字節(jié),而GUID生成的時(shí)間則用最后的6個(gè)字節(jié)來(lái)代替,完成UinqueIdentifier和時(shí)間信息之間的有效組合,實(shí)現(xiàn)唯一性和成效性,對(duì)使用者來(lái)說(shuō)能迅速得到索引結(jié)果。使用COMB作主鍵雖然能避免數(shù)據(jù)重復(fù)的情況,但在執(zhí)行刪除、插入等操作環(huán)節(jié)時(shí)速度有所降低。
3.4 自制加一作主鍵
自制加一作主鍵極具靈活性,首先要把主鍵類型設(shè)置為字符型,通過(guò)手動(dòng)完成表的建立工作,以表名來(lái)設(shè)為字段,保證當(dāng)前序列值滿足特別表要求。在處理表中插入值時(shí)要從多類表中選擇相應(yīng)表,往最大值內(nèi)加一后即可插入。Lock和unLock線程方式可以很好的處理數(shù)據(jù)并發(fā)的現(xiàn)象,一旦生成值符合要求就開(kāi)啟Lock模式,值出來(lái)了就轉(zhuǎn)換成unLock模式,很好的解決了表值同時(shí)生成的問(wèn)題。缺點(diǎn)就是很難在導(dǎo)前和導(dǎo)后保持一致性,在和其他系統(tǒng)集成的過(guò)程中生成方法會(huì)不斷改變,自制表的主動(dòng)性會(huì)隨之減弱。
4 結(jié)語(yǔ)
設(shè)計(jì)數(shù)據(jù)庫(kù)主鍵過(guò)程中要綜合考量各方面問(wèn)題,以數(shù)據(jù)庫(kù)規(guī)模為出發(fā)點(diǎn),分析用戶群、操作頻率、應(yīng)用方向等內(nèi)容,以設(shè)計(jì)原則為指導(dǎo),考量操作的可行性和穩(wěn)定性,以關(guān)系表、數(shù)據(jù)庫(kù)的關(guān)聯(lián)關(guān)系為契合點(diǎn),避免出現(xiàn)主鍵數(shù)值重復(fù)、沖突的現(xiàn)象,真正意義上優(yōu)化數(shù)據(jù)庫(kù)的主鍵功能。
[參考文獻(xiàn)]
[1]巫宗賓.數(shù)據(jù)庫(kù)表主鍵設(shè)計(jì)方法的探討[J].數(shù)字社區(qū)&智能家居,2006(11):25-25,50.
[2]魚(yú)功勝.關(guān)系數(shù)據(jù)庫(kù)主鍵設(shè)計(jì)的研究[J].中國(guó)高新技術(shù)企業(yè)評(píng)價(jià),2007(4):83-83,91.