2016-09-30 7 views
0

student_idのフィールドにcourseを複数挿入したいのですが、それぞれの値が','で区切られているcourse_takenカラムの下に挿入します。SQLデータベースのフィールドに複数のデータを挿入する方法はありますか?

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

可能でしょうか?

+9

これは、RDBMSを使用する方法ではありません。この経路をとっていて今では戸惑っている人々からの何千もの質問がここにあります – e4c5

+4

あなたのデータを標準化してください。各CSVコンポーネントがそれ自身の行を占めるようにします。 –

+1

なぜこれをやりたいですか?これは実用的ではなく、お勧めではありません...次に、たとえば、フィルタリングするか、インデックス化するか... – Zeina

答えて

4

course_takenは、M:Nの関係で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

1人のボリスから別の人への賢明なアドバイス:-) –

関連する問題