2013-10-14 187 views
0

我有一個表A和下面的結構有重複的外鍵和無主鍵

Contract_ID  Parent_Contarct_ID  Client_ID 
-------------------------------------------------- 
CON_001   CON_001     CLNT_20001 
CON_002   CON_002     CLNT_20002 
CON_003   CON_003     CLNT_20003 
CON_004   CON_004     CLNT_20004 

這裏Contract_ID有重複,因此我無法創建主鍵或唯一鍵。

但我需要一些其他的表格來引用該contract_ID。如果我不創建外鍵,如何引用?

我正在使用mysql

+3

要麼刪除重複或創建另一個唯一列,使_that_主鍵。 – geomagas

+0

沒有主,我不能將它引用到其他表。這將違反RDMS的所有規則。你需要一些有點獨特的價值觀。 –

+1

要在其他表中引用它,它必須是此表中的主鍵。所以你必須刪除重複項或者只創建一個字段作爲主鍵。 –

回答

1

我認爲您錯過了對您的數據的完全理解。重複是什麼意思?如果你真的認爲合同編號應該是唯一的,那麼你就不會有數據問題(並且在任何軟件中都存在一個錯誤)。如果重複是好的,那是什麼意思?

當然,你可以添加一個身份,並鏈接到該但這無助於解決實際問題 - 你只是最終回到這裏問,爲什麼你得到太多的行回一個給定的合同!

所以頭號一步是瞭解你的數據。然後在必要時清潔它。只有這樣,你才能把所有的FK約束放在正確的地方,以及任何有意義的列。