TL;DR
id列之外,使用任何其他唯一的列作為外鍵,是否有成本相關?性能/存盤?有多重要?它在行業中是否被反對?示例:這是我的示例問題的模式:
在我的模式中,有時我使用id列作為外鍵,有時使用一些其他資料列。
在我的模式中,有時我使用id列作為外鍵,有時使用其他資料列。
在vehicle_detail表中,我使用unique size列作為來自vehicle_size表的外鍵,以及unique color列作為來自vehicle_color>表的外鍵。
但是在vehicle_user中,我使用了user_identifier_id作為外鍵,它指向user_identifier表中的id主鍵列。
哪種方法是正確的呢?
另外,我沒有為garage_level、garage_spaceid、vehicle_garage_status和vehicle_parking_status表設定id列,因為它們只有一個作為主鍵的列,而且它們存盤的資料在每個表中最多只有15行,而且可能永遠不會改變。我是否應該在這些表中保留一個id列?
uj5u.com熱心網友回復:
一個外鍵必須針對一個主鍵或唯一約束。參考主鍵是正常的,因為你通常想參考另一個表中的個別行,而主鍵是一個表行的識別符號。
從技術角度來看,外鍵是否參考主鍵或另一個唯一約束并不重要,因為在PostgreSQL中,兩者都是以同樣的方式實作的,即使用唯一索引。
至于你的具體例子,讓vehicle_size的唯一size列成為外鍵的目標并沒有什么問題,盡管這引出了一個問題,為什么你不把size作為主鍵而完全省略id列。沒有必要讓每個表都有一個id列作為自動生成的數字主鍵,除了可能有ORM和其他軟體希望如此。
uj5u.com熱心網友回復:
外鍵是一個欄位或一個列,用于在兩個表之間建立聯系。外鍵是一個表中的欄位(或欄位的集合),它指的是另一個表中的主鍵。 沒有規定它應該指向一個id列,但它所指向的列應該是一個主鍵。在實際場景中,它通常指的是Id列,因為在大多數情況下它是表的主鍵。
uj5u.com熱心網友回復:
一個外鍵基本上是不同表中的一個列(它總是屬于不同的表,因為這是它的作用)。它被用來連接/獲取來自不同表中的資料。想想看,比如說學校是一個資料庫,有許多不同的表用于學生的不同方面。 例如,通過使用錄取號1234,你可以從賬戶表中得到費用,從體育表中可以得到他所從事的運動。 現在沒有規定外鍵必須是id列,你可以保留任何你想要的東西。但是,為了使用外鍵,你應該在兩個表中都有一個匹配的列,因此通常只使用id列。正如我在上面的例子中所說,體育表和賬戶表中唯一共同的東西就是入場券號碼。
admn_no | sports |
--------- ------------
| 1234 | 籃球
--------- ---------
| admn_no | fees |
--------- ---------
| 1234 | 1000000 |
--------- ---------
現在說說使用查詢
select * from accounts join sports using (admn_no)。
你將得到:
--------- ------------ >
| admn_no | fees | sports |
--------- --------- ------------
| 1234 | 1000000 | 籃球 |
--------- --------- ------------
PS:對不起,格式不好
。轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/306824.html
標籤:

