2012-04-13 161 views
1

我有3個表,studentscoursesenroll以關係爲「學生課程註冊」如何在MySQL中創建關係表?

我已經創建studentssid作爲主鍵

我已經創建coursescid作爲主鍵

現在我要創建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 
); 
+0

是否使用的是RDBMS?而且,這是功課嗎? – Aaron 2012-04-13 17:55:28

+0

我在使用MySQL和eclipse。是的,這是作業! – user1291453 2012-04-13 17:58:01

回答

3

您可以指定哪些字段你在國外引用表格中,都套的關鍵字段也必須括在()中。

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

哦,你也必須在本地關鍵字段周圍有'()'。我不好,我會編輯答案。 – 2012-04-13 18:07:49

+0

你解決了我的問題:)非常感謝! – user1291453 2012-04-13 18:11:41

+0

另一個疑問,我現在已經創建了我的登記表,我的學生表有200「SID」的條目,我怎麼可以複製所有我的登記表? – user1291453 2012-04-13 18:14:43

0

簡單的建議

許多你必須做出另一個關係表,並採取兩個表的PK id和保存在這個關係表

而對於一對多的關係表一對多的關係表放在一個屬性爲一個表中的許多表的屬性的PK,總是將它們鏈接像

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 
)