<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    關系數據庫中主鍵是


    發現錯別字 1年前 提問
    回答
    1
    瀏覽
    4326
    請勿發布不友善或者負能量的內容。與人為善,比聰明更重要!
    回答數量: 1
    CISO 高級信息系統項目管理師 PMP

    關系數據庫中,主鍵是標識表中唯一的實體,可能包括 ID、序列號、用戶名等。當記錄與主表中的主記錄有關系時,主鍵可以包含在另一個表的記錄中,如果將主鍵添加到另一個表中的記錄,則稱為“外鍵”。主鍵和外鍵之間的連接創建了多個表中數據集之間的關系。

    數據庫表中主鍵的設置主要有三種方法,分別是:

    • 自增id

      這種主鍵非常常見,一般是從1開始遞增,每新增一條數據,id自增一次,當然也有自增n次的。

      優點:

      • 數據庫自動編號,速度快,而且是增量增長,聚集型主鍵按順序存放,對于檢索非常有利;

      • 占用空間小,易排序,在程序中傳遞方便。

      缺點:

      • 不容易對數據進行遷移,比如將數據遷移到其他表中的時候,很容易會導致主鍵的沖突或者關聯關系的丟失;

      • 很難進行分表和分庫,因為分表分庫的時候,多張表中的自增id會有重復的,導致主鍵不唯一。

    • uuid

      UUID 是 通用唯一識別碼(Universally Unique Identifier)的縮寫,是一種軟件建構的標準,它保證對在同一時空中的所有機器都是唯一的。

      當然uuid不是數據庫獨有的,uuid是分布式系統中的一種識別碼。

      優點:

      • 全局唯一,且具有安全性,即很難通過上一個主鍵id推斷出下一個主鍵id是多少;

      • 數據遷移的時候,主鍵id無影響,不但遷移到其他的表無影響,遷移到其他的庫也沒有影響。

      缺點:

      • 作為主鍵,UUID長度過長,主鍵索引KeyLength長度過大,影響索引查詢性能

      • InnoDB為聚集主鍵類型的引擎,數據會按照主鍵進行排序,由于UUID的無序性,且uuid 主鍵可能會引起數據位置頻繁變動,InnoDB會產生巨大的IO壓力,嚴重影響性能。

    • 業務主鍵

      在數據庫表中把具有業務邏輯含義的字段作為主鍵,比如身份證號、電話號碼等。

      優點:

      • 業務主鍵的數據是真實存在的數據,用這些數據當作主鍵可以簡化數據庫的結構

      缺點:

      • 業務主鍵可能會有變更,比如電話號碼,如果有變更,數據庫的索引結構需要重新維護,增加的數據庫性能的開銷。

    回答所涉及的環境:聯想天逸510S、Windows 10。

    1年前 / 評論
    亚洲 欧美 自拍 唯美 另类