回覆列表
  • 1 # 使用者4947609680557

    必然可以,首先要搞清楚主鍵和外來鍵的定義是什麼。主鍵說白了就是就是這個table 的唯一標識,是針對單個table來說的,作為一個table可以設定多個主鍵,例如你建立了一個叫user_info的table,你可以設定一列user_id,比方說這個是身份證號,可以只設置這一個主鍵,就可以透過這一個主鍵去找到表中任何資料,唯一的。你也可以設定user_name列和sex列當主鍵,這裡只是簡單舉個例子,比方說兩個人重名但性別不同,就可以透過這“個”主鍵來確定你所要查詢的唯一資料。而外來鍵是針對多個table的定義,比方你還有一個salary的table,這裡肯定要用到user_id,或者user_name在或者department之類的資訊,這時你在建表的時候就要指定user_id是來自user_info表的user_id,這樣在你修改user_info表的同時,salary中的資訊也會隨之改變,而不用管user_id是否為其原表主鍵。所以外來鍵和主鍵其實在這種意義上來說,是沒有任何關係的。

  • 2 # 使用者5329335765427

    資料庫主鍵,指的是一個列或多列的組合,其值能唯一地標識表中的每一行,透過它可強制表的實體完整性。

    而如果我們有主鍵來約束行記錄的唯一性後,就可以利用主鍵來解決這個問題。

    主鍵的作用:

    1)保證實體的完整性;

    2)加快資料庫的操作速度。

    3) 在表中新增新記錄時,DBMS會自動檢查新記錄的主鍵值,不允許該值與其他記錄的主鍵值重複。

    4) DBMS自動按主鍵值的順序顯示錶中的記錄。如果沒有定義主鍵,則按輸入記錄的順序顯示錶中的記錄。

    擴充套件資料:

    主鍵的必要性

    主鍵的無意義性

    在開發過程中,可能會看到將一些表使用有意義的欄位表示主鍵,例如“使用者登入資訊表”將“登入名”(英文名)作為主鍵,“訂單表”中將“訂單編號”作為主鍵,如此設計主鍵一般都是沒什麼問題,因為將這些主鍵基本不具有“意義更改”的可能性。

    但是,也有一些例外的情況,例如“訂單表”需要支援需求“訂單可以作廢,並重新生成訂單,而且訂單號要保持原訂單號一致”,那將“訂單編號”作為主鍵就滿足不了要求了。因此讀者在使用具有實際意義的欄位作為主鍵時,需要考慮是否存在這種可能性。

    參考資料:

  • 中秋節和大豐收的關聯?
  • 清朝官員一到九品分別都是什麼官職?