2016-09-30 71 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

从一个鲍里斯到另一个的贤者忠告:-) –

相关问题