翻譯|行業(yè)資訊|編輯:董玉霞|2022-09-14 11:53:16.667|閱讀 244 次
概述:本文介紹Navicat16.1 中選擇主鍵的相關(guān)內(nèi)容。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
本文介紹Navicat16.1 中選擇主鍵的相關(guān)內(nèi)容。
身為數(shù)據(jù)庫(kù)設(shè)計(jì)人員,你將面臨的首要決定是你的表應(yīng)使用哪種主鍵(PK)。如果你詢問(wèn)任何每天處理數(shù)據(jù)庫(kù)的人,無(wú)論是數(shù)據(jù)庫(kù)管理員、開(kāi)發(fā)人員還是測(cè)試人員,你都會(huì)得到無(wú)數(shù)的意見(jiàn)和理由。使解決問(wèn)題的障礙更加復(fù)雜的是,沒(méi)有一種萬(wàn)能的解決方案。有鑒于此,本系列將介紹支持和反對(duì)不同類型 PK 的一些原因。在所有這些原因的某處,將會(huì)引導(dǎo)你找出 PK 的最佳類型,以滿足你的組織需求。在第一部分中,我們將比較兩種基本類型的 PK:自然鍵和代理鍵。稍后,我們將討論是否使用數(shù)據(jù)庫(kù)自動(dòng)遞增功能,以及哪些數(shù)據(jù)類型(如果有)是最好的 PK。
自然鍵是由表中已存在的一個(gè)或多個(gè)列組成的(例如,它們是數(shù)據(jù)模型中實(shí)體的屬性),用于唯一標(biāo)識(shí)表中的一條記錄。由于這些列是實(shí)體的屬性,因此它們本質(zhì)上具有業(yè)務(wù)意義。以下是 Navicat Premium 16 的表設(shè)計(jì)器中有自然鍵的表示例。我們可以通過(guò) “鍵”列中的鑰匙圖標(biāo)輕松找到主鍵:
查看一下數(shù)據(jù),可以知道 productCode 是有業(yè)務(wù)義意的:
代理鍵(或合成鍵、偽鍵、實(shí)體標(biāo)識(shí)符、非事實(shí)型鍵、技術(shù)鍵等!)是由系統(tǒng)生成的(GUID、序列、唯一標(biāo)識(shí)符等)值,沒(méi)有業(yè)務(wù)意義,用于唯一標(biāo)識(shí)表中的記錄。鍵本身也可以由一列或多列(即復(fù)合鍵)組成。 我們可以看到在同一個(gè)數(shù)據(jù)庫(kù)的表中有一個(gè)代理鍵,定義了一個(gè)customerNumber 列作為表的 PK:
雖然該列不是自動(dòng)遞增,但它是一個(gè)與客戶實(shí)體無(wú)關(guān)的數(shù)字字段:
那么,為什么一個(gè)表使用自然鍵,而另一個(gè)表使用代理鍵呢?
產(chǎn)品有一個(gè)唯一的庫(kù)存編號(hào)是很常見(jiàn)的,這是一個(gè)理想的PK。而添加一個(gè)額外的數(shù)字鍵只會(huì)浪費(fèi)磁盤空間,并且?guī)缀蹩隙ㄐ枰?productCode 列上添加一個(gè)用于搜索的額外索引。但另一方面,客戶通常不會(huì)有一個(gè)唯一標(biāo)識(shí)符。若你必須在數(shù)據(jù)庫(kù)中辨識(shí)特定客戶,可能需要一個(gè)長(zhǎng)得驚人的列列表。因此,分配一個(gè)數(shù)字代理鍵來(lái)索引表中每一列通常要容易得多。
在 “選擇主鍵”的第一部分中,我們探討了自然主鍵和代理主鍵,并考慮了什么因素決定選擇哪一種。決定一開(kāi)始使用自然鍵還是代理鍵是很重要的,因?yàn)槟氵x擇哪種主鍵也將有助于解答一些后續(xù)問(wèn)題,特別是使用代理鍵。
如果你想咨詢Navicat價(jià)格或者咨詢其他版本相關(guān)信息,點(diǎn)擊查看。
想要了解更全面的數(shù)據(jù)庫(kù)管理工具的相關(guān)功能訊息,歡迎加入QQ技術(shù)群:765665608
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn