第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

您如何看待您的主鍵?

您如何看待您的主鍵?

眼眸繁星 2019-10-15 15:14:38
在我團(tuán)隊(duì)中一個(gè)相當(dāng)活躍的討論中,我想到了大多數(shù)人喜歡的主鍵。我們有以下幾類:Int / BigInt哪個(gè)自動(dòng)增量是足夠好的主鍵。應(yīng)該有至少3列組成的主鍵。id,GUID和人類可讀的行標(biāo)識(shí)符都應(yīng)區(qū)別對(duì)待。什么是對(duì)的PK最好的方法?這將是真棒,如果你能證明你的意見。有沒有更好的辦法,上面?編輯:任何人都具有簡(jiǎn)單的樣品/算法產(chǎn)生人可讀的標(biāo)識(shí)符為很好地進(jìn)行擴(kuò)展的行?
查看完整描述

3 回答

?
素胚勾勒不出你

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊

如果你打算做與偶爾連接的應(yīng)用程序數(shù)據(jù)庫(kù)之間的同步,那么你應(yīng)該使用的GUID為您的主鍵。它是一種用于調(diào)試的痛苦,從這種情況下,我傾向于堅(jiān)持整數(shù)是自動(dòng)增量如此分開。

自動(dòng)增量整數(shù)應(yīng)該是默認(rèn)的,并沒有使用它們應(yīng)該是合理的。


查看完整回答
反對(duì) 回復(fù) 2019-10-15
?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊

我沒有看到一個(gè)答案可以指出(我認(rèn)為)真正的基本要點(diǎn)-即,主鍵可以確保您不會(huì)在表中獲得同一真實(shí)世界實(shí)體的兩個(gè)條目(例如在數(shù)據(jù)庫(kù)中建模)。該觀察有助于確定主鍵的優(yōu)點(diǎn)和缺點(diǎn)。

例如,在(美國(guó))狀態(tài)名稱和代碼表中,名稱或代碼可以是主鍵-它們構(gòu)成兩個(gè)不同的候選鍵,并且選擇其中一個(gè)(通常是較短的-代碼)作為主鍵。首要的關(guān)鍵。在功能相關(guān)性(以及連接相關(guān)性-1NF到5NF)的理論中,關(guān)鍵的是候選鍵而不是主鍵。

作為反例,人名通常是主鍵的錯(cuò)誤選擇。有很多人以“約翰·史密斯”(John Smith)或其他類似的名字命名;即使考慮到中間名(請(qǐng)記住:并非每個(gè)人都有一個(gè)中間名,例如,我沒有),重復(fù)的空間很大。因此,人們不會(huì)將名稱用作主鍵。他們發(fā)明了諸如社會(huì)安全號(hào)(SSN)或員工號(hào)之類的人工密鑰,并使用它們來(lái)指定個(gè)人。

理想的主鍵應(yīng)簡(jiǎn)短,獨(dú)特,令人難忘且自然。在這些特征中,唯一性是強(qiáng)制性的;鑒于現(xiàn)實(shí)世界數(shù)據(jù)的限制,其他人必須靈活應(yīng)對(duì)。

因此,在確定給定表的主鍵時(shí),您必須查看該表代表什么。表中哪些集合或哪些列值集合唯一標(biāo)識(shí)表中的每一行?這些是候選鍵?,F(xiàn)在,如果每個(gè)候選鍵由4或5列組成,那么您可能會(huì)認(rèn)為這些鍵太笨拙而不能做成一個(gè)好的主鍵(主要是出于簡(jiǎn)短的考慮)。在這種情況下,您可能會(huì)引入一個(gè)替代密鑰-一個(gè)人工生成的數(shù)字。通常(但不總是),一個(gè)簡(jiǎn)單的32位整數(shù)足以替代代理密鑰。然后,您可以將此代理鍵指定為主鍵。

但是,您仍然必須確保將其他候選鍵(對(duì)于替代鍵也是候選鍵,以及所選的主鍵)都保持為唯一標(biāo)識(shí)符-通常是通過(guò)在那些列集上設(shè)置唯一約束。

有時(shí)候,人們發(fā)現(xiàn)很難識(shí)別什么使行變得獨(dú)特,但是應(yīng)該做些什么,因?yàn)閮H僅重復(fù)一條信息并不能使它變得更真實(shí)。而且,如果您不小心并且確實(shí)得到兩(或更多)行聲稱要存儲(chǔ)相同的信息,然后又需要更新該信息,則有一種危險(xiǎn)(尤其是如果您使用游標(biāo)),您只會(huì)更新一行而不是每一行,因此這些行是不同步的,沒有人知道哪一行包含正確的信息。

在某些方面,這是一個(gè)很強(qiáng)硬的觀點(diǎn)。

我在需要時(shí)使用GUID并沒有特別的問題,但是它們往往很大(如16-64字節(jié)),而且使用頻率也很高。通常,一個(gè)很好的4字節(jié)值就足夠了。由于每個(gè)索引頁(yè)的值較少,因此使用4字節(jié)值的GUID會(huì)浪費(fèi)磁盤空間,并且甚至減慢索引訪問數(shù)據(jù)的速度,因此索引將更深,必須讀取更多頁(yè)才能到達(dá)索引。信息。


查看完整回答
反對(duì) 回復(fù) 2019-10-15
?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊

這只是一個(gè)宗教問題,因?yàn)槿藗儗で笃毡榈恼_答案。您的團(tuán)隊(duì)和該SO線程都顯示出很大的分歧這一事實(shí)應(yīng)該表明,有充分的理由在不同情況下使用您描述的所有解決方案。

  • 如果表中沒有其他屬性或一組屬性適合于唯一地標(biāo)識(shí)行,則代理鍵很有用。

  • 在可能的情況下,最好使用自然鍵,以使表更易于閱讀。自然鍵還允許從屬表中的外鍵包含實(shí)際值而不是代理ID。例如,當(dāng)您需要存儲(chǔ)state(CA,TX,NY)時(shí),最好使用char(2)自然鍵而不是int。

  • 在適當(dāng)?shù)牡胤绞褂脧?fù)合主鍵。id當(dāng)存在完美的復(fù)合鍵時(shí),不要不必要地添加“ ”替代鍵(在多對(duì)多表中尤其如此)。在每個(gè)表中對(duì)三列鍵的授權(quán)都是絕對(duì)的廢話。

  • 當(dāng)您需要在多個(gè)站點(diǎn)上保留唯一性時(shí),GUID是一種解決方案。如果您需要主鍵中的值唯一但又不是有序或連續(xù)的,則它們也很方便。

  • INT vs. BIGINT:表需要主鍵的64位范圍并不常見,但是隨著64位硬件可用性的增加,它不應(yīng)該成為負(fù)擔(dān),并且可以確保您不會(huì)溢出。INT當(dāng)然較小,因此,如果空間有限,則可以帶來(lái)一點(diǎn)優(yōu)勢(shì)。


查看完整回答
反對(duì) 回復(fù) 2019-10-15
  • 3 回答
  • 0 關(guān)注
  • 656 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)