簡體   English   中英

如何在MySQL中創建關系表?

[英]How to create a relation table in MySQL?

我有3個表, studentscoursesenroll關系為“學生報名參加課程”

我用sid作為主鍵創建了students

我創建了以cid為主鍵的courses

現在我必須創建如下所示的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
);

您必須指定在外表中引用哪些字段,並且兩組關鍵字段也必須括在括號()中。

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

簡單的建議

對於多對多關系表,您必須創建另一個關系表,並獲取兩個表的PK ID並保存在此關系表中

而對於一對多關系表,在多個表的屬性中為一個表的PK添加一個屬性,並始終將它們鏈接為

我想你需要把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
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM