Sql server 2008 与现有主键或唯一约束不匹配
例如,我有两张表格——个人和电子邮件 表2-个人 列Sql server 2008 与现有主键或唯一约束不匹配,sql-server-2008,Sql Server 2008,例如,我有两张表格——个人和电子邮件 表2-个人 列 Indv_ID(主键) 电子邮件地址 表格电子邮件 列 电子邮件地址(主键) 电子邮件类型(主键) 电子邮件地址 这个想法是,同一个人可以有多封电子邮件。所以,如果乔有两封电子邮件,乔的ID是100 **TABLE - INDIVIDUALS** Indv_ID Email_ID 100 200 **TABLE - EMAILS** Email_ID Email_Type
Indv_ID(主键)
电子邮件地址 表格电子邮件 列
电子邮件地址(主键)
电子邮件类型(主键)
电子邮件地址
这个想法是,同一个人可以有多封电子邮件。所以,如果乔有两封电子邮件,乔的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
现在,我试图定义这种关系。基本上,在“个人”中的“电子邮件ID”列和电子邮件中的“电子邮件ID和电子邮件类型”之间
当我试图定义外键关系时,我得到以下错误
“表中的列与现有主键或唯一约束不匹配”
请让我知道如何处理此问题并定义此类关系。为了实现您的目标,最好的设计是: 表-个人列 Indv_ID (PK) Email_ID (PK) Email_Type (PK) Indv_ID (PK) Email_Address Indv_ID(主键) 表4列 Indv_ID (PK) Email_ID (PK) Email_Type (PK) Indv_ID (PK) Email_Address 电子邮件地址(PK) 电子邮件类型(PK) Indv_ID(主键) 电子邮件地址 因此: **表2-个人** Indv_ID 100 **表格-电邮** 电子邮件\u ID电子邮件\u类型INDV\u ID电子邮件\u地址 300人,100乔。john@yahoo.com 400工作100乔。john@abc.com 结论: 每个人都有许多电子邮件。您可以根据业务需要更改电子邮件表的主键。但这就是想法 另一个提示:
考虑为整数类型或字符值枚举电子邮件类型列。我有另一个表(例如-CONTRACTORS)将电子邮件引用到电子邮件表。如果我将个人的Indv_id表和承包商的Indv_id表保留在电子邮件表的同一列(Indv_id),我可能会遇到问题,因为个人和承包商可能会获得相同的id。请检查此情况。你能推荐一个能处理这个问题的设计吗。个人和承包商共享同一封电子邮件吗?不。个人-1有INDV_ID 100,电子邮件indv@hotmail.com. 承包商可以在承包商表中有相同的INDV_ID 100。抱歉,没有得到它…请发布您的承包商表ddl?**表-承包商**
INDV_ID
100