在之前的文章中,我介紹了關系型數據庫中的關系、基數、實體關系圖、鴉爪圖和業務規則等概念,這篇文章會繼續討論數據庫的另一個重要的概念“鍵”。理解這部分的內容后,我們對數據索引的認識會上升到一個新高度。
在解釋概念之前,讓我們先回顧一下此前的內容。
圖 “SKU”、“供應商”、“采購訂單”實體關系圖
首先我們看“SKU”和“供應商”的關系,簡單來說,這是“一對多”的關系,如果用更加嚴謹的表達,那就是“0或1個”SKU,是由”0或多個“供應商來供貨的。
這個關系的意思是SKU可能有多個供貨商,也可能暫時沒有貨源。反過來,供應商最多只能提供某一個的SKU,或是不供應。
其次是“供應商”和“采購訂單”的關系,一個供應商可以對應著“0或多個”的采購訂單,而一個采購訂單只能對著“1個,且僅有1個”的供應商。這些關系的具體內容都在前篇文章中已介紹過,不再重復。
什么是“鍵”呢?它是從英文“Keys”翻譯過來的,在數據庫中討論的鍵主要有2種,分別是主鍵(Primary Keys,縮寫PK)和外鍵(Foreign Keys,縮寫FK)。
主鍵就是主要的鍵,它是一個或多個屬性,可用于識別某個實體或表中唯一的記錄。定義很抽象,讓我們來舉個例子。
圖 “SKU”表格
在SKU實體中的屬性有件號、供應商編號、供應商名稱和配額。在表格中有4條記錄,哪個屬性可以識別出唯一的記錄呢?很顯然是件號,其他的屬性都可能會有重復的記錄,然而件號是根據一定的規則編制的,且不會重復。
主鍵是身份標識號,就像是人的身份證一樣。全中國同名同姓的人可能有很多,不能作為主鍵,身份證號碼是唯一的,它就可以是主鍵。
在數據庫中,主鍵是自動生成的號碼,按照順序,從小到大的整數,例如“26303”。每次新增一條記錄,主鍵的號碼就自動增加1位。使用整數的好處是占用存儲空間小,成本更低,而且查詢的速度也更快。
由于主鍵是唯一的,我們在嘗試添加一條新的數據之前,數據庫會檢查是否有重復的條目。因此,主鍵是一個對特定表中的每一條記錄都是唯一的值。
在“供應商”實體中,哪一個屬性是主鍵呢?可能有人會說是“供應商編號”,它看起來符合成為主鍵的條件。但是供應商表格里可能存在重復的供應商編號,所以僅憑一個屬性是不能成為主鍵,我們需要把多個屬性組合在一起后,它們才能變成唯一的值。
舉個例子,高鐵上有多個車廂,每個車廂里都有1A這個座位,我該如何對號入住呢?就需要結合車廂號和座位號,才能找到該趟車上正確的位置,例如03車1A座,這是唯一的記錄。在供應商表中,屬性“供應商編號”和“序號”組合在一起,它們構成了該實體中的主鍵,也叫做復合鍵(Composite Keys)。
圖 復合鍵
顧名思義,“外鍵”就是外來的鍵。在介紹概念之前,讀者可能已經觀察到了,有些實體的主鍵會出現在其他的實體之中,例如“SKU”中的“件號”也存在于“供應商”實體里。“件號”在前者的表格里是主鍵,那么它在其他表中的作用是什么呢?
SKU和供應商實體是一對多的關系,每個SKU可以有多個的供應商供貨,而供應商只能供應某一個特定的SKU。在這種情況下,SKU是獨立的或叫做父級實體,而供應商是相關的或叫做子級實體。
“件號”在SKU表中是主鍵,它在相關的子級表中就是外鍵。外鍵是另一個表中的主鍵,用于連接從屬關系與父級實體。
圖 主鍵和外鍵的關系
在上圖的例子中,父實體是SKU,它的主鍵是件號。子實體是供應商表,其外鍵是存儲在供應商表中的件號。這樣做是有什么意義呢?每一個SKU,例如件號是26516,蘇州X公司和常熟Y公司都可以供貨。
因此,每個供應商都有自己的供應商編號和序號,蘇州X公司的編號是1475,序號是6,常熟Y公司的編號是1369,序號是5,但他們兩家的件號的值都是26516,這是供應商表中的外鍵。
件號是SKU表的主鍵,它是一個唯一的值,可以識別SKU表中的每一行。然后在供應商表中,主鍵是供應商編號和序號,但每個供應商也有一個件號,它是一個有效的值,來自這個SKU表。
重要的一點是,供應商編號和序號是供應商的唯一標識符。件號不需要作為供應商主鍵的一部分,因為這個表已經有一個完整的唯一識別主鍵。這只是一個額外的支持信息,幫助我們在這兩個表之間建立數據關系。
總結一下,主鍵是幫助我們唯一地識別表中的每一條記錄的屬性。所以它們對每一條記錄都必須是唯一的,只要我們有了這個鍵,就能幫助我們找到一行中的所有附加信息。
外鍵是存儲在從屬實體中的屬性,它向我們展示了從屬實體中的記錄是如何與獨立實體相關的。所以,外鍵是另一個表的主鍵,而這個表是子表或從屬實體。
DeepSeek火出圈,AI和大模型將如何改變物流行業?
2831 閱讀智航飛購完成天使輪融資
2506 閱讀800美元不再免稅,T86清關作廢,跨境小包何去何從?
2030 閱讀凈利潤最高增長1210%、連虧7年、暴賺暴跌……物流企業最賺錢最虧錢的都有誰
2020 閱讀AI紅利來襲!你準備好成為第一批AI物流企業了嗎?
1751 閱讀物流職場人性真相:馬斯洛需求的顛覆與掌控
1486 閱讀供應鏈可視化:從神話到現實的轉變之路
1224 閱讀物流職場人性真相:鷹鴿博弈下的生存法則
1149 閱讀運輸管理究竟管什么?
1042 閱讀2024中國儲能電池TOP10出爐
969 閱讀