我有三个表,如下示意
学生(学号,姓名)
本科生(学号,专业)
研究生(学号,研究方向,导师)
其中学号均为主键,并且学生表的学号分别又为后两表的外键。
但是,在Sql sever中定义关系的时候,我发现这个外键关系是一个双箭头,当本科生和研究生表为空时,学生表中无法插入数据,总是提示冲突。当我把外键约束取消后,在学生和本科生表中输入相同学号的数据后再建立两者外键约束又可以了。可是,由于还有研究生表,所以,本科生表与学生表,研究生表与学生表的数据是不可能完全一样的,只能是它的子集,就没法建立外键约束了。现在的错误让我感觉它们好像是互为外键了。
请问下有人遇到过这种问题吗?这类同为主外键的问题怎么解决?

解决方案 »

  1.   

    去掉外键约束吧?
    学生(学号,姓名)如果学号作为外键学生表输入时学号时
    这个学号在
    本科生(学号,专业)
    研究生(学号,研究方向,导师)
    表中同时已存在。
      

  2.   

    不好意思
    上面是我表述错误,应为:其中学号均为主键,并且后两表学号又为学生表学号的外键。
      

  3.   

    怎么可能既是主键又是外键,这个违反了数据库设计的基本规则。
    建议新建一个中间表,保存两表之间的关系。
      

  4.   

    主键又是外键只能是一对一关系