CREATE TABLE identity(id char(11) primary key,
                                             foreign key(id) references student(s_id),
                                             foreign key(id) references teacher(t_id),
                                             password char(32) not null,
                                              who char(3) not null); 这样建表的结果 提示是成功的    但是这样建表 会有问题吗?  一个键  能同时  是两个表的外健吗 ?

解决方案 »

  1.   

    一个键 能同时 是两个表的外健吗 ?可以
    但是在你的,ID对应s_id(学生ID)、t_id(教师ID)
    应该有问题
      

  2.   

    一个键 能同时 是两个表的外健吗 ?可以
    但是在你的,ID对应s_id(学生ID)、t_id(教师ID)
    应该有问题能 解释下吗  谢谢你阿
      

  3.   

    学生ID、教师ID对应不同的学生、教师,你的表中ID对应学生还是教师
      

  4.   

    你的语句语法上没有问题,但逻辑上可能有问题。
    我的 理解是你想限制这个ID必须是 学生 或者 师的 id 而不是  学生 并且 老师的 id 。 注意你用了个和字,这很容易令人以为是 并且如果没有理解或者猜错你的想法,则你不能用外键来实现这个 或者 的外键限制。 只能通过触发器来实现 ID 在学生中或者在老师中。但如果真是如此,你的表设计可以重新考虑。 常规的设计方法是设计一个人员表(ID,姓名,性别,密码。) ID为主键
    学生表(ID,)ID外键参考 人员表
    老师表(ID,)ID外键参考 人员表
      

  5.   

    谢谢 ACMAIN_CHM   你帮助过我 很多(包括之前) 但是我的 意思 是  并且意思是  这个 身份验证表的用户名   是从 学生id  &&  老师id  中 获得这样 有错吗 
      

  6.   


    那这样的话  学生表的primary key  是 ID 吗
               老师表的primary key  是 ID 吗
      

  7.   

    说实话 这个设计 确实让人有点犯难。。ID同时对应学生ID与老师ID,,,不一样无法插入的
      

  8.   

    我 现在 有新的想法  我直接就把  验证身份的 这个表  identity  设置为一个独立的表  不需要跟其他表 有关联  这么我绝对也没有问题阿  把 验证身份这一块 看成独立的  这样应该不会 冗余吧  ACMAIN_CHM
      

  9.   

    你的意思其实就是foreign key 老师或都 学生,但是你这样就是两个都要满足吧。
    所以就不要用外键,再加一列表示是老师还是学生这样
    id与你flag组合成主键。能区分了。