2016-09-30 107 views
0

我想在每個student_id下的course_taken列中插入一個以上的course列,其中每個值由','分開。有沒有辦法在SQL數據庫的字段中插入多個數據?

+-------------------------------------------+ 
| student_id |   course_taken   | 
+-------------------------------------------+ 
| 133072 | CSE 1101, CSE 1102, CSE 1103 | 
+-------------------------------------------+ 

這可能嗎?

+9

這不是你應該使用RDBMS的方式。這裏有成千上萬的人提出了這樣的問題,他們現在正在徘徊 – e4c5

+4

正常化您的數據。讓每個CSV組件佔據自己的行。 –

+1

你爲什麼想這樣做?這是不實際的,不推薦...那麼你將如何過濾例如,或索引,或... – Zeina

回答

4

course_taken應該是studentcourse之間的關係。它在關係數據庫中使用單獨的表而不是內聯數據。

簡單地說:

CREATE TABLE course (
    id int NOT NULL PRIMARY KEY autoincrement, 
    course_code varchar NOT NULL 
); 
CREATE TABLE student (
    id int NOT NULL PRIMARY KEY autoincrement, 
    full_name varchar NOT NULL 
); 
CREATE TABLE course_taken (
    course_id int NOT NULL, 
    student_id int NOT NULL, 
    CONSTRAINT pk_course_taken 
     PRIMARY KEY (course_id, student_id), 
    CONSTRAINT fk_course_taken_course_id 
     FOREIGN KEY (course_id) 
     REFERENCES course (id) 
     ON DELETE CASCADE, 
    CONSTRAINT fk_course_taken_student_id 
     FOREIGN KEY (student_id) 
     REFERENCES student (id) 
     ON DELETE CASCADE 
); 

要回答你的問題,是的,你可以這樣的數據存儲內嵌在某些文本字段。但你真的不應該。

+2

可能值得給出一個表結構的簡單例子。 +1任何一種方式(不僅僅是因爲真棒名字) –

+1

從一個鮑里斯到另一個的賢者忠告:-) –

相關問題