只要組成它的列的各個值是唯一的(如在列值中單獨評估),組合鍵就保證是唯一的,或者它是結果值(如串聯的列值)這是否構成關鍵並且必須是獨一無二的?如何評估組合鍵?
會,例如,下面的兩行導致相同的密鑰,或者將它們都被認爲是唯一的,因此允許:
PRIMARY KEY (user_id, friend_id)
|-----------|-------------|
| user_id | friend_id |
|-----------|-------------|
| 10 | 283 |
| 1028 | 3 |
|-----------|-------------|
現在,我顯然沒有數據庫專家,它實際上是在第一次我正在考慮使用組合鍵(以前從來沒有理由),所以它可能是「每個人」都知道或在文檔中很容易找到的東西,但我一直無法找到答案到它。
你希望上面的例子能夠工作(在邏輯上,爲什麼不應該呢?這些單獨的值肯定是唯一的),但是我在我繼續我的項目之前真的很想確定。
我不知道,但我認爲這是很明顯,你不能告訴複合PK是獨一無二的,如果它的列連接是獨一無二的:-),因爲這不是複合PK的概念。現在,你可能會爭辯說,一些INDEX(使查詢更快)可以使用複合PK列的連接來計算一些散列(在這種情況下,即使這個散列不是唯一的,當然,儘管好的散列函數試圖儘可能傳播其價值觀以加快搜索速度)。 – Leo
現在,如果你想加快你的複合PK檢查使用INDEXES,那麼你的關於PostgreSQL複合PK評估內部的問題可以在這裏適合:-) IMO – Leo