2016-09-30 3 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은 이어야하며 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

세이지가 한 보리스에서 다른쪽에 조언을 전합니다 :-) –

관련 문제