外键关联的问题

外键关联的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE t_teacher(
    id INT UNSIGNED PRIMARY KEY,
    tname VARCHAR(20) NOT NULL,
    course VARCHAR(10) NOT NULL
);
 
 
CREATE TABLE t_student(
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    tname char(20) NOT NULL,
    book_acction VARCHAR(15) NOT NULL UNIQUE,
    book_password VARCHAR(15) NOT NULL,
    tname VARCHAR(20) NOT NULL,
    books VARCHAR(30),
    FOREIGN KEY (tname) REFERENCES t_teacher(tname)
);

为什么这个使用外键约束关联不了呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕凡 2022-08-30 15:36:56

同学,你好!

1、外键关联的字段需要加上唯一索引UNIQUE

2、t_student中有两个tname

参考sql如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE t_teacher(
    id INT UNSIGNED PRIMARY KEY,
    tname VARCHAR(20) NOT NULL UNIQUE,
    course VARCHAR(10) NOT NULL
);
 
 
CREATE TABLE t_student(
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    tname char(20) NOT NULL,
    book_acction VARCHAR(15) NOT NULL UNIQUE,
    book_password VARCHAR(15) NOT NULL,
    tname1 VARCHAR(20) NOT NULL,
    books VARCHAR(30),
    FOREIGN KEY (tname) REFERENCES t_teacher(tname)
);

祝学习愉快~

  • 提问者 慕的地8261015 #1


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    CREATE TABLE t_teacher(
        id INT UNSIGNED PRIMARY KEY,
        tname VARCHAR(20) NOT NULL UNIQUE,
        course VARCHAR(10) NOT NULL
    );
      
      
    CREATE TABLE t_student(
        id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
        s_name char(20) NOT NULL,
        book_acction VARCHAR(15) NOT NULL UNIQUE,
        book_password VARCHAR(15) NOT NULL,
        teacher_name VARCHAR(20) NOT NULL,
        books VARCHAR(30),
        FOREIGN KEY (teacher_name) REFERENCES t_teacher(tname)
    );

    就算改了也还是提示错误呀,什么原因呀

    https://img1.sycdn.imooc.com//climg/630dffc409d4760b16650144.jpg

    2022-08-30 20:17:10
  • 好帮手慕凡 回复 提问者 慕的地8261015 #2

    同学,你好!

    经过测试以上的sql没有问题,同学可以直接在mysql后端运行(或者换一个可视化工具)或可以在创建表时指定搜索引擎为innodb,如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    CREATE TABLE t_teacher(
        id INT UNSIGNED PRIMARY KEY,
        tname VARCHAR(20) NOT NULL UNIQUE,
        course VARCHAR(10) NOT NULL
    )engine=innodb;
       
       
    CREATE TABLE t_student(
        id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
        s_name char(20) NOT NULL,
        book_acction VARCHAR(15) NOT NULL UNIQUE,
        book_password VARCHAR(15) NOT NULL,
        teacher_name VARCHAR(20) NOT NULL,
        books VARCHAR(30),
        FOREIGN KEY (teacher_name) REFERENCES t_teacher(tname)
    )engine=innodb;

    祝学习愉快~

    2022-08-31 10:58:15
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码