【问题标题】:Unabale to add a foreign key in mysql无法在mysql中添加外键
【发布时间】:2021-11-12 19:51:35
【问题描述】:

我正在编写这些数据库表,但出现此错误:

错误代码:3734。添加外键约束失败。失踪 引用中约束“grade_ibfk_3”的“学期”列 表“注册”0.0012 秒

我不知道为什么。我查看了类似的问题,但仍然找不到我的问题的解决方案。我要创建的是成绩表。提前感谢您的帮助。

CREATE TABLE Student
(
stud_id int unsigned not null,
stud_name varchar(30) not null,
stud_phone varchar(10) not null,
stud_date_of_birth varchar(10) not null,
stud_city varchar(50) not null,
stud_adress varchar(100) not null,
stud_postcode char(4) not null,
PRIMARY KEY(stud_id) 
);

CREATE TABLE Subject
(
subj_code char(8) not null,
subj_title varchar(50) not null,
PRIMARY KEY (subj_code)
);

CREATE TABLE Enrolement
(
stud_id int unsigned not null,
subj_code char(8) not null,
semester smallint unsigned not null DEFAULT 1,
year smallint unsigned not null,
commnet varchar(500) null,
PRIMARY KEY (stud_id, subj_code ,semester, year),
FOREIGN KEY(stud_id) REFERENCES Student(stud_id),
FOREIGN KEY(subj_code) REFERENCES Subject(subj_code)
);

CREATE TABLE Grade
(
stud_id int unsigned not null,
subj_code char(8) not null unique,
semester smallint unsigned not null DEFAULT 1,
year smallint unsigned not null,
grade char(2) null,
PRIMARY KEY(stud_id, subj_code, semester, year),
FOREIGN KEY(stud_id) REFERENCES Student(stud_id),
FOREIGN KEY(subj_code) REFERENCES Subject(subj_code),
FOREIGN KEY (semester) REFERENCES Enrolement (semester),
FOREIGN KEY (year) REFERENCES Enrolement (year)
);

【问题讨论】:

  • 引用的列缺少索引。在注册中,添加index (semester)。注意:还有其他类似的问题。

标签: mysql sql database


【解决方案1】:

如下调整注册,添加缺失的索引:

CREATE TABLE Enrolement
(
stud_id int unsigned not null,
subj_code char(8) not null,
semester smallint unsigned not null DEFAULT 1,
year smallint unsigned not null,
commnet varchar(500) null,
index (semester),
index (year),
PRIMARY KEY (stud_id, subj_code ,semester, year),
FOREIGN KEY(stud_id) REFERENCES Student(stud_id),
FOREIGN KEY(subj_code) REFERENCES Subject(subj_code)
);

小提琴:

Adjusted schema

【讨论】:

    猜你喜欢
    • 2013-02-26
    • 2017-05-10
    • 2016-03-01
    • 2013-03-10
    • 2021-11-05
    相关资源
    最近更新 更多