<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # DBMS 中的主鍵 > 原文: [https://beginnersbook.com/2015/04/primary-key-in-dbms/](https://beginnersbook.com/2015/04/primary-key-in-dbms/) **定義**:**主鍵**是表中唯一標識該表中元組(行)的一組最小屬性(列)。 ## DBMS 中的主鍵示例 讓我們舉一個例子來理解主鍵的概念。在下表中,有三個屬性:`Stu_ID`,`Stu_Name`和`Stu_Age`。在這三個屬性中,一個屬性或一組多個屬性可以是主鍵。 單個屬性`Stu_Name`不能是主鍵,因為多個學生可以擁有相同的名稱。 單個屬性`Stu_Age`不能成為主鍵,因為不止一個學生可以擁有相同的年齡。 單個屬性`Stu_Id`是主鍵,因為每個學生都有一個唯一的 ID,可以識別表中的學生記錄。 **注意:**在某些情況下,單個屬性不能唯一地標識表中的記錄,在這種情況下,我們嘗試查找可以唯一標識表中的行的一組屬性。在這個例子之后我們將看到它的例子。 **表名:`Student`** | `Stu_Id` | `Stu_Name` | `Stu_Age` | | --- | --- | --- | | 101 | Steve | 23 | | 102 | John | 24 | | 103 | Robert | 28 | | 104 | Steve | 29 | | 105 | Carl | 29 | ## 有關主鍵的注意事項 * 我們通常用下劃線表示屬性名稱(列名)。 * 對于表的每一行,主鍵的值應該是唯一的。生成鍵的列不能包含重復值。 * 標記為主鍵的屬性不允許具有空值。 * 主鍵不一定是單個屬性(列)。它可以是一組多個屬性(列)。例如`{Stu_Id, Stu_Name}`可以共同識別上表中的元組,但是我們不選擇它作為主鍵,因為單獨`Stu_Id`就足以唯一地標識表中的行而我們總是去最小的集合。話雖如此,只有當沒有可以唯一標識表中的元組的單個列時,我們才應該選擇多個列作為主鍵。 ## 主鍵的另一個示例 - 多個屬性 考慮這個表`ORDER`,該表保存了客戶購買的每日記錄。該表有三個屬性:`Customer_ID`,`Product_ID`和`Order_Quantity`。 `Customer_ID`單獨不能成為主鍵,因為單個客戶可以下多個訂單,因此多于一行擁有相同的`Customer_ID`值。正如我們在以下示例中看到的那樣,客戶 ID 1011 已經為產品(如果是 9023 和 9111)下了兩個訂單。 單獨`Product_ID`不能成為主鍵,因為不止一個客戶可以為同一產品下訂單,因此多個行具有相同的產品 ID。在下表中,客戶 ID 1011 和 1122 為同一產品(產品編號 9023)下訂單。 單獨使用`Order_Quantity`不能成為主鍵,因為不止一個客戶可以讓訂單具有相同的數量。 由于沒有一個屬性能夠成為主鍵,因此我們嘗試創建一組屬性作為主鍵。 `{Customer_ID, Product_ID}`一起可以在表中唯一地標識行,因此該集合是該表的主鍵。 **表名:`ORDER`** | `Customer_ID` | `Product_ID` | `Order_Quantity` | | --- | --- | --- | | 1011 | 9023 | 10 | | 1122 | 9023 | 15 | | 1099 | 9031 | 20 | | 1177 | 9031 | 18 | | 1011 | 9111 | 50 | **注意:**在為主鍵選擇一組屬性時,我們總是選擇具有最小屬性數的最小集合。例如,如果有兩個集合可以標識表中的行,則應選擇具有最小屬性數的集合作為主鍵。 ## 如何在 RDBMS 中定義主鍵? 在上面的示例中,我們已經有了一個包含數據的表,我們試圖了解主鍵的用途和含義,但是您應該知道通常我們在創建表時定義主鍵。我們也可以稍后定義主鍵,但在現實場景中很少發生。 假設我們要創建上面討論過的表,其中客戶 ID 和產品 ID 設置為主鍵。我們可以在 SQL 中這樣做: ``` Create table ORDER ( Customer_ID int not null, Product_ID int not null, Order_Quantity int not null, Primary key (Customer_ID, Product_ID) ) ``` 假設我們在創建表時沒有定義主鍵,那么我們可以在以后定義它: ``` ALTER TABLE ORDER ADD CONSTRAINT PK_Order PRIMARY KEY (Customer_ID, Product_ID); ``` **另一種方式:** 當我們只有一個屬性作為主鍵時,就像我們在`STUDENT`表的第一個例子中看到的那樣。我們也可以像這樣定義鍵: ``` Create table STUDENT ( Stu_Id int primary key, Stu_Name varchar(255) not null, Stu_Age int not null ) ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看