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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

您如何看待您的主鍵?

您如何看待您的主鍵?

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

3 回答

?
素胚勾勒不出你

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

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

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


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

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

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

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

作為反例,人名通常是主鍵的錯誤選擇。有很多人以“約翰·史密斯”(John Smith)或其他類似的名字命名;即使考慮到中間名(請記?。翰⒎敲總€人都有一個中間名,例如,我沒有),重復(fù)的空間很大。因此,人們不會將名稱用作主鍵。他們發(fā)明了諸如社會安全號(SSN)或員工號之類的人工密鑰,并使用它們來指定個人。

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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