与现有主键或UNIQUE约束不匹配

时间:2013-01-30 12:43:13

标签: sql-server-2008

我有两张桌子例如 - 个人和电子邮件

表 - 个人 专栏
Indv_ID(PK)
Email_ID

表电子邮件 专栏
Email_ID(PK)
Email_Type(PK)
EMAIL_ADDRESS

这个想法是同一个人可以有多封电子邮件。因此,如果Joe有两封电子邮件,则joes ID为100。

**TABLE - INDIVIDUALS**
Indv_ID           Email_ID
100               200

**TABLE - EMAILS**
Email_ID        Email_Type      Email_Address
200             PERSONNEL       joe.john@yahoo.com
200             WORK            joe.john@abc.com    

现在,我正试图定义这种关系。基本上,在INDIVIDUAL的EMAIL_ID列和EMAIL_ID&之间。 EMAILS中的EMAIL_TYPE。

当我尝试定义外键关系时,我收到以下错误。

“表INDIVIDUALS中的列与现有主键或UNIQUE约束不匹配”

请让我知道如何处理这个并定义这种关系。

1 个答案:

答案 0 :(得分:2)

为了实现目标,最好的设计是:

表格 - 个人栏目

Indv_ID (PK)

表格电子邮件列

Email_ID (PK)
Email_Type (PK)
Indv_ID (PK)
Email_Address

所以:

**TABLE - INDIVIDUALS**
Indv_ID           
100               

**TABLE - EMAILS**
Email_ID        Email_Type      INDV_ID      Email_Address
300             PERSONNEL       100          joe.john@yahoo.com
400             WORK            100          joe.john@abc.com    

结论:

每个人都有很多电子邮件。您可以根据业务需要更改电子邮件表的主键。但这就是想法。

另一个提示:

考虑为整数类型或char值枚举您的Email_Type列。