亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

每個表都應該有主鍵嗎?

每個表都應該有主鍵嗎?

慕標5832272 2019-06-28 16:16:08
每個表都應該有主鍵嗎?我正在創建一個數據庫表,并且沒有分配給它的邏輯主鍵。所以,我想把它放在沒有主鍵的地方,但我覺得有點愧疚。我應該嗎?每個表都應該有主鍵嗎?
查看完整描述

3 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

簡短答覆:.

詳細答覆:

  • 你需要把你的桌子粘在什么東西上
  • 如果希望對表進行群集,則需要某種主鍵。
  • 如果您的表設計不需要主鍵,請重新考慮您的設計:很可能,您遺漏了一些東西。為什么要保留相同的記錄?

在MySQL中,InnoDB存儲引擎總是在沒有顯式指定的情況下創建主鍵,從而生成一個額外的列,您無法訪問它。

注意,主鍵可以是復合的。

如果您有一個多到多的鏈接表,則在鏈接所涉及的所有字段上創建主鍵。因此,您確保沒有描述一個鏈接的兩個或多個記錄。

除了邏輯一致性問題之外,大多數RDBMS引擎還將受益于將這些字段包含在唯一的索引中。

而且,由于任何主鍵都涉及創建唯一索引,所以您應該聲明它并獲得邏輯一致性和性能。

請參閱我的博客中的這篇文章,了解為什么您應該總是為唯一的數據創建一個唯一的索引:

P.S.有一些非常非常特殊情況下你不需要主鍵。

大多數情況下,它們包括日志表,這些日志表沒有任何基于性能原因的索引。


查看完整回答
反對 回復 2019-06-28
?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

總是最好有一個主鍵。這樣它就會相遇第一范式并允許您繼續沿著數據庫規范化路徑。

正如其他人所指出的,沒有主鍵是有原因的,但是如果有主鍵,大多數都不會受到傷害。


查看完整回答
反對 回復 2019-06-28
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

除了少數幾種非常罕見的情況(可能是多到多的關系表,或者臨時用于海量數據的表),我還是同意這樣的說法:

如果它沒有主鍵,它就不是一個表!


查看完整回答
反對 回復 2019-06-28
  • 3 回答
  • 0 關注
  • 1232 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號