如何在MySQL中创建关系表?

时间:2012-04-13 17:50:59

标签: mysql database

我有3个表格,studentscoursesenroll关系为“学生注册课程”

我创建了students表,其中sid为主键

我创建了courses表,其中cid为主键

现在我必须创建enroll表,我按如下方式执行,但它显示关键字references的错误,错误是什么?

create table enroll(
    grade char(2),
    sid int not null,
    cid int not null,
    primary key(sid,cid),
    foreign key cid references courses on delete cascade,
    foreign key sid references students on delete cascade
);

3 个答案:

答案 0 :(得分:3)

您必须指定您在外表中引用的字段,并且两组关键字段也必须加上()括号。

foreign key (cid) references courses (name_of_foreign_field_here) on delete cascade,
            ^   ^                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

答案 1 :(得分:0)

简单的建议

对于多对多关系表,您必须创建另一个关系表,并获取两个表的PK ID并保存在此关系表中

而对于一对多关系表,在多表的属性中为一个表的PK添加一个属性,并始终将它们链接为

答案 2 :(得分:0)

我认为你需要将cid和sid放在括号中。这是一个示例代码试一试,让我们知道您的结果。 请确保参考文献的大小和数据类型,即课程和学生的主要密钥以及注册的主要密钥是相同的。

CREATE TABLE `enroll` (
    `sid` INT(10) NOT NULL,
    `cid` INT(10) NOT NULL,
    PRIMARY KEY (`sid`, `cid`),
    INDEX `FK_enroll_course` (`cid`),
    CONSTRAINT `FK_enroll_course` FOREIGN KEY (`cid`) REFERENCES `course` (`id`) ON DELETE CASCADE,
    CONSTRAINT `FK_enroll_student` FOREIGN KEY (`sid`) REFERENCES `student` (`id`) ON DELETE CASCADE
)