关系的双方必须具有相同的列数

时间:2011-10-24 14:32:36

标签: sql-server-2008 entity-relationship

我正在尝试在两个表之间创建关系。第一列有四列First(idP,state,phone,no),第二列有4列:Second(id,fname,lname,city)。但是,当我尝试在它们之间建立关系时,我得到错误“关系的双方必须具有相同的列数”。好吧,他们都有4列。

5 个答案:

答案 0 :(得分:6)

当我尝试与Management Studio创建FK关系时遇到了同样的问题,我没有在两个表中选择列,因为直到你在左表内部点击组合框才明显。它应该没有任何意义,但我是初学者。 HTH。

答案 1 :(得分:2)

重新阅读link you provided底部的黄色注释框。您获得的错误仅指密钥。密钥必须由相同数量的列组成。表格中的总列数无法匹配。

也只是一个观察。您提供的两个表似乎没有匹配的列,可以很好地创建密钥。一个主键应该在另一个中具有匹配字段(外键)。除非,你的第二张表没有它自己的主键。表2的id字段只是外键吗?

答案 2 :(得分:0)

如果您的PK表只有PK,并且您想要建立关系的表复合了一个键,那么在创建外键关系时,您需要删除将显示为的其他键。它们是复合键的一部分,所以只需保留你需要的那个作为FK。 因此,在删除后,您只能连接一个Pk和一个FK。

答案 3 :(得分:0)

表之间的关系来自一个或多个列的匹配指针,它们与两个表中的值都匹配,例如,如果您的记录包含相同的“名称”和“地址”,那么我们知道它是指同一个人。

这些表实际上有多少列以及它们是否匹配并不重要,但是在设置“关系键”列时,两个表的列数必须相同。

请参见此图以获取列关系键:

enter image description here

答案 4 :(得分:0)

解决方案/替代解决方案:尝试更改键的命名

当主键和外键的名称相似时会发生这种情况。例如,我的如下图所示:

<头>
主键 外键
personId personId

我将其稍作更改,以便它们具有相同的含义但格式不同,如下所示:

<头>
主键 外键
人员ID person_Id

它可以是这样的:

  • personID → personId
  • personID → person_Id
  • 人员 ID → 人员 ID e.t.c....