Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 与现有主键或唯一约束不匹配_Sql Server 2008 - Fatal编程技术网

Sql server 2008 与现有主键或唯一约束不匹配

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

例如,我有两张表格——个人和电子邮件

表2-个人 列
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