2015-04-15 89 views
0

我決定將三個值的組合設置爲我的數據庫表的主鍵(組合鍵)。前兩列的大部分時間是唯一的。但在少數情況下,它們都是同一時間,第三列的值對於該行將始終是唯一的。問題是第三列是描述,它是用戶可以輸入的任何字符串。我知道不建議讓用戶將字符串作爲主鍵。但它可以作爲組合鍵的一部分,我真的沒有其他選擇。找到正確的主鍵

+2

我假設不可能添加一個可以充當代理主鍵的新列? – morsor

+0

如果沒有 - 也許使用時間戳作爲第三個組件比使用描述 – morsor

+0

好哦..時間戳可能是好的。我會嘗試並回覆..感謝:) –

回答

1

如果可能的話,你應該添加一個代理主鍵,這意味着一個關鍵是唯一的,沒有任何商業意義。

複合主鍵往往不如預期的'穩定',但是如果你必須使用一個,那麼使用一個或多個用戶幾乎不控制或不控制的組件列(比如created_timestamp)會更可取。

+0

添加到morsor的答案:如果您需要主鍵的唯一性,您可以創建額外的索引作爲「唯一」 –

0

添加一個名爲id的獨立列,並將其設置爲auto increment並將此列用作primary key

希望這會解決您的問題。

乾杯。