建3张表, 系, 班级,学生系包括 系ID,系名班级包括 班级ID,班级名称,所属系系名学生包括 学生ID,学生名,所属班级。约束关系符合实际情况,我遇到的问题是, 我用系ID做主键,系名要求唯一,但不是主键,那么在班级表中可否将系名定义为外键?如果不行,如何设置check,我试着用select语句限制班级表中的系名必须存在于系表中,但是查询分析器报错说check中不能带子查询。同样学生表也遇到类似情况。

解决方案 »

  1.   

    建议你用ID做外键,包括系ID,班级ID,而不是名称,名称有可能会改的。
      

  2.   

    估计楼主问题是认为系名不会改变,所以用系名当外键查询是方便对吧?如果是用系ID,怎觉得查询时比如ID:001  002  系名容易弄混吧.
    建议用系ID,查询时,做个连接就好
      

  3.   

    听取各位意见,但是这仅仅是对于此问题我还是想弄清楚, 非主键的属性列可否作为另一个表的外键?还有查询分析器是不是不支持类似: check(id in (select id from depart)) 的语句。