2013-10-02 94 views
1

我有2個表:SQL獨特的複合外鍵

group_config (id_group_config, owner_id, name_group_config) 

group (id_group, id_group_config, name_group) - id_group_config is FK to group_config 

因此,基本上,用戶(owner_id)創建一個group_config,然後創建一組引用此group_config。相當標準,但我想要一個約束,即name_group必須是每個owner_id唯一的。

我發現這樣做的唯一方法就是複製組表上的owner_id,這可能會導致不一致。

我錯過了什麼嗎?

感謝

+0

那麼您可以創建一個由id_group_config和name_group組成的唯一索引,因爲您的owner_id與id_group_config相關聯。我假設在group_config所有者id中會出現一次?或者如果所有者ID在組配置表中出現多次,則多次,那麼在組表中有更好的擁有者ID。 – SeeSharp

回答

0

由於group_config不能存在不owner_id你應該group_config包括owner_id和group_config_id複合PK的PK。這裏需要注意參照完整性約束。當你刪除一個所有者時會發生什麼?

這會自動使組中的FK成爲該組合鍵。

要使name_group對組表中的每個所有者都是唯一的,請創建一個由列owner_id和name_group組成的唯一索引。

+0

這是有道理的!謝謝! – Lem0n